Archive for the ‘agile’ category

Yes, Story Driven Development has an acronym. Oh, and here’s a definition and further reading too!

January 30th, 2009

As i was asked, i happily confirm the acronym: STDD. I’ve also provided a lovely definition by Tracy Reppert and a pdf from August 2004 for more reading:

“The basic premise is that before any code is written, a team takes a story (or rough idea of a requirement) and fleshes out that story by producing an executable ’story test’.

Opponents say that STDD is ‘cowboy coding’, or ’snake oil’, or just ‘a hindrance to real work.’ Proponents argue that STDD produces the simplest system possible and is the wave of the future, the new frontier.”

All written in 2004! I’m just happy it’s finding its feet in smaller web agencies now. Well, at least the one work for (yes, i’m kind of pushing it)!

Here’s also a lovely PDF:

http://www.industriallogic.com/papers/storytest.pdf

Now we’re rocking! DSL story driven development and testing in Java!

December 9th, 2008

At TechnoPhobia, we have an interesting challenge to implement a technology agnostic requirements capture process that (in my mind) will enable us, with very minimal effort, to repurpose these documented requirements into fully automated browser tests. I’m thinking that the process could look something like this:

  1. The project and client team write end-user functional requirements as User Stories and Scenarios
  2. The stories are stored as plain text in SVN or GIT and made immediately available to the development and test teams
  3. The development and test teams create a few executable padder files, wrapped around these stories, turning them into fully automatable browser tests
  4. The executable files are run, they read the stories and interact with the browser to determine if the stories successfully pass

Pretty cool, huh! No more massive team specific documents, just good old plain textual stories that are shared by all on the project, including the client.

Making this happen across multiple technologies

I am WAY TOO EXCITED to see an implementation in Java! This opens massive opportunity to progress with a technology agnostic approach. Now to find a suitable solution for .Net and perhaps PHP

Dave Thomas: Security as a measure of effectiveness

October 26th, 2008

I really like this approach – Assess the state of security within a development team and project as an indication of how well a project is going and how effective processes are working out.

It’s another one of those many obvious tests that we all do, but at times i’ve certainly found myself accepting insecurity within a project team as one of those things because the team are new to the pressures or software projects are always uncertain and as such stressful. With a little consideration, it’s clearly more useful to use perceptions of insecurity as more direct indications that change is required.

What might we be looking for? A few possible ideas:

  • How secure are the developers about the quality and stability of their code?
  • How secure are the developers about rolling code to the various hosting platforms?
  • How secure are team members about their relationship with others on the team?
  • How secure is the project manager about hitting the deadline?
  • How secure is the account manager about conversations with the client?
  • How secure are senior management about project and team performance?

The overall intention of improving security is to make everyone feel relaxed. Software development is meant to be fun after all!

Source: Agile Toolkit Podcast ‘No fluff just stuff 2006 tour’

synchronous scalability: the meebo.com success story

October 10th, 2008

Last Friday, i attended a presentation by the meebo.com crew where they explained their challenge and how their tackled it. I enjoyed their agile approach and the challenge they had to solve – how to make a synchronous web app that handles thousands of users without bringing down the server.

Scalability is an old story, but meebo.com’s challenge was different. They needed to scale in ways that asynchronous web apps (facebook, myspace, twitter etc.) do not.

  • They use the long-polling technique that results in the web server maintaining thousands of open connections with each user and that has significant affects on the server. 
  • They have a single gaim instant messenger process per user to allow the user to connect to MSN Chat, Google Chat, etc. and this had other effects (and significant benefits).
  • They initially used Apache and it had some affects.

It was clearly a fun challenge to have and as their user numbers ramped up, they followed a streamlined and effective approach that resulted in a lean, fit for purpose and extensible app. A great success story.

The big picture

September 18th, 2008

Software development is fun, there’s no doubt about it. All the collaboration, client interaction, protoyping, system architecture, and all that lovely code.

But, what happens when we, as developers, get too close? What happens when we get too involved in the code?

It all sounds rather obvious, but it can happen:

  • We don’t take a regular step back.
  • We lose the wider perspective.
  • We lose visibility of what ‘finished’ looks like, what parts make up the whole and how close we are.
  • We strain relationships with ambiguity, overly detailed feedback and uncertainty.

Getting this wrong can result in project failure. Getting this right takes a strong, close, confident and brutally honest relationship between all members of a project team. All members maintain a focus on the scope, plan and budget; especially the seniors. Daily catchup meetings provide a platform for team members to demonstrate their responsibly to the rest of the team and a platform for all members to consistently establish their awareness of the whole. Challenge is normal and data is king.

With all this in hand, projects flow and risk is clear and manageable. Team members are empowered and in every way are a part of the solution. Resource management is possible early and in perfect balance. Reporting and escalating is possible iteratively, keeping everyone empowered and in the loop.

How do developers get to this place? More to follow…