Airplane pilots are highly educated and trained individuals. Yet they have detailed checklists for most everything they do. Why? Because human beings are imperfect and mistakes can rapidly turn fatal in a plane. So they use the checklists and in doing so make flying much safer. Hospitals have recently started doing the same. Again medical personal are highly educated, yet they are fining instituting checklists reduce complications and save lives. A lot of lives.
What I found really interesting about the medical checklists was that they tended to be short and in many cases list the basics. Quite a few have as item 1 "wash your hands." It occurred to me that if a doctor does better to be reminded of something as fundamental as washing their hands, then we developers could benefit from some basic reminders. So here at Windward we have put together the following three checklists. In the first week a couple of us have already hit cases where the reminder was needed.
We're a small company with a minimum of procedures. And the developers we have here are among the best I have worked with anywhere. When I first proposed checklists I thought I would get some pushback that they were condescending and unnecessary. Instead everyone has supported the idea and most everyone has contributed to what is in the lists, and what we removed. I think it helps that everything on these lists is something we have all forgotten at times.
So here's our lists as of today. If you have suggestions, please add a comment.
Before going home
- Enter all bugs discovered today.
- Post update on all help tickets expecting a response today.
- Make a note of what you are working on and didn't finish.
Fixing a bug
- Write unit test (it fails).
- Fix bug.
- Run unit test (it passes).
- Check in with test.
New feature
- Include unit test.
- No warnings on compile.
- Fully commented.
- Test Obfuscation (private parts obfuscated, public parts not).
- Wiki updated.
Post on more detailed programming checklists by one of my co-workers.


You may find this interesting: there's a website that now provides a service for creating shared checklists that teams can use to track the progress of completing the checklist items. It's http://www.16applications.com
Posted by: Brian Swartzfager | 07/28/2010 at 08:05 AM
I'm not sure what you mean with test Obfuscation.
I would add refactor the code to both new features and bug fixes
For new features
I would add use TDD.
For Going home
>Make a note of what you are working on and didn't finish.
I would say leave for home while you still have one test failing. (Don't check that one in)
That makes it very easy to know what to do the next day.
And it helps for sustainable pace (With the opposite have everything working, you might end up working at midnight)
y
Make a note of what you are working on and didn't finish.
Posted by: YvesHanoulle | 07/28/2010 at 08:10 AM