
There are many ways that we show our creativity on a daily basis. That is, by and large, why the company is so successful today. We are a team of people who use individual expertise to work together and Innovate. And that’s a great thing – except in the Software group.
That’s not entirely true. We need to express creativity in solving problems and meeting requirements; in developing novel algorithms and approaches. Software engineers need to be creative and think about the problems and solutions in many different ways.
That doesn’t mean creativity in the source code, however. Our goal is to have the most bland, uniform source code we can. No novel ways of formatting the C++ should be created; no cleverness in using the language should be innovated. Our goal is to have my source code indistinguishable from any other member of the group’s. The only way to know who wrote it should be in the header. That would be Zen. (That, and a bucket full of snow and Pabst Blue Ribbon, but I’ll settle for the source code uniformity.)
Computers don’t understand source code. It’s compiled down to machine language anyway which are all 1′s and 0′s (and to be precise, even these are abstractions!) Source code is for people to read and understand. Style has no place, other than it needs to be consistent. Variable names shouldn’t confuse; they should instruct.
In this business, our source code always goes to the client in the end, who is going to have to live with it (hopefully forever!) and maintain it. If it works, we have done a portion of our job. If the client can easily read, understand, and modify as needed, we did the part of our job which shows the true skill. It’s easy to make the machine do what you want it to. The true craftsman can make the maintenance and understanding a delightful experience.