The Clean Coder - Reading Experience


After transitioning from college to the corporate world of software development, there has been a complete paradigm shift. Right from the first day, it has been exciting to embrace this new chapter of my life. After spending some time working with my colleagues, I found that there are plenty of things that differentiate a regular software developer from a professional software developer. I was curious enough to know the perspectives behind it since I always strived to attain that sense of professionalism. Then I stumbled upon this book & found the content intriguing. It outlines the characteristics & the conducts that should be followed on a day-to-day basis to become a professional software developer.

Key Takeaways

This book explains a lot of great concepts. I would be sharing some of the key takeaways that I learned while reading this book.

Taking Responsibility


Preventing negligence - sometimes we tend to overshoot the deadlines & to ship the software on time we neglect to test the software. The time spent in testing is much more valuable than the time spent on debugging & sending a bug fix for your broken release.

Follow the no-harm rule – make sure we try our best to not introduce any bugs. There is no perfect software since there is always a possibility of introducing a bug. We should be accountable for the errors & practice apologizing for the same. We should make sure that we learn from our mistakes & avoid making the same errors again.

Responsibility for our career should not be entrusted to our employer. Apart from spending 40+ hours working for your employer, make sure we put some extra hours for ourselves. This will help us to upskill & make progress in the respective fields that we are interested in. Every software professional should be conversant with the design patterns, principles, methods & disciplines. We should be completely responsible for our growth & not depend on our employers to train us.

Saying No & Avoid trying


We should have the courage to say no to our managers. True professionals would pursue & defend their objectives as aggressively as they can. If you know well that getting a job done by tomorrow is impossible, you should be assertive & get the best outcome possible through negotiation. You should not just agree with everything that your manager says.

The worst thing to say is we will try to do it. The word try has multiple implications. It implies that you had been holding back some effort in reserve. If you were reasonably confident in your estimate, then promising to try is being dishonest.

Test-Driven Development (TDD)

It focuses heavily on writing tests. It is a developer-oriented approach where we write tests even before writing a single line of code. As the name suggests, development is driven by writing tests, where we create a test, run it to check if it fails, then write the code to make sure the test succeeds & the cycle continues. Generally, I have seen most of the developers write the code first according to the expected behavior or scenario & then write test cases after development.

It is a discipline that enhances design, documentation, & defect reduction. The problem with testing code is that you have to isolate the code. This is often difficult because the function you are trying to test might call other functions. To write that test we need to figure out some way to decouple the function from the rest. This enables us to think about good design.

It also helps us in becoming more confident when we try to refactor or make changes in someone else’s code. Most of the time when we see bad code, we shy away from fixing it. This happens because we are afraid of touching this code since we might risk breaking it & finally it might become our responsibility. On the other hand, if we have tests written for that part of the code, we are confident enough to make the changes.

Time Management


Meetings – There are two truths about them, they are necessary & huge time wasters. We should be careful about which ones to attend & which ones to decline. We should politely leave a meeting if it is not worth our time. Meetings should be crisp & have a clear agenda that would lead to decisive outcomes.

Timeboxing & Prioritisation – We should evaluate the priority of each task irrespective of our emotions & execute them in that order. After deciding the priority, we should define the time slots when we would perform that task. This would help us from procrastinating & improving our overall productivity.


I would recommend everyone who has just started their professional career to read this book as you might come across many important topics which are not taught to us in college or even at the workplace. The author Robert C. Martin (aka, Uncle Bob) describes the concepts through his life experiences which might surely reflect on your life throughout your career. All the things that have been mentioned should not be followed blindly & we should take rational decisions based on the current scenarios. Do not confuse this book with Clean Code, which is more focused on the technical side comprising of design, coding practices, etc. Lately, I have been reading it & I can surely say it's also a great read. If you want to master the art of programming & love refactoring your code, I would recommend you give it a shot!

Leave a comment

Copyright 2022 © Saurabh Bora

Share via
Copy link
Powered by Social Snap