Agile or Not?
It’s been asked by many technology managers and developers if agile methodology is the way to go. There are plenty of technologists out there who say “yes” and plenty of others who say “no”.
I’ve been developing and managing custom solutions for over 18 years. There was no agile methodology when I started in this field. There was SDLC (Software Development Life Cycle), which required a very well defined approach of going from requirements to architecture/design to development to testing and finally production rollout. Projects took 6, 12 and 18 months before being rolled out to production. SDLC is still being used by most development teams today.
Agile is something completely different. I am not going to define in length what agile methodology is – there is plenty of websites and books on the subject. The gist of it is - working very closely with the users, developing and delivering small pieces of the application on a frequent, iterative basis, doing a lot of testing and continuously integrating the code.
Then, there is a third approach – the one I like and use for most of my projects. It’s a mix of SDLC and Agile. Working with many companies as a consultant, I realized that pure agile methodology will not work due to one simple reason – not having detailed requirements specified and approved by the user before starting the development will create many problems. So I believe in gathering detailed requirements before jumping into iterative development and frequent deliverables. That said, once the requirements are approved by the user, the design and development can actually be done using agile methodology. It is actually beneficial to develop various components and release them to production before the whole project is completed. This will provide users with certain level of comfort that things are getting done and it will provide development team with constant feedback from users. Problems discovered early in the process can be fixed much easier than those discovered after 6 months of development.
So, be pragmatic and combine the best practices and technologies. What is most important is delivering working solutions.

