If you follow the likes of Uncle Bob Martin I’m sure you will have heard of putting craftsmanship into your coding. The book Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin) is an excellent place to start if you haven’t. I’m not the first and definitely not the last to compare coding to craftsmen in today’s world and in previous times in history.
So what makes a craftsman? Or craftsperson? Well in my mind a craftsperson is someone who not only creates something from nothing from materials of their choice, but usually puts a part of themselves into what they make. A good craftsperson takes the time and effort to make something of quality which is worthwhile to have and which will still function way after the crafted item has been made. Good craftsmanship is synonymous with quality products.
So what has this got to do with writing code?
Well I think we are at a point in time where people who write software are much like the craftspeople and artisans in times past. Software is not yet something that can be easily manufactured on an assembly line. Some type of software products have been commoditised but the process is not yet mature enough for it to be turned into an assembly line activity.
It’s a bit like blacksmiths used to be. Nearly every village had one, some of their work was mundane but sometimes they were asked to create works of greater sophistication. The concept also fits nicely with having apprentice, journeymen and master smiths. If you follow the craftsmanship movement within software you will know that in some software shops these ideas are taking hold.
If you take a look at the wikipedia entry for metalsmith you will see there are smiths of all descriptions including wordsmith and tunesmith. So I like the idea that we should call ourselves codesmiths. To me it implies a certain level of craftsmanship and implies a progression from apprentice to master.
If you are interested in the software craftsmanship movement then why not check out the site
So are you a codesmith? I would love to know if you like the idea or not so why not leave a comment.