Some thoughts on why the agile methodologies work:
– they keep you focused on the customer. The most important thing is to satisfy the customer. The project itself has a simple goal : bring business value to the customer.
– welcome changing requirements. There are 3 sure things in life : death, taxes and changing software requirements. Sooner or later it would happen…so why fight it ? After all the purpose is to bring business value to the customer. Welcome changes.
– shared code ownership. In most of the “traditional” software development methodologies, the team members end up “owning” different parts of the source code. The changes to these parts, by others than the author, are often discouraged. No so with agile….any member has the right to change the code. There is also a psychological issue with this : if a developer ends up “owning” a part to the source code , he will work only on that part and loose touch with the rest of the project. If some other part of the project will not work as expected he will think: screw it…my part works just fine. Of course the customer doesn’t care if some parts work….he just wants a working solution. So through shared code ownership the agile methodologies encourage the developers to keep on eye on what really matters : a solution which works.
– working together. The customer and the development team must work together to produce results. Face to face conversations is the most effective method of conveying information between the development team and the customer. And the primary measure of progress is working software. So…talk to the customer…..implements its requirements/changes…..show the software and repeat until the customer is satisfied with the result.
– the software should be build by motivated individuals in their environment and with the support they need. This should not come as a surprise to anyone but motivated individuals is the first requirement of a successful software projects. This is not necessary related to agile methodologies because i personally think that motivated individuals will succeed in delivering working, solid software no matter of which methodology they use. But with agile they will obtain faster results. They key point is that the management should be trust the people to get the job done and offer them the environment and support they need.
– deliver working software frequently. This is tied with working together…..deliver frequent working software and get the customer input. Rinse and repeat until the customer is happy.
– continuous integration. With continuous integration you are in control. Whatever you do breaks or advances the project. You get instant feedback on your changes and act accordingly. It helps to think of continuous integration and TDD as extensions of the compiler.
– Test Driven Development (TDD).Not much to say here….TDD simply changes the way in which we develop software and this is a “must use” technique.
That’s it so far. I’m not trying to suggest that agile methodologies should be used in any kind of software project, but i am suggesting to everyone to try agile methodologies in their projects.
Now playing: Blind Guardian - Into the Storm