Wednesday, November 19

Scrum Development

I am in the middle of developing my first application using a formal Agile development process, known as Scrum. Please note that I said 'formal'; all of my development experience has been 'agile', but typically closer to 'chaos'. Needs would change, scope would creep (or gallop, at times), and developers would find themselves caught between management and reality.

Chaos development is not all bad. I'm probably in the minority there, but I actually enjoy moving from project to project, constantly changing focus. Well, within reason. It's very very hard for a programmer to write good code when changing direction on an hourly basis. That's just not feasible.

In our current project, an application to assist emergency managers with special needs planning and evacuation, we are up against tight budget and time constraints. Since we are trying to fit this project development into a schedule that already contains other priorities, a formalized process that lets us accuratly track progress and time spent, while minimizing overhead and wasted time was a must.

Scrum, which can be explained better by others, is a process that we are adapting for our own use. Our Center has a very small IT Staff (we are not an IT shop) so it was easy to get buy in from the people that would be participating in the Scrum process. The thing about this that appealed to me is that while formal, it's still *agile*. If you get a new requirement, you can evaluate it, put it in the product backlog and deal with it later.

The iterative approach really appealed to me as well. The process is broken in to 'sprints' where a set amount of work is scheduled, then completed during the sprint. The idea is that at the end of the sprint, you have working software. There are a lot of other details about Scrum, but that's the highlights.

The point of post is how this has worked for us (so far) in developing a ColdFusion web application.

The first lesson is simple... it's not a scrum if you don't hold the meetings. One of the core principles of Scrum is the daily Scrum Meeting, help at the same time and same location every workday. We were lax on that during our first sprint (mostly because I dislike meetings) and I think we suffered for it. We will be doing better with that in the next sprints.

Second, this type of development process lends itself to me development style very well. I've evolved over the past ten years of writing ColdFusion from a script writer to a coder who prefers to work in objects and views. I spent some time writing C# apps in .NET and that experince made me a better CF programmer, by far. This process of working on defined chunks of code in iterative pieces meshes well with the agile/Scrum approach.

Overall, I'm pretty happy with the way this method has let us manage this development project. As we approach beta and release, I'll post more.

No comments: