When I got the book my first thought was “I expected this to be bigger” It has only 180 pages. And font is quite large. And a lot of almost empty pages. But okay, never mind maybe author is very concise.
Classical view on software development comes from software engineering applied to large scientific or government project in sixties and seventies. Those methods are in turn rooted in old school management where knowledge on how to do job well lies in managers heads while workers are not paid to think but to follow an optimal way of doing things. Reality is very different though. It’s the programmers who know how to do their jobs well. And in order to succeed in software project, the key things is to find excellent programmers with reputation and get out of their way when they start doing their job.
Author emphasizes importance of programmers strive for mastery and ability to stand behind their creation and support it. Because ability to deliver well crafted software builds their reputation. In such scenario, developers choose their project carefully as wrong client is recipe for disaster.
Also there is a lot about managing craftsmen. Junior programmers are overpaid while Senior programmers are much underpaid usually. Author states, that it’s much better to have a team of 5 masters and pay them as much as 25 or even 50 juniors, because overhead of coordinating the work is dramatically lower and if each of them delivered successfully many applications before, there is a good chance it will happen again. The product will have much higher quality, will be easier (= cheaper) to maintain.
So what about those poor juniors? Well it’s okay to have few of them, but not majority of them. They should learn not only from seniors but mainly from intermediate developers. And whey the gain some experience, they should pass it along to new joiners.
Managers should get accustomed to deal with subordinates who earns much more than they do, and the dumbest thing you can do to a master programmer is to move him to management because this is the only way to ramp up his grade and payment. If your organization has such a model, it’s probably time to say god bye and find someone smarter.
In general, the book presents a strong parallel to medieval craftsmanship model. There are apprentices, who study for few years to become journeymen. The wander from master to master to learn the craft in humility, gaining reputation and crafting better and better software. Andy finally they become masters if they persist.
It’s not silly to be developer your entire career. That’s what I thought five years ago, but now I see that it may be a good path for entire life. Did you know that an average developer has now only five years of experience? Industry is in deep need of people who are doing it for ten or more years, have vast experience and are willing to share it. Yeah, new frameworks and technologies are sprouting on a daily basis, but a lot of core skills haven’t changed much. If you are ambitious and plan to be developer for longer, this book will make you feel good, that’s for sure. Even though author tends to repeat himself and charges 30 bucks for not that much of a content, I think it’s worth reading. And then dropping on your managers desk.
Currently I’m reading another, much newer book on Software Craftsmanship by Sandro Mancuso, and Pragmatic Programmer is in the queue. I guess I will share some thoughts on them in the future.