Recently, I did an intensive fast track research about Agile Software Development, Agile Methods, and Agile Project Management. As a result of this research I started to draw my road map for resolution, and this will be the first edition of a series.
At the beginning I was very confused about the difference among Agile Software Development, Agile Methods, and Agile Project Management. I didn't know if they are describing the same thing or different topics. Then issues got clearer, so I decided to document this evolution and make it versioned because, sure, It'll evolve more and more, eventually. First format of this document will be as a list, of facts, short definitions, and conclusions.
- Agile Software Development, Agile SD, are ideas emerged from a community of experienced software developers. This is why the Manifesto for Agile SD starts with
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value...
- Agile SD carries new powerful and productive values for software development that can enhance the software technical quality and the final product delivery, at the same time. This is reason behind the debate about Agile Project Management. Valuable principles and practices in Agile SD share the same concepts with the traditional best practices of project management. While, of course, adopting Agile SD will affect the traditional shape of project management and I guess this is the reason for emerging what is so called Agile Project Management, which I think is just about managing an Agile software development environment. I think managing agile software projects is still an evolving issue and didn't reach a final shape. So, I'll postpone searching in Agile Project Management, for a while and continue with Agile SD.
- Agile SD is a set of several methodologies, Agile Methods, that tell new ideas and practices to build a software. Famous agile methods are Extreme Programming, XP, and Scrum. XP is what I prefer currently.
I think the starting point for all of this is to read and comprehend the
Manifesto for Agile SD. If you agreed to values and principles that Agile Alliance believes in then you can proceed to read more about Agile. For me, I printed the values & principles and took my time to read them carefully and to try to memorize basic statements.
The surprise I discovered that I was close to Agile Software Development all the time.
From technically viewpoint, I was interested in many topics like Unit Testing, Code Coverage, Test-Driven Development, Version Control Systems, Continuous Integration, Inversion of Control, Dependency Injection, Data Encapsulation Layer, or Persistence Layer, and architecture articles about building distributed multi-tiered applications, reusability, and loose coupling. These topics are aligned with many Agile SD principles:
Continuous attention to technical excellence
and good design enhances agility.
The best architectures, requirements, and designs
emerge from self-organizing teams.
From practice viewpoint, I worked for about 3 years on projects with a very changing requirements. And the response of project manager was something similar to Agile principles. But, sadly, I rate these projects as failed projects although that they produced software that is still in use and carrying out daily operations for my company. I tried to figure out why we failed although we had same the principles of Agile SD? I found the answer that Agile SD developed methods to guarantee success and complete adoption to principles. So, If you are following XP, for example, you have to plan for releases and iterations and stick to them and when you are in need to make a change, sure you will need, you have to re-plan you iterations or releases to avoid to be in mess of uncontrolled changes. Agile SD provides measures of performance, like Trend Velocity, that you have to use to assess you performance and to estimate suitable work loads. Sometimes, practiced against the Agile SD practices under the pressure of uncontrolled project environment.
I can't guarantee to be correct about all what I stated above but I think I won't be mistaken about it all. So, comments will be much helpful to continue.