Warehouse Stock Clearance Sale

Grab a bargain today!


Sign Up for Fishpond's Best Deals Delivered to You Every Day
Go
Code That Fits in Your ­Head
Heuristics for Software Engineering (Robert C. Martin Series)

Rating
Format
Paperback, 416 pages
Published
United States, 30 November 2021

How to Reduce Code Complexity and Develop Software More Sustainably"Mark Seemann is well known for explaining complex concepts clearly and thoroughly. In this book he condenses his wide-ranging software development experience into a set of practical, pragmatic techniques for writing sustainable and human-friendly code. This book will be a must-read for every programmer." --Scott Wlaschin, author of Domain Modeling Made FunctionalCode That Fits in Your Head offers indispensable, practical advice for writing code at a sustainable pace and controlling the complexity that causes projects to spin out of control. Reflecting decades of experience helping software teams succeed, Mark Seemann guides you from zero (no code) to deployed features and shows how to maintain a good cruising speed as you add functionality, address cross-cutting concerns, troubleshoot, and optimize. You'll find valuable ideas, practices, and processes for key issues ranging from checklists to teamwork, encapsulation to decomposition, API design to unit testing.Seemann illuminates his insights with code examples drawn from a complete sample project. Written in C#, they're designed to be clear and useful to anyone who uses any object-oriented language including Java , C++, and Python. To facilitate deeper exploration, all code and extensive commit messages are available for download.Choose mindsets and processes that work, and escape bad metaphors that don'tUse checklists to liberate yourself, improving outcomes with the skills you already haveGet past analysis paralysis by creating and deploying a vertical slice of your applicationCounteract forces that lead to code rot and unnecessary complexityMaster better techniques for changing code behaviorDiscover ways to solve code problems more quickly and effectivelyThink more productively about performance and securityIf you've ever suffered through bad projects or had to cope with unmaintainable legacy code, this guide will help you make things better next time and every time. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.


Series Editor Foreword xix

Preface xxiii

About the Author xxix



Part I: Acceleration 1



Chapter 1: Art or Science? 3

1.1 Building a House 4

1.2 Growing a Garden 7

1.3 Towards Engineering 8

1.4 Conclusion 14



Chapter 2: Checklists 15

2.1 An Aid to Memory 15

2.2 Checklist for a New Code Base 17

2.3 Adding Checks to Existing Code Bases 29

2.4 Conclusion 32



Chapter 3: Tackling Complexity 33

3.1 Purpose 34

3.2 Why Programming Is Difficult 38

3.3 Towards Software Engineering 44

3.4 Conclusion 46



Chapter 4: Vertical Slice 49

4.1 Start with Working Software 50

4.2 Walking Skeleton 53

4.3 Outside-in 60

4.4 Complete the Slice 77

4.5 Conclusion 85



Chapter 5: Encapsulation 87

5.1 Save the Data 87

5.2 Validation 92

5.3 Protection of Invariants 105

5.4 Conclusion 108



Chapter 6: Triangulation 111

6.1 Short-Term versus Long-Term Memory 111

6.2 Capacity 114

6.3 Conclusion 127



Chapter 7: Decomposition 129

7.1 Code Rot 129

7.2 Code That Fits in Your Brain 136

7.3 Conclusion 153



Chapter 8: API Design 155

8.1 Principles of API Design 156

8.2 API Design Example 168

8.3 Conclusion 176



Chapter 9: Teamwork 177

9.1 Git 178

9.2 Collective Code Ownership 187

9.3 Conclusion 199



Part II: Sustainability 201



Chapter 10: Augmenting Code 203

10.1 Feature Flags 204

10.2 The Strangler Pattern 209

10.3 Versioning 218

10.4 Conclusion 220



Chapter 11: Editing Unit Tests 223

11.1 Refactoring Unit Tests 223

11.2 See Tests Fail 233

11.3 Conclusion 234



Chapter 12: Troubleshooting 235

12.1 Understanding 235

12.2 Defects 240

12.3 Bisection 250

12.4 Conclusion 255



Chapter 13: Separation of Concerns 257

13.1 Composition 258

13.2 Cross-Cutting Concerns 267

13.3 Conclusion 274



Chapter 14: Rhythm 275

14.1 Personal Rhythm 276

14.2 Team Rhythm 282

14.3 Conclusion 285



Chapter 15: The Usual Suspects 287

15.1 Performance 288

15.2 Security 292

15.3 Other Techniques 300

15.4 Conclusion 308



Chapter 16: Tour 309

16.1 Navigation 309

16.2 Architecture 318

16.3 Usage 323

16.4 Conclusion 326



Appendix A: List of Practices 329

A.1 The 50/72 Rule 329

A.2 The 80/24 Rule 330

A.3 Arrange Act Assert 330

A.4 Bisection 330

A.5 Checklist for A New Code Base 331

A.6 Command Query Separation 331

A.7 Count the Variables 331

A.8 Cyclomatic Complexity 331

