The Clean Coder
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.
In "The Clean Coder: A Code of Conduct for Professional Programmers," legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice–about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.

Review By: Britt E. Cluff
01/27/2012This is the first book that I've ever read by "Uncle Bob" Martin, and I wish I hadn't waited so long to pick one up. I've been an IT professional—or so I thought—for more than twenty-three years, but I learned from this book what it means to be a professional. Martin wraps forty years of programming experience into an easy-to-read, thought-provoking book. He covers such topics as professionalism, saying no, saying yes, practicing, mentoring, apprenticeship, and craftsmanship.
What is professionalism? When it comes to being a professional developer, it encompasses quite a broad spectrum of skills, not just the ability to write code in a specific language. First and foremost, it’s about taking responsibility and being accountable. A professional will take responsibility for his mistakes, learn from them, correct them, and strive to not repeat them. Professionals will be accountable to themselves, their teams, and their employers.
There are several areas in the book where the author discusses practice. This may seem odd for an application developer, but after reading the book it makes sense. The only way to improve your skills is through practice. You will never learn a new language or learn to say no without practicing. But, you should not practice on your employer's time. The author makes a point that you should devote forty hours of time to your employer and spend another twenty hours a week of your own time practicing. This is a significant commitment, but practice makes professionals and we are paid as such.
The final chapter of the book focuses on mentoring, apprenticeship, and craftsmanship. I am hopeful that more professionals in the industry will agree with the author’s views here. He believes that the discipline, practice, and skill of being a craftsman can only be learned through experience and mentoring. It is the responsibility of everyone to help other software developers grow and mature. We all need to make each other better. By mentoring someone, you will learn and grow as much as (or more than) the person you're mentoring.
Finally, if you are a software developer, you must read this book. Regardless of your experience level, you will learn something about being a professional. I will recommend this book to everyone on my staff and add it to my all-time favorites list.