Book Review: The Clean Coder, by Bob Martin

Bob Martin is well known for his books on software development and design, however, he offers something more akin to ethics than engineering in The Clean Coder. Looking beyond the art of software development as a technical subject matter, Bob Martin expresses the attitude of a good software professional. Indeed the tagline for the book is: a code of conduct for professional programmers. Behind this rather dry title are memorable anecdotes and inspiring messages on how to be behave with courage, dignity and credibility within a wholly unregulated and under defined industry.

This book is a must read for anyone, not just developers, involved in software from the people on the ground to directors. It applies to all roles within the organisation. It’s just as relevant to people marketing software and managing software projects as it is to developers. Not only is the message universal in its guidance, but it also creates empathy between disciplines by considering how they can collaborate and communicate professionally.

If you’ve ever felt disenfranchised as a “techy” from your organisation, the advice in this book will give you a whole new voice by explaining the refining qualities that earn trust and respect. You will be rewarded with a greater sense of purpose within your organisation and a greater sense of belonging to a community of respected professionals.

The first chapter, “Professionalism”, sets out to broadly define the characteristics of a respected professional.

The second and third chapters, “Saying No” and “Saying Yes”, elaborate on the importance of clarity, honesty and courage.

Chapters four and five, “Coding” and “Test driven Development”, have been squarely pitched at developers, however they do offer good insight into the mind-set of a programmer. For instance, a section I found profoundly interesting was Bob Martin’s view and exploration of being in “the zone”. He proposes that this is in fact an undesirable state to enter because you start to operate with your blinkers on. Even though you may feel more productive, in the zone you may miss the big picture. If you aren’t a coder, it’s still worth persevering through these chapters otherwise you will miss some valuable insights.

Chapter six “Practicing” discusses the role of mentoring and the importance of refining your technique as a craftsman. I found this to be more important than a simple message about learning new things as it unravels the subtle difference between a master reinforcing what they know works and the more powerful journey-based approach of an apprentice discovering what works under guidance.

Chapters seven and eight, “Acceptance Testing” and “Testing Strategies”, examine how to ensure requirements are met and who should be involved. Although the focus may appear to be around testing, requirements are a central theme and a collaborative approach across disciplines is well emphasised. I liked the terms “happy path” and “unhappy path” used in the book as they immediately frame two different thought processes to assist in understanding the depth of a feature or requirement.

Chapters nine, ten and eleven, “Time Management”, “Estimation” and “Pressure” present an important and wide ranging set of tools from the meditative to the scientific (including standard deviations) that tackle the most feared and contested subject within your organisation: how long your project will take. Even a seasoned member of the software community should find something new to take away.

In chapters twelve and thirteen, “Collaboration” and “Teams and Projects”, Bob Martin has resisted the temptation to discuss particular methodologies. Instead, he chooses to offer a few nuggets of widely applicable wisdom.

The final chapter, “Mentoring, Apprenticeship, and Craftsmanship”, is about teaching and learning. Bob Martin provides a framework for a merit based approach to progression and advancement.

In summary, I think this is an essential read for anyone currently involved or thinking of getting involved in the software industry and I admire its effort in comprehensively tackling what it means to be a professional programmer.

Start with the Why, How great leaders inspire action by Simon Senek

People don’t buy what you do, they buy WHY you do it.  So it’s important to know why as a company you do what you do, then hire people who believe what you believe and find (or convert) customers to believe what you believe.

Great TED talk from Simon Senek with some good examples of why some companies like Apple succeed and others fail when fundamentally they are all capable of producing the same end product/result.

So, what’s the ‘Why’ at True Clarity?

It’s the shared sense of achievement we get from helping the people we work with successfully realise their goals.

Agile Product Ownership In a Nutshell by Henrik Kniberg

A fantastic high level summary of how work is defined, prioritised and delivered in an agile environment to deliver value to stakeholders.  This is only a 15 minute video but the content and visual examples given are excellent.  A must for anyone new to agile or for those wanting a refresher.

Things this video will help you understand:

  • What a backlog is and how to manage it
  • Underststanding the difference between story size and value and using this to prioritise
  • Learning to say no (and why)
  • The importance of communication
  • Being able to forcast how long things may take to deliver based on previous experience
  • The importance of frequent delivery of value for the feedback loop and prioritisation of the next most important thing
  • Managing risk in agile
  • The customer value curve and the fact that knowledge is value