Ten years ago, when I was an R&D Team Leader with VISA, we had a very structured software development process!
Everytime a new module or feature had to be developed, we would go through this same process -
Marketing would create an MRD (Marketing Requirements Document). Typically a 10-20 pages document, outlining what marketing wants to see, with a few sketches of how they would like the feature to work.
My job as the R&D Team Leader was to review the document with the marketing department's product manager and in turn create a new document titled FRS (Functional Requirement Specification). The FRS described the technical details and implementation to deliver the desired functionality.
I would meet with every single engineer, review the FRS and help them write yet another document that describes the unit requirement spec and unit testing. While development was in progress, our in-house QA (Quality Assurance) department would prepare two sets of documents for whitebox and blackbox testing.
We would release a new build every 3 months and the release process involved several other documents and steps, all carefully designed to minimize mistakes.
Everybody (aside of the QA people) hated this system. For some reason QA loved it. Said it makes their job easier. But because it took so long to get a new feature fully developed, tested and deployed, often we would find ourselves deploying a feature/functionality that is no longer required. We missed the window of opportunity, the client went away or Marketing changed their mind.
This was all back in 1997.
Today everything has changed. Time to market. Time to money. Increasing speed of change in the online world all gave birth to Web 2.0. Ajax. And a new software development methodology code named Extreme Programming.
At SoftwareProjects we no longer write 5 documents to get a new feature deployed. We no longer wait for blackbox and whitebox green-light from QA before going live. And we no longer miss the window of opportunity.
Extreme Programming is working so well for us that we came up with a shocking “5% credit for every single day we're late" penalty system when dealing with clients. Yikes! My old boss would freak out back in the days of 1997 where every single project was destined to be late and adding additional developers to an already late project just made it an even bigger disaster.
So what is Extreme Programming all about?
In short it means coding at the speed of thought. Whenever something needs to get done, we break it down to the smallest units possible (OOP), use existing objects whenever possible, quick unit test and on to the production server.
A single document describes what needs to be done and the work is broken down to several engineer, each responsible on coding and deploying their part of the project.
Initially this sounds like chaos or a recipe for disaster, however once the art of extreme programming is mastered, the end result is rapid web 2.0 applications launched within weeks as opposed to months/years.
Extreme Programming is about direct communication with the customer, it's about instant changes with instant propagation to production environment. It's about just getting things done, with no added bureaucracy and no extra steps.
For us - we live and breathe XP and we'll never go back.
Adrian Singer is an Internet Consultant with http://www.SoftwareProjects.com