Through The Prism Of Craftsmanship – The Software Craftsman Book Review
The title of the book is well chosen. The writer uses the phrase ‘Software Craftsmanship’ as a metaphor for programming on a professional basis. The book’s cover resonates what could be a hard-working, responsible person who is doing his job with passion, with a satisfied customer and quality product as the likely outcome. In short: a Craftsman. Probably a person who realizes their/his/her full potential. It is not unimaginable that there is a young apprentice as well who follows in the footsteps of its mentor and ends up performing the given tasks to the approving standard of the teacher.
The book touches on the subject of programming in all its aspects, and gives answers to pretty much any question you might have on how to improve as a programming professional.
Professionalism, technical excellence, and customer satisfaction are the main focus of Software Craftsmanship. One of its main focuses is changing the perception that software developers are like workers on a production line and that software projects can be run as if running a factory.
This book is about the pain that you and I and, indeed, all programmers experience. It is the pain of feeling trapped in an unprofession. It is the pain of wanting to do better and not knowing how.
Mancuso is very pragmatic and he talks to the reader without pardon and continuously pushes you out of your comfort zone. In the book, which consists of two parts, he unselfishly shares his experiences, mission and vision, and luckily also offers solutions to many of the questions that pop up during the read.
Being pragmatic is one of the best qualities that a software craftsman can have.
In the first part (Ideology and Attitude) Mancuso describes a history of Software development, XP, Agile and its manifesto, Software Craftsmanship community and how Manifesto for Software Craftsmanship was born. Also the writer is discussing the ‘Seniority question’ – why we are all juniors and seniors in some field. Another interesting question which is addressed in the chapter titled ‘The Software Craftsmanship Attitude’ is ‘Who owns your career?’ In my humble opinion, starters should especially pay attention to this question. Next to it, XP practices (Test first, TDD, Continuous Integration, Pair programming, Refactoring) are discussed and the values they bring to the business are further explored. Also very interesting is The Long Road in which the author discusses career goals and what keeps a professional motivated to get there.
The second part (A Full Transformation) is full of advices for both developers and companies. Through detailed analysis we get an observation of the recruitment and interview process, from both the candidates and company’s perspective.
A true Agile organization can easily provide what knowledge workers need the most to enjoy their jobs: autonomy, mastery and purpose.
Next to it, in the chapter titled ‘The Cost of Low Morale’ the writer talks why embracing Agile processes and ideology is essential for providing the right environment for improving morale, and why when it comes to developers we need more than that. Knowledge workers need passion injection through Culture of Learning, e.g. starting a Book Club, switch projects for an iteration are some of ideas. This chapter is full of ideas for both companies and developers how to create better chance of creating culture of learning.
As developers become comfortable with their tools and design decisions, they also stop looking for better ways of doing things. Boredom takes over.
In order to drive technical changes, any software craftsman needs to do is to identify the different types of skeptics she is facing and to learn how to convince them to be more open to different ideas. To do so, the writer gives an overview for these types both from a book ‘Driving Technical Change’ by Terrence Ryan, and his identifications throughout his career of a few more categories.
Only incompetent people fear losing their jobs. Incompetents and cowards prefer to play political games and hide behind someone else’s mistakes, so they can get their promotions.
Passing through the types of skeptics and the way to drive technical change, the next topic the writer covers is the myth that quality is expensive. Through detailed analysis we get to see why quality is not expensive and that lack of skills is what makes well-crafted software expensive. The real bottleneck is learning and mastering a new skill, practice, or technology. For that, any craftsman needs to master his practices and be pragmatic.
The book finishes with the chapter titled ‘A Career As a Software Craftsman’, in which the writer describes what it really means to be a craftsman. It teaches us about career progression and building our careers with one job at a time and to consider alignment between our job and career aspirations.
Reading this book made me aware that I am on the right path to become the professional I want to be. For instance, I see now more clearly the importance of an apprenticeship and changing certain attitudes that are in the way of a promising career in programming. Besides that, I became more aware that over time career aspirations change. It doesn’t matter if you are a starter in the IT business or are already a seasoned professional: in my opinion this book is a meaningful source to everyone that has an IT related profession.
Thank you, Sandro, for sharing your mission, vision and values as a Software Craftsman!
note: the quoted text is from the book