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. Readers will learn What it means to behave as a true software craftsman How to deal with conflict, tight schedules, and unreasonable managers How to get into the flow of coding, and get past writer’s block How to handle unrelenting pressure and avoid burnout How to combine enduring attitudes with new development paradigms How to manage your time, and avoid blind alleys, marshes, bogs, and swamps How to foster environments where programmers and teams can thrive When to say “No”–and how to say it When to say “Yes”–and what yes really means Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them–and earn the pride and fulfillment that they alone possess. Contents......Page 10 Foreword......Page 14 Preface......Page 20 Acknowledgments......Page 24 About the Author......Page 30 On the Cover......Page 32 Pre-Requisite Introduction......Page 34 Chapter 1 Professionalism......Page 40 Taking Responsibility......Page 41 First, Do No Harm......Page 44 Work Ethic......Page 49 Bibliography......Page 55 Chapter 2 Saying No......Page 56 Adversarial Roles......Page 59 High Stakes......Page 62 Being a “Team Player”......Page 63 The Cost of Saying Yes......Page 69 Code Impossible......Page 74 Chapter 3 Saying Yes......Page 78 A Language of Commitment......Page 80 Learning How to Say “Yes”......Page 85 Conclusion......Page 89 Chapter 4 Coding......Page 90 Preparedness......Page 91 The Flow Zone......Page 95 Writer’s Block......Page 97 Debugging......Page 99 Pacing Yourself......Page 102 Being Late......Page 104 Help......Page 106 Bibliography......Page 109 Chapter 5 Test Driven Development......Page 110 The Three Laws of TDD......Page 112 What TDD Is Not......Page 116 Bibliography......Page 117 Chapter 6 Practicing......Page 118 Some Background on Practicing......Page 119 The Coding Dojo......Page 122 Broadening Your Experience......Page 126 Bibliography......Page 127 Communicating Requirements......Page 128 Acceptance Tests......Page 133 Conclusion......Page 144 Chapter 8 Testing Strategies......Page 146 QA Should Find Nothing......Page 147 The Test Automation Pyramid......Page 148 Bibliography......Page 152 Chapter 9 Time Management......Page 154 Meetings......Page 155 Focus-Manna......Page 160 Time Boxing and Tomatoes......Page 163 Blind Alleys......Page 164 Marshes, Bogs, Swamps, and Other Messes......Page 165 Conclusion......Page 166 Chapter 10 Estimation......Page 168 What Is an Estimate?......Page 171 PERT......Page 174 Estimating Tasks......Page 177 Conclusion......Page 180 Bibliography......Page 181 Chapter 11 Pressure......Page 182 Avoiding Pressure......Page 184 Handling Pressure......Page 186 Conclusion......Page 188 Chapter 12 Collaboration......Page 190 Programmers versus People......Page 192 Cerebellums......Page 197 Conclusion......Page 199 Chapter 13 Teams and Projects......Page 200 Does It Blend?......Page 201 Bibliography......Page 204 Chapter 14 Mentoring, Apprenticeship, and Craftsmanship......Page 206 Mentoring......Page 207 Apprenticeship......Page 213 Craftsmanship......Page 217 Conclusion......Page 218 Appendix A: Tooling......Page 220 Source Code Control......Page 222 IDE/Editor......Page 227 Issue Tracking......Page 229 Continuous Build......Page 230 Unit Testing Tools......Page 231 Component Testing Tools......Page 232 Integration Testing Tools......Page 233 UML/MDA......Page 234 Conclusion......Page 237 Index......Page 238 Y......Page 1 Programmers who endure and succeed amidst swirling uncertainty and nonstpo 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. Readers will learn: What it means to behave as a true software craftsman; How to deal with conflict, tight schedules, and unreasonable managers; How to get into the flow of coding, and get past writer's block; How to handle unrelenting pressure and avoid burnout; How to combine enduring attitudes with new development paradigms; How to manage your time, and avoid blind alleys, marshes, bogs, and swamps; How to foster environments where programmers and teams can thrive; When to say "No" - and how to say it; When to say "Yes" - and what yes really means. Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn't written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them - and earn the pride and fulfillment that they alone possess. -- From back cover