Book Review - The Pragmatic Programmer
Tags: programming, wetware, bookreview, books
Published: 2021-01-10 14:02:04

## In a nutshell, 🥜

Empowering [book](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/) 💪

![Pragmatic Programmer](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/tpp20.jpg)

Yes this is one empowering book and is one of the books that should be bought with hard-cover and keep it close to you for reference and to read again a couple of times, or more.

## What is this all about? 🤷🏻‍♂️

[David](https://twitter.com/pragdave) and [Andrew](https://twitter.com/PragmaticAndy) take us in a journey to mastery, as the book says, from being just a programmer to becoming a pragmatic programmer, and pragmatism is all about using the tools that work best for you and your team to develop professional products and delight your users by helping them achieve their goals, delivering value at each step you take, value where you are aware of the larger context, beyond the immediate problems, and the approach you take to find efficient solutions to those problems with the right tools and practices. You make this an **habit and an attitude** and you will see improvements in your productivity and career as developer.

I wish I had someone pointing me to this book before, I just read the 20th anniversary edition! I wish I had some good mentors in my career that told me about it, but probably I also didn't worry too much about seeking mentorship, in part, I have been pragmatic "doer", pivoting around what works for me. Nonetheless, the more I learned the more I thought: there should be a less speculative and more proven and also practical way to do software. As years have passed, I am a more *aware programmer* and I seek more knowledge from the people that have been through a lifetime of experience, and you should too, the earlier the better.

## Why should you care? 🤔

The 53 topics presented conveying the 100 *maxims* or tips 💡 in the book to me are the way foundational software development knowledge must have been passed through generations of programmers, but I have seen a handful times these concepts been overheard or taught or practiced, sometimes of course, they take different names, practices and entire paradigms, but **the very essence of software development** is the same, and this book explains it all. These topics are a must to put in practice for every developer to *empower* their career.

You may also think, like some reviewers I have seen about this book, "oh yeah that sounds nice but I have known those things my whole career" 🤷🏻‍♂️, or "it's just obvious common sense, I'm beyond that" 💁🏻‍♂️, or "this is too basic for me" 🥱. Well more often than not, you may think you know a lot of this stuff, but do you really put all into practice? and within the proper context? or do you go beyond good wishes? Do you really take an active approach to *Don't Live with Broken Windows* 💥 (Tip 5) to remove *Software Entropy* (Topic 3) for instance. I'm afraid not, and if you do, maybe you haven't been able to pass that expertise wisdom to fellow developers and really influence the industry or your team. 

We have an industry lacking of so much leadership and examples of practices that came out of hard proven experience, because as developers we are arrogant animals, working in solo, reinventing the wheel every time we can pretending software is totally different than years or decades ago, while programming (and tech in general) is almost all the time a sharing and a team experience where you work surrounded by other people and discover 🔍, research 🧪 and learn 📚 all the time and evolve from learnings of the past. The best example nowadays I guess is Open Source Software and how more often than not, collaboration enables us to create better technology and deliver with more quality, still, some folks just don't get it.

I understand that like any expertise, is hard to pass the knowledge of so many experiences in a single book, but I think the authors did a really great job abstracting very important concepts into these 53 topics and 100 tips💡. While some may be familiar to your own experience depending of your mileage, others will be new or refreshing points of view of, what should be considered, **universal knowledge and skills in software development**. 🎓

As an example, take the topics like *DRY - Don't repeat yourself*, *Orthogonality* and *Decoupling* and you will end up mapping a lot of the advice to OOP practices like SOLID principles for instance, but in a more abstract and universally applicable way which to me is very useful so that the advice can be applied in any context, stack and paradigm 🤯. It's up to you really, to delve deeper within your own context and develop and practice in your craft beyond the **thorough advice in the book**.

Take also for example how *Agile* practices have been transforming over the years but the essence of *Agility* is more often than not, misunderstood, Andrew and Dave, who participated in the *Agile Manifesto*, explains perfectly what is *The Essence of Agility* (Topic 48), in a way that you can make it your anchor, no matter the context you are in because remember that *Coconuts Don't Cut It* (Topic 50) and what works for one team may not work for other 🤹🏻‍♀️ to be able to *Deliver when users need it* (Tip 88) operating with **true Agility**. 🤸🏻‍♂️

## A journey that never ends 🧗🏻‍♀️ 

I just shed a light on why is so important for newcomers to software to start with this solid advice from really experienced programmers who have been through a lot. As for seasoned programmers, you will end up wanting to become more pragmatic and efficient at code and keep it as a good reference throughout your journey to mastery, **a journey that never ends** thankfully and this is your *compass* 🧭

To me personally, the book gave me more to learn about and also sparked a renewed hope for programmers to be more pragmatic and unorthodox, less individualistic and philosophical, become active instead of passive agents of change, so that one really becomes part of the collaborative force of progress that technology is all about.