A Concise Collection of Software Craftsman Ideals

A collection of wisdom I have observed after reading many books


I’m a quick reader. The Kindle Word Runner’s max words per minute is not high enough to beat my reading speed. Being the speedy, voracious reader that I am, I’ve already read eleven books about a month into my apprenticeship. Books like Clean Coder, Apprenticeship Patterns, POODR, and The Craftsman.

A significant amount of them are not truly programming related, but are on the subject of good software craftsmanship practices. With these books, their underlying philosophy was pretty much the same. They all, in one application or another, held the same ‘thread’ of wisdom with regards to being a good software craftsman and being ‘professional’ about programming. This makes sense, as they are in the Agile/Extreme Programming sphere of programming wisdom.

After reading all of these types of books all on this strain of thought and practice, I decided to write out some of the major take aways. Here is a selection of them:

  1. Test often and practice Test Driven Development. Although seemingly backwards, it improves quality by focusing on requirements and allows constant verification that the code works as it should.

  2. Work incrementally. This prevents messes from happening.

  3. Focus on the immediate requirements and needs, but also make the code flexible so that subsequent iterations and updates are easy to add. Do what you need to do, but make it good.

  4. Be assertive. The Clean Code book by Robert Martin touches on this with mock scenarios where being assertive about time and capabilities with other people can help achieve the bottom line and make the clients, or whoever you are working to please, happy. Such as finding out what is really needed and prioritizing that so you can meet the deadline.

  5. Pair Programming is a good practice. Collaboration is important. Teamwork and all that. Working together can reduce major screw ups and failures that would have resulted from only one person handling something.

  6. Being a professional is a continuous process that requires constant learning and evolution. Read articles and blogs and the like. Diversify!

So basically, the wisdom of all this good craftsmanship boils down to communication. It is essentially all communication based. Having requirements and specifications clearly detailed and understood, so priorities can be made. With those priorities, incremental programming can happen. And when you are programming you should be communicating with other human beings to make sure your logic is actually logical and you are meeting the specifications that have been agreed to.

And, you know, being a engaged programmer. But that goes without saying, I think.