The first chapter of the book Apprenticeship Patterns describes what the authors call The first chapter of the book Apprenticeship Patterns describes what the authors call “Software Craftsmanship”. While the general definition came from medieval times and relates to guilds and master/apprentice relationships, the definition used by the authors comes from a combination of these medieval principals and Peter McBreen. Peter’s definition starts from craftsmanship being opposite of the engineering and scientific approach to computer science. This view of craftsmanship being alternative to program, however the authors hold the opinion that both approaches are part of an ideal software dev landscape. I found this hard to wrap my head around the first go around but I hope that as I continue here readers may also get a better grasp of this “craftsmanship” mindset.
First is the manifesto. Each idea is taken from one of many other highly skilled people who were interviewed by the authors.
- Have a growth mindset – there is always a better solution and the only way to get there is to be prepared and work for it. Chiefly, this effort is what makes you smart and talented. I love this idea as it’s a brighter outlook on the world compared to the “talent is born and failure proves lack of talent” crowd.
- Accept that you will lack something and pursue the solution – this one is hard for me personally. I tend not to admit my lacking at first or second blush. However, once it is clear that I am ill-informed/confused/missing something I will search relentlessly until I find the proof I am wrong/the reason my thought process was flawed because going through life without a proper set of logic to solve problems will lead to a tough time. As such, I strongly agree with this tenet.
- Favor pragmatism over dogmatism – this is a doozy for me because I really love perfectionism. To be clear, this tenet is 100% true, no doubt in my mind. However, knowing that there exists a better way to do something is always hard to square with pragmatism. I know my code hits the necessary parameters, but it doesn’t do everything as efficiently as possible and that makes me want to tweak my code in so many ways.
- Favor sharing information over hoarding – I understand this idea and mostly agree to this ideal. I still think there is room for some level of hoarding in some cases, not everyone is a saint and some tools are definitely dangerous in the wrong scenarios.
- You must be willing to try and fail – I find this to be easy to follow, maybe because it ties in with a lack of knowledge on my part meaning most projects I work on are about techniques and knowledge I do not have.
I will continue posting more about this chapter later this week as there are a few more tenets to dissect and they are an interesting perusal. This first chapter is truly an interesting read and I hope these ideals don’t find themselves turned into corporate rule sets.
From the blog Coder's First Steps by amoulton2 and used with permission of the author. All other rights reserved by the author.