Working at Channel 4 I’ve been introduced to Agile Development, to sum it up in one sentence…

“It’s a way of working in a development team, where the specification for a project is constantly changing and the waterfall approach (you get a spec, build to it over a long period of time, get feedback and make amends) just doesn’t cut it.”

It’s a completelty different way of working, and it’s full of terms which I would say were thought up by some drunk developer, introducing words such as “brown bag”.

It seems like a great way to work, stories are created and broken down into tasks (cards) which you give an estimated time of completion for, you complete EXACTLY what’s on the card, nothing more, nothing less, mark it as done and put it up on a wall.

An iteration is a period of time, every iteration has a meeting at the beginning of it, which is used to discuss what’s going to happen in the iteration to come, everyday during the iteration there’s a scrum/stand up, which is used to discuss what each person has done yesterday, will do today and expects to do tomorrow and any problems they’ve run into that’s preventing them from doing their work.

People who go over the estimate on their card get some kind of punnishment, e.g. wearing a stupid hat, doing press ups etc.

It’s a great way to develop and kicks the crap out of the waterfall approach. It prevents developers from doing more than they’re supposed to do in the given time, and allows releases to be produced regularly.

I’m assuming that this also gives stakeholders and shareholders good piece of mind as they can see the development progress on a weekly basis and bring any issues or problems to project managers rather than seeing the final project and having to “go back to the drawing board” and making developers more stressed and the whole work environment frustrating.

Obviously like everything agile development does have it’s draw backs, but these are only encountered during the first agile project a company executes, and should be ironed out in future projects.

Some great tools I’ve found for agile development and project management on OSX are listed below.

Merlin – This is a great alternative to Microsoft Project, it’s allows exports to iCal, Billings, Web Sharing and allows other merlin users (people on your project) access to your project schedule. It will also track utilisation and finance.

Google Code – Some of the tools you will deffinetly need for Agile development will include some kind of Wiki software for documentation, CVS for allowing your project members to check in their work and for you to make releases as well as an issue tracking system to take care of bugs and enter show cards. If you’ve got the money a dedicated CVS server, Confluence and Jira will deffinetly do the trick. However, if you’re on a low budget Google Code will host your project for free, there is one catch, projects are generally public and the licences are all open source on there.

PHPUnit – For all of your backend unit testing needs this will do the trick. A critical part of Agile development is unit testing, without this, those constant changes to your bakend code from several developers will inevitably break your next release. By runnng phpunit before developers can check in code you eliminate nasty bugs arrising and time wasted attempting to hunt them down. This also enforces unit testing amoungst developers, as they will have to write/modify/run unit tests with every change in code.

QUnit – Front end developers should be no exception to unit testing, as I’ve dedicated the past 2 years to jQuery I use QUnit for my JavaScript unit testing.

Things – This is just a nicity, things is useful for keeping track of your tasks for each iteration as well as in google code, the nice thing about things is the fact that you can sync it with your iPhone, so when you’re on the road with no signal (obviously) you can still keep track of things.

I hope this advice helps you, any comments or additions are more than welcome!

Remember…

“Release Early, Release Often!”