This is the second book by Robert C. Martin (a.k.a Uncle Bob) after the book “The Clean Code”. I never got a chance to read the first book and found the second book itself while searching for the best books to read for programmers.
What is it about
The book talks about how to work as a professional software developer including how to code, time management techniques, estimation techniques, managing pressure, and so on. So, the target audience for this book is software developers only. At first, I thought if this is going to be something worth reading but then decided to give it a try. It wasn’t a long read – The complete book took almost ~5 hours to finish. And the thought that came after reading the book was – I think I knew all of it already just by looking at some of the developers out there but didn’t think it is so important that there can be a book about it! And that is the gist of the book itself – some programmers don’t understand the importance of professional behavior in an organization and how it leads to the issues both to the developer and the organization. The author has given example stories from his life to show how that particular behavior impacted his own career as a software developer and how we can avoid it.
The points that I found most interesting
- Always choose what is right over what is easy – Well this is a well-known quote and the author never said this explicitly but I felt that a lot of points he is trying to say boils down to this one quote. What the author says is that we should follow clean code practices, make commitments only what can be delivered, help each other whenever possible, spend time on learning and the list goes on.
- Test-driven development (TDD) is best – This is literally what the author says. I’ve never been exposed to TDD so far but the author convinced me that it is worth learning the concepts and methods of TDD.
- Practicing, learning, and mentoring – We need to constantly learn new concepts, designs, and technologies and not just learning we should keep practicing the learned concepts so that we don’t forget them. If you are a senior developer, then you should take some time out and mentor the junior developers and explain to them the importance of good coding practices and if you are a junior developer, you must reach out to senior developers for mentorship.
- Do or do not, there is no try – Well, this time the author said the quote explicitly. The author says that when we communicate, we should not use the word try as it doesn’t make any sense to say something “I will try to complete the task by tomorrow”. Because the management will consider that the developer is committing to complete the task by the next day and developer will not take the deadline seriously, well, because he said he will “try” and not that he will do it. If there is any uncertainty on whether the task can be completed by the next day, it should be communicated clearly to the manager who can then plan the next actions appropriately.
What I liked
- Simplicity – The book is written in an extremely simple language and Robert has given examples as conversations between colleagues to explain the point clearly and to emphasize the importance in the given situation
- Proof by story – Robert has almost always given a story from his career in the software industry to prove what he is saying makes sense. It also helps the reader to relate to the situation and understand where to apply the concept in his career.
What I didn’t like
- Incompleteness – I felt, in some parts of the book, that the content could have been added and it would have been more useful. For example, in the time management chapter, I would have liked to see some time management techniques tailored to the developers but the chapter was mostly about how to manage time between office tasks, learning, etc. Robert did introduce me to the Pomodoro technique which I found useful but I would have liked to learn more techniques and see which ones work for me the best.
Overall, I think all the software professionals should read this book at least once. It wouldn’t take a lot of the time but will give a sense of importance to a lot of small things in our career. And as I said already, it would make you feel that all of this is obvious. No one would want their colleagues to not fulfill their commitments but this book will emphasize that as a developer, it is very important to make the commitments that can be completed.