Monday, June 7, 2010

Your code doesn't care what day it released on. If there is an extended outage or degradation as a result of a deployment, the code is always in the wrong place at the wrong time. Here are all the wrong days to deploy a broken release:

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

Sunday

and the times:

One O'Clock

Two O'Clock

...

and obviously a bunch of holidays and unrelated business synchronizing events (black friday, sales deadlines, etc) that you also shouldn't deploy on.

However, if you really believe this, you should stop writing, managing or using software NOW! Unfortunately, you will deploy broken code, because:

Thursday, June 3, 2010

This post is a reminder to myself. I wasted a lot of my personal time and time from members of my team by not following, a simple, repeatable debugging process. The below process won't work 100% of the time, but when it does it will save you hours, stomach lining and and leave you extra gas in the tank for handling problems that are actually hard to replicate and debug.

Verify the input and output creating the defect.

Replicate the defect in your development environment.

Write a unit test that replicates the defect using the same input as the defect and desired output. (You may want to extend this to other permutations of the defect as well.)

Verify the unit test breaks.

Fix the code.

Verify the unit test passes.

Verify that the defect is resolved in your local development environment.

Release to next environment (Prod/QA)

Verify that the defect is resolved in the next environment.

Repeat until defect is fixed for all users.

Do not try to skip steps in the process. You will miss something important. You will waste yours or other people's time. It's not worth it.