A.9 Decorators for Cross-Cutting Concerns 332

A.10 Devil's Advocate 332

A.11 Feature Flag 332

A.12 Functional Core, Imperative Shell 333

A.13 Hierarchy of Communication 333

A.14 Justify Exceptions from the Rule 333

A.15 Parse, Don't Validate 334

A.16 Postel's Law 334

A.17 Red Green Refactor 334

A.18 Regularly Update Dependencies 335

A.19 Reproduce Defects as Tests 335

A.20 Review Code 335

A.21 Semantic Versioning 335

A.22 Separate Refactoring of Test and Production Code 335

A.23 Slice 336

A.24 Strangler 336

A.25 Threat-Model 337

A.26 Transformation Priority Premise 337

A.27 X-driven Development 337

A.28 X Out Names 338



Bibliography 339

Index 349

Show more

Our Price
£26.82
Elsewhere
£29.99
Save £3.17 (11%)
Ships from UK Estimated delivery date: 15th Apr - 17th Apr from UK

Buy Together
+
Buy together with Code That Fits in Your Head [German] at a great price!
Buy Together
£42.30

Product Description

How to Reduce Code Complexity and Develop Software More Sustainably"Mark Seemann is well known for explaining complex concepts clearly and thoroughly. In this book he condenses his wide-ranging software development experience into a set of practical, pragmatic techniques for writing sustainable and human-friendly code. This book will be a must-read for every programmer." --Scott Wlaschin, author of Domain Modeling Made FunctionalCode That Fits in Your Head offers indispensable, practical advice for writing code at a sustainable pace and controlling the complexity that causes projects to spin out of control. Reflecting decades of experience helping software teams succeed, Mark Seemann guides you from zero (no code) to deployed features and shows how to maintain a good cruising speed as you add functionality, address cross-cutting concerns, troubleshoot, and optimize. You'll find valuable ideas, practices, and processes for key issues ranging from checklists to teamwork, encapsulation to decomposition, API design to unit testing.Seemann illuminates his insights with code examples drawn from a complete sample project. Written in C#, they're designed to be clear and useful to anyone who uses any object-oriented language including Java , C++, and Python. To facilitate deeper exploration, all code and extensive commit messages are available for download.Choose mindsets and processes that work, and escape bad metaphors that don'tUse checklists to liberate yourself, improving outcomes with the skills you already haveGet past analysis paralysis by creating and deploying a vertical slice of your applicationCounteract forces that lead to code rot and unnecessary complexityMaster better techniques for changing code behaviorDiscover ways to solve code problems more quickly and effectivelyThink more productively about performance and securityIf you've ever suffered through bad projects or had to cope with unmaintainable legacy code, this guide will help you make things better next time and every time. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.


Series Editor Foreword xix

Preface xxiii

About the Author xxix



Part I: Acceleration 1



Chapter 1: Art or Science? 3

1.1 Building a House 4

1.2 Growing a Garden 7

1.3 Towards Engineering 8

1.4 Conclusion 14



Chapter 2: Checklists 15

2.1 An Aid to Memory 15

2.2 Checklist for a New Code Base 17

2.3 Adding Checks to Existing Code Bases 29

2.4 Conclusion 32



Chapter 3: Tackling Complexity 33

3.1 Purpose 34

3.2 Why Programming Is Difficult 38

3.3 Towards Software Engineering 44

3.4 Conclusion 46



Chapter 4: Vertical Slice 49

4.1 Start with Working Software 50

4.2 Walking Skeleton 53

4.3 Outside-in 60

4.4 Complete the Slice 77

4.5 Conclusion 85



Chapter 5: Encapsulation 87

5.1 Save the Data 87

5.2 Validation 92

5.3 Protection of Invariants 105

5.4 Conclusion 108



Chapter 6: Triangulation 111

6.1 Short-Term versus Long-Term Memory 111

6.2 Capacity 114

6.3 Conclusion 127



Chapter 7: Decomposition 129

7.1 Code Rot 129

7.2 Code That Fits in Your Brain 136

7.3 Conclusion 153



Chapter 8: API Design 155

8.1 Principles of API Design 156

8.2 API Design Example 168

8.3 Conclusion 176



Chapter 9: Teamwork 177

9.1 Git 178

9.2 Collective Code Ownership 187

9.3 Conclusion 199



Part II: Sustainability 201



Chapter 10: Augmenting Code 203

10.1 Feature Flags 204

10.2 The Strangler Pattern 209

10.3 Versioning 218

10.4 Conclusion 220



Chapter 11: Editing Unit Tests 223

11.1 Refactoring Unit Tests 223

11.2 See Tests Fail 233

11.3 Conclusion 234



Chapter 12: Troubleshooting 235

12.1 Understanding 235

12.2 Defects 240

12.3 Bisection 250

12.4 Conclusion 255



Chapter 13: Separation of Concerns 257

13.1 Composition 258

13.2 Cross-Cutting Concerns 267

