Thursday, June 19, 2008

Few notes about agile development.

Throughout the class there was agile methodology mentioned. For those of you that never heard of it or are not sure what it is, here are few notes that describes agile in the nutshell.

Here it is, on one image:

OK, example. Suppose you are working on a large project, normally you would sign contract, shake hands with customer and promise that you will deliver ready product within, say, 6 months. Obviously, first couple of weeks will be relaxed and get hotter towards the deadline. Agile avoids this pressure by delivering functionalities one by one. So instead of 6 months you would say: "We'll get to this point within 2 weeks, and we would like to show you it's working then". It won't be the whole product but some part of it. It will be tested and working, ready to use part. This period during which chosen functionalities will be delivered is called an Iteration.

There are many approaches on how long an Iteration should be, suggested lengths are 2-4 weeks but it may be modified if it suits your team and your project well. Iteration length can be flexible but it's not recommended as it takes all the healthy pressure away. You'd say: 'Oh, there's no need for hurry, I just need to finish this task but there's no deadline for it, I just need to do it.'

Thanks to iterations your client sees his product being constructed just like you would see your house getting done in opposite to ordering flask of perfumes from some internet shop. Believe me, even if client gave you the most detailed specification you've ever seen his vision mismatches yours.

This is only an top of iceberg introduction to agile if you want some more go and see:
agilemanifesto.org
http://en.wikipedia.org/wiki/Agile_software_development
..and you'll probably get going from there.

If I have some time I will post some more on scrum which is part of agile, I will also give you some more description of benefits that programmers get of it.

Cheers!

No comments: