Agile. Waterfall. CMM. Spiral. Test Driven. Blah, blah, blah. I believe I have researched a dozen software development methodology and have tried many of them in practice. Unfortunately I have yet to find one that works. One that combines rapid development with high quality and delivers projects within their targeted timeframes.
I suppose if it was easy, then there wouldn't be entire shelves at Barnes and Noble devoted to it. It it was easy, then everyone would deliver with great success. I'm becoming convinced that no single methodology is portable through development shops. And that successful SDLC (System Development Life Cycle) is a painful trial-and-error process that adopts aspects of several disciplines.
I've tried the standard waterfall. It generally has two problems. First, it is nearly impossible to completely define all the functions of a system prior to providing any code. And second it is very difficult to prevent scope creep.
In the first case, a business analyst has to be imaginative enough to define all aspects of the system. Then she must be able to accurately write these into requirements that are understandable by developers. I've never seen this done well. When overdone, the volumes of requirements become impossible of shift through, when underdone entire aspects of logic are left undocumented.
Waterfall project tend to be very long, running months or even years. This causes the inevitable panic when business analysts realize a pet feature is not included. The panic often results in scope creep, which in turn causes the project to run longer.
We've tried incremental methodologies, such as Agile too. Ok, you say, Agile isn't a methodology, but a class of methodologies. But does anyone really implement strict Extreme or Scrum or EVO?
Regardless, Agile methods have their built-in weakness too. For instance, how do you know when you are done? Or, as in the case with my current projects, resources get diverted into new critical projects, leaving others unfinished.
When it's all said and done, some hybrid method seems to work best. Concrete, but overlapping, phases are necessary for project management. Within each phase, iterative cycles with feedback have great benefit. Who knows, maybe I'll develop my own methodology, and then write a book (that no one will read).
Lessons learned from twentyfive years building software, recruiting teams, and managing growing firms.
Subscribe to:
Post Comments (Atom)
You might also like ...
-
I remember almost nothing about the morning of September 11th. It was my son's first day of school, but I don't recall thinking abo...
-
Apparently Johns Hopkins research doctors have successfully removed a kidney through, um, the donor's oraffice. It's called "tr...
-
I am normally a proponent, and sometimes early adopter, of new technologies including Web Sites and Web Services. I'm also a believer in...
How about SCRUM? It's kinda neat!
ReplyDeleteYes, SCRUM, Extreme Programming, RUP. Agile methods. They are all cool and in the right environment are probably successful. We've adopted the SCRUM meeting, and it works pretty well.
ReplyDelete