Description
Book SynopsisRobert C. Martin (Uncle Bob) wrote his first line of code at the age of 12 in 1964 and has been employed as a programmer since 1970. He is cofounder of cleancoders.com, offering online video training for software developers, and is founder of Uncle Bob Consulting LLC, offering software consulting, training, and skill development services to major corporations worldwide. He served as the Master Craftsman at 8th Light, Inc., a Chicago-based software consulting firm. Mr. Martin has published dozens of articles in various trade journals, authored many books, and is a regular speaker at international conferences and trade shows.
Trade Review"Bob's
Clean Craftsmanship has done a great job explaining the purposes of agile technical practices, along with a deep historical basis for how they came into existence, as well as positioning for why they will always be important. His involvement in history and formation of agility, thorough understanding of practices, and their purposes reflect vividly throughout the manuscript."
—Tim Ottinger, well-known Agile Coach and author "Bob's writing style is excellent. It is easy to read and the concepts are explained in perfect detail for even a new programmer to follow. Bob even has some funny moments, which pleasantly snap you out of focus. The true value of the book is really in the cry for change, for something better . . . the cry for programmers to be professional . . . the realization that software is everywhere. Additionally, I believe there is a lot of value in all the history Bob provides. I enjoy that he doesn't waste time laying blame for how we got to where we are now. Bob calls people to action, asking them to take responsibility by increasing their standards and level of professionalism, even if that means pushing back sometimes."
—Heather Kanser "As software developers, we have to continually solve important problems for our employers, customers, colleagues, and future selves. Getting the app to work, though difficult, is not enough, it does not make you a craftsman. With an app working, you have passed the
app-titude test. You may have the aptitude to be a craftsman, but there is more to master. In these pages, Bob expresses clearly the techniques and responsibilities to go beyond the
app-titude test and shows the way of the serious software craftsman."
—James Grenning, author of Test-Driven Development for Embedded C
and Agile Manifesto co-author "Bob's one of the very few famous developers with whom I'd like to work on a tech project. It's not because he's a good developer, famous, or a good communicator; it's because Bob helps me be a better developer and a team member. He has spotted every major development trend, years ahead of others, and has been able to explain its importance, which encouraged me to learn. Back when I started--apart from being honest and a good person--the idea of craftsmanship and ethics was completely missing from this field. Now, it seems to be the most important thing professional developers can learn, even ahead of coding itself. I'm happy to see Bob leading the way again. I can't wait to hear his perspective and incorporate it into my own practice."
—Daniel Markham, Principal, Bedford Technology Group, Inc. Table of ContentsForeword xvii
Preface xxi
Acknowledgments xxvii
About the Author xxix Chapter 1: Craftsmanship 1
Part I: The Disciplines 11 Extreme Programming 13
Test-Driven Development 15
Refactoring 16
Simple Design 17
Collaborative Programming 17
Acceptance Tests 18
Chapter 2: Test-Driven Development 19 Overview 20
The Basics 35
Conclusion 79
Chapter 3: Advanced TDD 81 Sort 1 82
Sort 2 87
Getting Stuck 95
Arrange, Act, Assert 103
Test Doubles 108
Architecture 143
Conclusion 145
Chapter 4: Test Design 147 Testing Databases 148
Testing GUIs 150
Test Patterns 154
Test Design 160
Transformation Priority Premise 184
Conclusion 196
Chapter 5: Refactoring 197 What Is Refactoring? 199
The Basic Toolkit 200
The Disciplines 217
Conclusion 221
Chapter 6: Simple Design 223 YAGNI 226
Covered by Tests 228
Maximize Expression 233
Minimize Duplication 237
Minimize Size 239
Chapter 7: Collaborative Programming 241
Chapter 8: Acceptance Tests 245 The Discipline 248
The Continuous Build 249
Part II: The Standards 251 Your New CTO 252
Chapter 9: Productivity 253 We Will Never Ship S**T 254
Inexpensive Adaptability 256
We Will Always Be Ready 258
Stable Productivity 259
Chapter 10: Quality 261 Continuous Improvement 262
Fearless Competence 263
Extreme Quality 264
We Will Not Dump on QA 265
QA Will Find Nothing 266
Test Automation 267
Automated Testing and User Interfaces 268
Testing the User Interface 269
Chapter 11: Courage 271 We Cover for Each Other 272
Honest Estimates 274
You Must Say NO 276
Continuous Aggressive Learning 277
Mentoring 278
Part III: The Ethics 279 The First Programmer 280
Seventy-Five Years 281
Nerds and Saviors 286
Role Models and Villains 289
We Rule the World 290
Catastrophes 291
The Oath 293
Chapter 12: Harm 295 First, Do No Harm 296
Best Work 306
Repeatable Proof 316
Chapter 13: Integrity 327 Small Cycles 328
Relentless Improvement 342
Maintain High Productivity 346
Chapter 14: Teamwork 355 Work as a Team 356
Estimate Honestly and Fairly 358
Respect 372
Never Stop Learning 373
Index 375