'The Clean Coder' by Robert C. Martin, provides programmers with a valuable set of standards for managing their professions, especially for the early stages for your careers. After extensively reviewing the first chapter, I noticed that it was packed with critical principles that each conscientious programmer should understand. These ideas not only give practical advice, but also chart a course toward programming professionalism and ethical behavior. Sometimes I really shocked and read again and again some parts to understand better, realized I have been doing the opposite.
While I was reading, I noticed that some parts (or we can say paragraphs) are stunning but also devastating. So that is why, I underlined and wanted to write about them. Now, I will explain and dive deep to them.
When Martin states, "Know your domain" he emphasizes the critical need of having a thorough awareness of one's field of work. This advise resonates strongly with me since I've always felt that a full understanding of the technology landscape, industry practices, and customer requirements is critical for generating high-quality outputs that actually fulfill user wants. We all know this sentence, this is a classic but in my opinion he says we need to focus on one topic or technology. It is better to be an expert on one subject than have an idea about all technologies.
"Teach others to learn more" struck a chord with me since it encourages the notion of learning via teaching. I've realized that knowledge sharing is a two-way street during my programming career. When we educate others, we not only reinforce our own knowledge but also expose ourselves to new perspectives and ideas, enabling for mutual growth. You should all know about Feynman Technique.
Martin's emphasis on mastering fundamentals such as Design patterns, Disciplines, SOLID principles, and methodologies like as Scrum and XP, as well as familiarity with artifacts, is completely agreeable to me. These, I believe, are the underpinnings of programming, allowing us to advance beyond simply writing code to building robust, maintainable software solutions. I know that autodidact programmers are having problem to learn these concepts. They are learning these while they are in their career. I believe that there is no sense to write a code without knowing them. You cannot improve your skills without these.
"You cannot know the future without looking back," as the saying goes, and this is especially true in today's rapidly changing technological world. Knowing prior trends and patterns gives us the capacity to predict and adapt to future changes. This position is compatible with my observations, since I've observed that remembering the past helps us cope with future uncertainty. Especially in my current company :)
Martin's comment, "Everything is changing, but we need to know the fundamentals, where they are coming from," serves as a timely reminder of the need of being grounded in the fundamentals in the face of constant technological breakthroughs. IMO, this is the most important thing that he stated on first chapter. We need to know the base of the technology that we are using. Let's say someone is writing React.js and also he/she is good at it. The code is usable on the production, sometimes bugs come out but no big deal. We all say that it is enough to work with him/her. What if I ask that "How the useMemo is working?". What do you think? If he/she do not know the answer, you call him a good programmer?
Announcement For Every Tech Company
The focus on complete code testing in the chapter—"Every code should be tested 100%, test coverage should be 100%"—emphasizes the need of rigorous testing in software development. I completely agree; ensuring that each line of code is validated decreases the possibility of mistakes in the final output, hence keeping quality and reliability standards.
Announcement Finished
Finally, the chapter's concluding premise, "QA Should Find Nothing," encapsulates the goal of aiming for perfection in software development. It advises that code be thoroughly tested and debugged to guarantee that quality assurance teams find no issues. This is an approach I've always advocated since it highlights that quality is not an afterthought in the development process, but rather an intrinsic part of it.
The first chapter of 'The Clean Coder' clarifies these concepts, offering essential training for programmers at all stages of their careers. I strongly suggest every programmer to dig into the wealth of information included in this book. As we learn and use these concepts, we evolve, improving not only our technical skills but also our conduct as professional programmers.
Thank you...
You can buy the book from here: The Clean Coder