This version of the coding / testing / release cycle of software development is one derived from personal experience, other developers horror stories, and a need to laugh at development pitfalls. As with any contract, please be sure to read all the fine print.

The blue section focuses on the new code, which is the interesting part. Purple focuses on regression testing, which is usually really really boring, and so a lot of people feel is optional. Any red path means more work for you, so avoid that at all costs.

  1. Create new code and corresponding unit tests / update old code and old unit tests.
    1. Sometimes the code just needs to get out; go to step 8.
    2. Just had an idea? Go ahead and add it in! No one will really mind!
  2. If you write your code right, you really don't need unit tests.
  3. Install code into test environment. This lets you show off your awesome skills.
  4. Test functionality of the new code:
    1. If QA complains enough, you should probably change something.
    2. They might complain, but probably not enough. Stand strong!
  5. Perform regression tests:
    1. If the regression tests pass, continue to step 8.
    2. If you accidentally run all the regression tests, and they actually pass, go to step 7.
    3. If not all the tests pass, but no one else sees this, then nothing really failed! Go to step 8.
    4. If not all the tests pass, and someone does see, go to step 6.
  6. Refactor the regression tests.
    1. If your new units tests started failing, re-read step 2 then go to step 3.
    2. If old unit tests are the ones failing, that is not your fault. And if you comment out those unit tests, then they aren't failing anymore, are they?
    3. Better go to step step 3 to make the person from step 5d happy.
  7. Tell everyone how cool your code is.
  8. Check in the code. you're done, start working on the next feature.
Making docs match the desgin was never specified.