13.3 Conclusion 274



Chapter 14: Rhythm 275

14.1 Personal Rhythm 276

14.2 Team Rhythm 282

14.3 Conclusion 285



Chapter 15: The Usual Suspects 287

15.1 Performance 288

15.2 Security 292

15.3 Other Techniques 300

15.4 Conclusion 308



Chapter 16: Tour 309

16.1 Navigation 309

16.2 Architecture 318

16.3 Usage 323

16.4 Conclusion 326



Appendix A: List of Practices 329

A.1 The 50/72 Rule 329

A.2 The 80/24 Rule 330

A.3 Arrange Act Assert 330

A.4 Bisection 330

A.5 Checklist for A New Code Base 331

A.6 Command Query Separation 331

A.7 Count the Variables 331

A.8 Cyclomatic Complexity 331

A.9 Decorators for Cross-Cutting Concerns 332

A.10 Devil's Advocate 332

A.11 Feature Flag 332

A.12 Functional Core, Imperative Shell 333

A.13 Hierarchy of Communication 333

A.14 Justify Exceptions from the Rule 333

A.15 Parse, Don't Validate 334

A.16 Postel's Law 334

A.17 Red Green Refactor 334

A.18 Regularly Update Dependencies 335

A.19 Reproduce Defects as Tests 335

A.20 Review Code 335

A.21 Semantic Versioning 335

A.22 Separate Refactoring of Test and Production Code 335

A.23 Slice 336

A.24 Strangler 336

A.25 Threat-Model 337

A.26 Transformation Priority Premise 337

A.27 X-driven Development 337

A.28 X Out Names 338



Bibliography 339

Index 349

Show more
Product Details
EAN
9780137464401
ISBN
0137464401
Dimensions
22.9 x 17.8 x 2.3 centimeters (0.40 kg)

Table of Contents

  • Part I: Acceleration
  • Chapter 1: Art or Science?
  • Chapter 2: Checklists
  • Chapter 3: Tackling Complexity
  • Chapter 4: Vertical Slice
  • Chapter 5: Encapsulation
  • Chapter 6: Triangulation
  • Chapter 7: Decomposition
  • Chapter 8: API Design
  • Chapter 9: Teamwork
  • Part II: Sustainability
  • Chapter 10: Augmenting Code
  • Chapter 11: Editing Unit Tests
  • Chapter 12: Troubleshooting
  • Chapter 13: Separation of Concerns
  • Chapter 14: Rhythm
  • Chapter 15: The Usual Suspects
  • Chapter 16: Tour
  • Appendix A: List of Practices

About the Author

Mark Seemann, a former economist, found a second career as a programmer and has worked as a web and enterprise developer since the late 1990s. He is a Certified Rockstar Developer and has written a Jolt Award-winning book about Dependency Injection, given more than a hundred international conference talks, and authored video courses for both Pluralsight and Clean Coders.

Reviews

"We progress in software by standing on the shoulders of those who came before us. Mark's vast experience ranges from philosophical and organisational considerations right down to the precise details of writing code. In this book, you're offered an opportunity to build on that experience. Use it."
--Adam Ralph, speaker, tutor, and software simplifier, Particular Software

"I've been reading Mark's blogs for years and he always manages to entertain while at the same time offering deep technical insights. Code That Fits in Your Head follows in that vein, offering a wealth of information to any software developer looking to take their skills to the next level."
--Adam Tornhill, founder of CodeScene, author of Software Design X-Rays and Your Code as a Crime Scene

"My favorite thing about this book is how it uses a single code base as a working example. Rather than having to download separate code samples, you get a single Git repository with the entire application. Its history is handcrafted to show the evolution of the code alongside the concepts being explained in the book. As you read about a particular principle or technique, you'll find a direct reference to the commit that demonstrates it in practice. Of course, you're also free to navigate the history at your own leisure, stopping at any stage to inspect, debug, or even experiment with the code. I've never seen this level of interactivity in a book before, and it brings me special joy because it takes advantage of Git's unique design in a new constructive way."
--Enrico Campidoglio, independent consultant, speaker and Pluralsight author

"Mark Seemann not only has decades of experience architecting and building large software systems, but is also one of the foremost thinkers on how to scale and manage the complex relationship between such systems and the teams that build them."
--Mike Hadlow, freelance software consultant and blogger

"Mark writes, 'Successful software endures'--this book will help you to write that kind of software."
--Bryan Hogan, software architect, podcaster, blogger

"Mark has an extraordinary ability to help others think deeply about the industry and profession of software development. With every interview on .NET Rocks! I have come away knowing I would have to go back and listen to my own show to really take in everything we discussed."
--Richard Campbell, co-host, .NET Rocks!

Show more
Review this Product
Ask a Question About this Product More...
 
Look for similar items by category
Item ships from and is sold by Fishpond World Ltd.

Back to top
We use essential and some optional cookies to provide you the best shopping experience. Visit our cookies policy page for more information.