The C Word

Uncle Bob Martin says programmer certification is bad. He supposes that if you start giving out certifications to people that someone will assume those certifications mean something. They will start hiring certified people preferentially, or stop hiring non-certified people entirely. This would be bad, because certification is almost certainly a poor measure of whether you

Java Developer’s Rules of Design

I posted this to the LAJUG mailing list, then later to the Extreme Programming Yahoo! group. Some folks really liked it, so I’m putting it up here for posterity. The Java Programmer’s Rules of Design are, in order of priority: Should not have any tests, because I wrote it so it works. Should clearly express

Much Ado About Certification

A few of you may know that the first ever Certified Scrum Developer course taught by Ron Jeffries and Chet Hendrickson was held the first week of May in Cleveland, OH. A couple of those may also know that I attended along with a handful of well respected coaches (George Dinwiddie, John Kern, Jeff “Cheezy”

Essential Complexity Part 2

It has been a while since I wrote the first part of this post. Sorry for the delay. In the first part of my post about essential complexity I said that there would be a second part where I explained the approach to managing complexity on Agile teams. However, I also gave the answer in

Agile and Architecture

This is an important topic, and I intend to approach it un-gently. Apologies in advance… Software Architecture, at its worst, is the art of creating solutions looking for problems. Unfortunately, it has the ability to achieve its worst if we are not diligent. There is not, has never been, and will never be a role

New Years Resolution

In 1996 a friend of mine asked me what my New Years Resolution was. I didn’t have one, so I thought one up on the spot, “My resolution is to quit making New Years Resolutions.” I have stuck with it for fourteen years now. The idea behind New Years Resolutions is great. We should reflect

Essential Complexity – Part One

In his 1986 paper, No Silver Bullet — Essence and Accidents of Software Engineering, Fred Brooks describes the difference between essential and accidental complexity in software systems. Software is complex because what the users need to do is complex. Such complexity cannot be eliminated, but it can be managed, and most of what we do

Respect your code like a SISTER

We already know that good unit tests are on FIRE. Here are some characteristics of good code: Small – Classes contain only a few methods. Methods are no more than a few lines. Together they fit nicely on your screen without scrolling. Intentional – Every bit of your code reveals precisely why it is there


Agile teams have no leaders, because everyone on an Agile team is a leader. However, leadership is still important. So, how does leadership work if everyone is a leader? Here are my rules: 1) If something needs to be done, do it. Do it very, very well. 2) Never do anything by yourself. Always ask