Description

Book Synopsis
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. Mark has regularly published his blog ( blog.ploeh.dk) since 2006.

Trade Review
"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!

Table of Contents
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

Code That Fits in Your Head

Product form

£26.99

Includes FREE delivery

RRP £29.99 – you save £3.00 (10%)

Order before 4pm today for delivery by Wed 7 Jan 2026.

A Paperback / softback by Mark Seemann

4 in stock


    View other formats and editions of Code That Fits in Your Head by Mark Seemann

    Publisher: Pearson Education (US)
    Publication Date: 10/11/2021
    ISBN13: 9780137464401, 978-0137464401
    ISBN10: 0137464401

    Description

    Book Synopsis
    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. Mark has regularly published his blog ( blog.ploeh.dk) since 2006.

    Trade Review
    "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!

    Table of Contents
    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

    Recently viewed products

    © 2026 Book Curl

      • American Express
      • Apple Pay
      • Diners Club
      • Discover
      • Google Pay
      • Maestro
      • Mastercard
      • PayPal
      • Shop Pay
      • Union Pay
      • Visa

      Login

      Forgot your password?

      Don't have an account yet?
      Create account