The Software Craftsman - a short book review
Tags: softwarecraftsman
Published: 2019-08-03 07:37:11

---
title: The Software Craftsman - a short book review
published: true
description: The Software Craftsman - a short book review
tags: Software Craftsman
cover_image: https://thepracticaldev.s3.amazonaws.com/i/uaqydb2rqrer3sh3ga25.jpg

---


I use to take a book with me on holidays to read something interesting. There are some moments on my holidays when I have some time to read. Especially when I am waiting for the plane, I am in the flight time or on the beaches **under the Spanish sun**.

This holidays I took with me [The Software Craftsman](https://www.amazon.es/Software-Craftsman-Professionalism-Pragmatism-Robert/dp/0134052501) - Professionalism, Pragmatism, Pride written by [Sandro Mancuso](https://twitter.com/sandromancuso?lang=ro). I thought it would take the entire holidays to read the book. I was wrong because I read it in 4 days because it catches me. 

![](https://thepracticaldev.s3.amazonaws.com/i/fjqmjuqd6gn5x11jnmem.jpg)

From far, it is the best book I read this year - even it doesn't have one line of code. Maybe from the way it is written with short real-life stories from the author career, many am them being a "deja vu" for me. 

I also correlated this book content with this fascinating Uncle Bob Martin video presentation - [The Future of Programming](https://www.youtube.com/watch?v=ecIWPzGEbFc), which is the past and the future of programming. I also read this article at the same time and is the first time when I heard about planes crashing because of outsourcing software. The material is this [Boeing’s 737 Max Software Outsourced to $9-an-hour Engineers](https://www.bloomberg.com/news/articles/2019-06-28/boeing-s-737-max-software-outsourced-to-9-an-hour-engineers).

## **Book structure**

I will introduce the book chapters with a single main idea I liked most in each section.

The first part is a retrospective of the current state of works in the programming.

1. **Software Development in the twenty-first century** - seniority in the 90s "writing code that no one else could understand would make you a senior developer straight-away."
2. **Agile** - Agile transformation is fake because "project managers become Scrum masters. And agile became the new name of the old way of working"
3. **Software Craftsmanship** - introduction and explanations of the Software Craftsmanship manifesto
4. **The Software Craftsmanship attitude** - about keeping ourselves up to date
5. **Working software** - "working software is not enough" and why "developers are scared to touch the existing code" to add new features
6. **Heroes, Goodwill, and Professionalism** - learning how to say "no" and give alternatives (no .. but)
7. **Technical practices** - introducing XP practices
8. **The long road** - "assuming that money is off the table - knowledge workers are motivated by three things: autonomy, mastery and purpose."

The second part is about the actions we have to do to exit from the current state.

1. **Recruitment** - First three chapters are about recruiting because it is the first steps for changing something
2. **Interviewing Software Craftsmen** - "interviews are a two-way street."
3. **Interview anti-patterns** - don't make the candidate look like a fool
4. **The cost of low morale** - how we lose it and how we can recover it injecting passion
5. **Culture of learning** - we have to create a culture of learning in our company
6. **Driving technical changes** - sceptics: the uninformed, the herd, the cynic, the burned, the time-crunched, the boss, the irrational, the indifferent, the wronged, the inept, the ivory-tower architect, the insecure, the fanboy
7. **Pragmatic Craftsmanship** - '... to be able to change the code almost as quietly they change their minds'
8. **A career as a software craftsman**  - passion is the main word

## **Some random ideas**

I try to expose here what impressed me much on this book in no given order.

![](https://thepracticaldev.s3.amazonaws.com/i/uaqydb2rqrer3sh3ga25.jpg)

**Outsourcing problems**

I was impressed by the story of the author experience in Brazil working in an outsourcing company. There he was forced to slip in his car in the company parking because he didn't have enough time to commute because of the overtime. And his colleagues were coming to him in the night to ask questions about the project.

Outsourcing projects problems:

- the wrong way of thinking that **the diagrams and specs are the only important thing** because **writing code is simple, and the developers are not important** and they are like factory workers
- the wrong idea that we will stay in our cubicles, and we will produce beautiful specifications for the teams over the sees - and they will create our fantastic product

**The old way of writing code like in the '90s (still practised by many today)**

- ** cryptic writing code** similar with the algorithms we lean in school and **the IDE debugger used on day by day basis**
- the wrong practice of **writing generic code to the extreme** and never write specific code is also something that originated in the school (it's a kind of premature optimisation)
- the code can be written so unclean, so **we became afraid to make changes** even with all these extraordinary refactoring tools we have today in the IDEs
- and the things are going from wrong to worse as time is passing; **first that will leave are the good devs**; the rest will stay and will make the tragedy bigger

**Career inside companies**

- many people are entering in political games **wanting to become part of the management instead of being software craftsmen**
- that's why someone from Eastern Europe is saying that if you **are over 30, and you are a developer in the company than you are failure**
- Sometimes we have to say "no" to management; in fact, we have to give alternatives: "**no ... but**"
- the sceptic typologies of people from companies resisting to change are very well described: **the uninformed, the herd, the cynic, the burned, the time-crunched, the boss, the irrational, the indifferent, the wronged, the inept, the ivory-tower architect, the insecure, the fanboy**
- the problem of treating the **programmers as factory workers**

**Scrum and XP**

Scrum process is about "made the right software" vs XP techniques are about  "made the software right."

- a balance between the two is needed
- Scrum was not well adopted (because **managers are becoming scrum masters**, **certifications to be considered enough**, etc.)
- Scrum and Lean Startup is giving value for the business


![](https://thepracticaldev.s3.amazonaws.com/i/9mmrom7gjarucjvpgqr7.jpg)

## **Inspirational resources links**

- The future of programming - [https://www.youtube.com/watch?v=ecIWPzGEbFc](https://www.youtube.com/watch?v=ecIWPzGEbFc)
- Boeing accident - [https://www.bloomberg.com/news/articles/2019-06-28/boeing-s-737-max-software-outsourced-to-9-an-hour-engineers](https://www.bloomberg.com/news/articles/2019-06-28/boeing-s-737-max-software-outsourced-to-9-an-hour-engineers)
- Extreme Programming - [http://www.extremeprogramming.org/](http://www.extremeprogramming.org/)