The "Real" Software Development Lifecycle...

If you ask a student out of college or technical school how software is developed, he'll say the software development lifecycle (SDLC) is something like:

  1. Gather requirements for a new system

  2. Design the new system's inputs, outputs, screens, etc.

  3. Develop the system

  4. Test the system

  5. Deliver the system to the customer

  6. Maintain the system

If you're *really lucky* he's read enough slashdot to know, it's more of a spiral or iterative approach--less initial work, more testing, earlier customer involvement.

The more I'm exposed to real software, I'm convinced it's closer to.

  1. Some nerd decided he needs a cool, fast widget to do 'X'. He just wants to make his job easier. He codes it up after-hours, fueled by cheetos and Mountain Dew

  2. He shows it to somebody in his cube. Immediately, that shameless self-promoter decides it's the second coming of VisiCalc

  3. The company makes a multi-language version of his Widget and starts selling it

  4. Version 2.0 comes out, adds 20 new features, 40 annoying bugs.

  5. Three years pass. The original nerd left the company, no one can decipher his pointer-arithmetic, bitwise-shift-left code, so they just wrap it in a DLL and hope to God it doesn't break. ( Or they choose to put the low man on the totem pole in charge of that code. Choose your poison ).

  6. After 5 years, the original widget is now a Java app that's a 250MB download, translated into 13 languages. It's slow and crashes randomly, and customers dislike it, but they depend on it. Managers present impressive PowerPoint slides on how they should SAVE THE WIDGET by "focusing on its core competency".

  7. Somewhere else, disgusted with Widget 10.5.1, a nerd writes a cool fast Gadget to do 'X'. He just wants to make his job easier. He codes it up...

  8. Lather, rinse, repeat.

Popular posts from this blog


On "Avengers: Infitnity War"

Closing, 2017