I’ve decided to work through the exercises in Watts Humphrey’s A Discipline for Software Engineering, to see whether they’ll help me to be a better developer. With any luck I’ll remember to update the blog with my findings.

A Discipline for Software Engineering (let’s called it ADFSE) outlines the “Personal Software Process” or PSP. Essentially Humphrey took what was “best practice” for large software projects in 1995 and boiled it down to a process for single programmers. The book outlines a mix of practices and principles; and provides exercises to be carried out.

I first saw mention of the ADFSE in two different books by Steve McConnell, that incomparable genius of concise summary and approachable anecdotes. He mentions it both in Code Complete, 2nd Edition and in Software Estimation: Demystifying the Black Art. I figured that this was as good an endorsement as any.

In some ways the key innovation of ADFSE is to turn software process inside out. Normally software process is seen something that is imposed in a top-down from outside the developer. It is placed between developers and other developers, and between developers and their work. A lot of developers chafe at process for various reasons. For one, it can be a token of a local management-by-fiat culture. It’s also often very boring to write endless reports — coding is much more fun.

ADFSE instead works from the developer out. The developer imposes the process on their own self. This turns it from a matter of fiat and punishment into one of self-discipline — hence the book title.

I had been putting off lashing myself to the pole on this one because there’s few things more embarrassing than making a loud public noise and then not backing it up. But my decision has been given new impetus by the death of Watts Humphrey in the past few days. A remarkable pioneer of the computing world, he was a titan who served full careers in both industry and academia. He’s a great loss.

This entry was posted in Books, PSP. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *