SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
Be a Better Developer and Deliver Better Code
Despite advanced tools and methodologies, software projects continue to fail. Why? Too many organizations still view software development as just another production line. Too many developers feel that way, too—and they behave accordingly.
In The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso offers a better and more fulfilling path. If you want to develop software with pride and professionalism; love what you do and do it with excellence; and build a career with autonomy, mastery, and purpose, it starts with the recognition that you are a craftsman. Once you embrace this powerful mindset, you can achieve unprecedented levels of technical excellence and customer satisfaction.
Mancuso helped found the world’s largest organization of software craftsmen; now, he shares what he’s learned through inspiring examples and pragmatic advice you can use in your company, your projects, and your career.
You will learn
Sandro Mancuso has coded for startups, software houses, product companies, international consultancies, and investment banks. In October 2013, he cofounded Codurance, a consultancy based on Software Craftsmanship principles and values. His involvement with Software Craftsmanship began in 2010, when he founded the London Software Craftsmanship Community (LSCC), now the world’s largest and most active Software Craftsmanship community, with more than two thousand craftsmen. For the past four years, he has inspired and helped developers to organize Software Craftsmanship communities throughout Europe, the United States, and the rest of the world.
Foreword by Robert C. Martin xv
Preface xvii
Acknowledgments xxv
About the Author xxix
Part I: Ideology and Attitude 1
Chapter 1: Software Development in the Twenty-First Century 3
Seniority 5
A New Reality 6
Chapter 2: Agile 9
Process-Oriented Agile Disciplines 10
Technical-Oriented Disciplines 10
What Is It to Be Agile? 11
Agile Manifesto 12
The Agile Transformation Era 14
The Agile Hangover 14
Agile versus Software Craftsmanship 21
Summary 22
Chapter 3: Software Craftsmanship 23
A Better Metaphor 23
What Does Wikipedia Say? 24
A More Personal Definition 24
A Shorter Definition 24
Beyond Definitions 25
Craft, Trade, Engineering, Science, or Art 25
Software Craftsmanship History 26
Summary 39
Chapter 4: The Software Craftsmanship Attitude 41
Who Owns Your Career? 42
Keeping Ourselves Up to Date 44
Know Who to Follow 48
Practice, Practice, Practice 48
Socialize 54
Deliberate Discovery 55
Work-Life Balance 56
Summary 60
Chapter 5: Heroes, Goodwill, and Professionalism 61
Learning How to Say No 64
Providing Options 70
Enlightened Managers 74
Summary 75
Chapter 6: Working Software 77
Working Software Is Not Enough 78
Looking After Our Garden 79
The Invisible Threat 79
The Wrong Notion of Time 81
Legacy Code 88
Summary 91
Chapter 7: Technical Practices 93
The Right Thing versus the Thing Right 93
Context 94
Extreme Programming History 96
Practices and Values 97
Accountability 104
Pragmatism 105
Summary 106
Chapter 8: The Long Road 107
A Tale from a Brazilian Teenager 107
Focus and Determination 110
Job as Investment 111
Autonomy, Mastery, and Purpose 113
Career Inside Companies 114
Summary 115
Part II: A Full Transformation 117
Chapter 9: Recruitment 119
An Ordinary Job Description 120
Too Busy to Interview 122
No Job Descriptions 123
Recommendations 130
Community Involvement 130
Defining Effective Filtering Criteria 131
Proactive Recruitment 134
Summary 135
Chapter 10: Interviewing Software Craftsmen 137
A Business Negotiation 137
Identifying Productive Partnerships 138
Good Interviews 142
Taking a Punt 148
Hiring for an Existing Team versus Hiring for a New Team 149
Pre-Interview Coding Exercises 150
Everyone Should Know How to Interview 151
Developers Must Interview Developers 152
Summary 152
Chapter 11: Interview Anti-Patterns 153
Don’t Be a Smart-Ass Interviewer 153
Don’t Use Brainteasers 154
Don’t Ask Questions to Which You Don’t Know the Answers 154
Don’t Try to Make the Candidate Look Like a Fool 155
Don’t Block the Internet 156
Don’t Code on a Piece of Paper 156
Don’t Use Algorithms 157
Don’t Conduct Phone Interviews 157
Summary 158
Chapter 12: The Cost of Low Morale 159
The Agile Hangover: Low Morale 159
The Cost of Employing 9-to-5 Developers 161
Constrained by Lack of Motivation 164
Injecting Passion 165
Summary 167
Chapter 13: Culture of Learning 169
Wrong Motivation 170
Creating a Culture of Learning 171
What if Others Don’t Want to Join In? 179
Summary 182
Chapter 14: Driving Technical Changes 185
Identifying Skepticism Patterns 185
Be Prepared 189
Where Do We Start? 191
Fear and Incompetence 195
How Do I Convince My Manager? 196
How Do I Convince My Team to Do TDD? 197
Facing the Skeptics 198
Should We Really Care about All That? 205
Summary 205
Chapter 15: Pragmatic Craftsmanship 207
Quality Is Always Expected 207
Busting the “Expensive and Time-Consuming Quality” Myth 209
Refactoring 211
The “One Way” of Developing Software 212
Helping the Business 213
Software Projects Are Not about Us 217
Great versus Mediocre 217
Four Rules of Simple Design 218
Craftsmanship and Pragmatism 221
Summary 222
Chapter 16: A Career as a Software Craftsman 223
Being a Craftsman 224
Career Progression 225
Roads and Milestones 227
Job Diversity 231
The Mission 233
Appendix: Craftsmanship Myths and Further Explanations 235
Index 241