July 28, 2005

Hitting the High Notes

Joel has posted another nice article on why retaining the best programmers is the root of all software engineering.

Of course, he is absolutely right. Building software is, above all else, a creative endeavor. It is not a science - it is a squishy, messy, hard-to-get-a-handle on field. Too many managers are inclined to treat it as an "assembly line" process. It is not.

Writing software has more similarities to music, art, or writing.

Like any creative field, there is a huge difference between the "merely good" and the "very very best" programmers. And even among the very very best, there is a huge gap between the mere superstars and the trully uniquely stellar.

Both Google and Microsoft understand Joel's point well, I think. And the continuing fracas over Kai-Fu is good evidence of this. It is worth fighting over, compensating, and coddling the very best.

But there is another insight that is often missed...

Coddling is Just an Outward Sign

Of course, the best way to retain the best staff is to make them happy. But keeping a happy staff is something that runs deeper than mere retention.

Journalists like to write about the colorful kinds of "staff coddling" that show up everywhere at Google. Not only does Google Headquarters employ a private chef to serve up free gourmet food every day, but the remote engineering sites (such as the one I visit most often, Kirkland) all have their own private chefs too. And the food is quite good.

And staff masseuses [did I spell that right?] - it's true, they're there at all the sites, too. And the Gym, the pools, the free gourmet soda pop, the chips and fruit and candy bars. The dog-friendly policies, the childcare center, the ski trip, and the parties. It's all true. But all these are just the outward signs. They are symptoms of a deeper attitude.

The thing about working at Google is you know that everybody there understands that building software is a creative endeavor. The team will put their imprint on the product - it is not an accident when they do. It is their job.

Team On A Chip

If you are doing creative work, it means you need to pay attention to two things:

1. You want to keep the very best programmers.
2. You want your programmers to do their very best work.

I think it is normal for management to understand #1. I think the thing that really sets Google apart is that they realize that making programmers happy is also about keeping them "at their best"!

When I was studying CPU architecture in graduate school, a colleague and friend of mine (Ben Hao) who had worked on chip design at Sun taught me a bit of wisdom more important than anything about ALUs or caches or clock lines:

"You can see the corporate org chart on the chip"

And it was literally true. If you peeled back the plastic and took a look at the actual patterns of transistors on a CPU, you could see the structure of the group that built it. Little teams corresponded to little boxes on the chip, big teams big ones.

Teams with a common manager had boxes on the chip that were closer together. If, say, the team that did the floating point unit was organizationally nearby the team that did, say, the 3d graphics pipeline, then those two boxes on the chip that they had built would be near each other, with lots of little wires going between them. If there were two teams that never talked to each other in the company, the little boxes on the chip would be far apart.

And, remarkably, well-run teams had nice neat-looking boxes. And badly-run teams had boxes that looked a little messier somehow. You could tell, without looking at every little transistor.

Your team becomes the product. Beauty, warts, and all.

Getting Rid of the Burrs

I think this extends to software in a broader way.

Happy software only comes from a happy team

If you have a disfunctional team with lots of discord and unhappiness, then lots of things will get left undone, and your programmers will not be wedded to the success of the product.

I noticed, in the game Heroscape, which comes with a dozen or so little plastic "army" figurines, that all the mold-injected seams and burrs had been carefully placed along the figures where they would be invisible or meld into the design of the figure itself - a shirt-sleeve seam, or the edge of a jacket, or the tip of a rifle. This kind of attention to detail is a sign of a happy designer.

Your test metrics may not tell you, but customers will be able to tell. Even if they cannot describe what they are seeing, they can feel and see any exposed seams and burrs in your product. There is a difference between an engineer who loves their work, and has done everything necessary to hide those little burrs away, and an engineer who doesn't care so much, and lets the burrs show.

No executive is going to stop a product from shipping because of little burrs. But it is the little burrs that make a difference. If it's something that is hard to measure and something that you cannot manage, then how do you achieve these "burr-hiding" intangibles?

There is really only one way. Hire the best. And make them happy. You need an attention on keeping your programmers happy, not just to retain them on the staff. But to keep them producing their best work.

Posted by David at July 28, 2005 11:35 AM
Post a comment

Remember personal info?