Saturday, 9 January 2016

The Software Craftsman - Book Review



The Software Craftsman is the first book I have read this year as part of my resolutions, and truth be told this book is the reason behind those resolutions. That's how much this book resonated with me. Sandro Mancuso's book is practically a call to arms for developers to care about their craft and plan a career around developing knowledge and skill rather than purely titles or salary increments.

Bob Martins introduction compares the book to Roberta Flack song "Killing Me Softly" which is about a singer who sings a song that stops her dead in her tracks because it's like he knows her inner most thoughts. He mentions that this book is that for programmers. I think that speaks volumes. This isn't just a collection of war stories from a grizzled experienced developer but it's the basis of a blueprint for young developers to follow and one that's spawned a movement that is still developing and growing across the world.



The book itself is split into 2 very distinct sections. One on "Attitude and Ideology" and the other on "Full Transformation" which discusses the fallacies in Job Descriptions and Interviews and the challenges of dealing with morale problems. I found myself aghast at the frankness of the author as he talks about the challenges of clock watching developers and other topics that not many people talk about but most of us deal with. Other topics which get touched on are terrible interviews, terrible job descriptions, reluctance to change, intellectual bullying or terrorism by individuals and how to counter it and many more.

It would take too long to go deep into everything this book talks about and achieves so I'll just try and hit the hight points to me and recommend that you take the time to pick it up yourself.

Caring for your work. Pragmatism.

The running theme of this book is about embracing and owning your career. It's about not thinking about the next two years but more where you think you want to develop yourself long-term and looking to realise that through challenging yourself to make progress towards that. It talks about moving jobs to round out experience in different technologies or working environments or to work with different mentors with differing styles.

The book attempts to provide a core set of values or manifesto that are not linked to working processes or technologies. Essentially to me the message is keep an open mind, learn and adapt and never tire of looking for ways to improve your ability.

Always improving yourself or Owning your Career

This talks about the ways to keep your skills sharp but also for taking the responsibility to do that in your own time. I love where I work, we have access to many resources to learn and also the ability for training and taking time out of our working days to learn new things. I cannot stress how lucky I feel to be able to do that. I also know from personal experience and also from interviewing external candidates that it's very easy to get into a very difficult situation were the work is dry and you are not encouraged to really divert your attention from the mechanical execution processes that are expected of you. If you feel like you might be in a similar place to that and want to find a way to get out of it then I honestly think this book has some direction (also check out this really nice blog post from StackExchange). This book has practical advice including book reviews and a way to understand which books are going to add the most value. It references Kata's, a new concept to me, as a way of improving or learning new languages. The overall message is strong though, if this is important to you then make time and get yourself out of your comfort zone.


Culture of Learning and Driving Technical Change

Two of the hardest things to do within an organization. Fostering a culture of learning and bringing other employees along with you is tackled with such gusto that it really does make
you believe it's possible. That's something that's very close to my heart and again the strength of conviction in this book makes you want to re-up your efforts. The important point that's
made is do it for yourself and be open to talk to people about it. You'll find like minded people will be attracted to join in. Trying to enforce adoption isn't going to work. It removes
value from the group if people are there because they have to be. Recently in work as well as us getting the technical blog up and running again there has been a big take up in
brown bag sessions and people wanting to talk at them. I had hoped to start a book club this year but instead I'm going to take the advice of this book and just talk the back legs of anyone
who gets near me about things I've read about or found interesting and encourage them.

Any Negatives?

One thing I have found difficult to ratify with myself is the description or perception of management and managers. Initially on reading the book I felt it was definitely a negative slant on it, now I think with time it seems like it's more a statement that the jobs and career paths are drastically different.
I don't think the intention was to disparage the role of a technical manager, but I'm loath to attempt to speak for the writer at this time. There are very few references to the potentially positive impacts that technical management can bring and most of the 'management' value that is spoken about I think is product management organizing a backlog for the engineers to execute against. I personally believe that some of the things being discussed around enabling growth and building welcoming cultures with a focus on learning can also be driven from a management position, but then I was always
going to say that right :). The book talks a lot about how developers can communicate with management and others to let them know the importance and value of the craftsman process and
techniques but why can technical managers not also be part of that culture and learn too.

We continually talk about the days of command and control traditional management being dead
but don't seem to value the new approaches around coaching, enablement, insulation and advocacy. Sometimes I feel like the worth of that function is under-appreciated and all that is wanted these days is the much fabled 'servitude management' and essentially for managers to just get out of the bloody way. The message and principles of this book are too important to simply reside within the development organization and to me it's similar to a single department 'doing agile' because it will be met with confusion by other stakeholders.

Summary

That said I think this is an important book for any developer especially anyone starting out on the road of their career. Sandro references some texts which he believes to transcend individual technology choices and hit to the very heart of what it is to be an excellent software developer. I think his own book belongs in that group. I really can't stress that enough I think this book is up there with "Clean Code" and others as books which I wish I had read sooner.

Things I've taken from this Book

- It inspired me to pick up the blog and set the resolutions I did
- It's caused me to have a frank self-evaluation of my abilities and my career
- I had no knowledge of software kata's before having only really knowledge of the 'kanban flavour' (This Slide Deck describes it this is an excellent link btw so if you have time well worth a visit)

No comments:

Post a Comment