All blogs / Software / engineering practice
Software Design: Tidy First?
Software design is an exercise in human relationships. So are all the other techniques we use to develop software. How can we geeks get better at technique as one way of getting better at relationships? Click to read "Software Design: Tidy First?", by Kent Beck, a Substack publication with hundreds
- Posts
- 455 from 7 Jan 2021 to 30 Oct 2026
- Posting
- weekly (68 in the last year)
- Kind
- personal blog
- Feed
- https://newsletter.kentbeck.com/feed
2026 57
- Trust Is the Binding Constraint
- We're Renaming This Newsletter (and You Get First Word)
- Take My Toil, Leave Me My Struggle
- Decompose Run-On Tests
- Thinkie: Fix Time, Flex Scope
- Tools Aren’t Here to Make Us Feel Good
- Mathematicians, Here’s a Way To Think About Your Existential Crisis
- Formal Methods Pay Off
- Reject Change, Sometimes
- Baking a Model
- Busy is Short Volatility
- Speculative Short Volatility & Neglectful Short Volatility
- Canon 3X: Explore/Expand/Extract
- How Do You Know That?
- Long Vol: What is Volatility?
- Long Volatility Development
- The Beginnings of an Idea: XP is Long Volatility
- When Complaints Are Good News
- How Kent Beck shapes the software engineering industry
- Air Traffic Control
- The Cost YAGNI Was Never About
- Why So Literal?
- Smalltalk Genie
- Trust Factory
- Genie Lessons from Genie Sessions: Prose as a Programming Language
- Scope Is The Steering Wheel
- Hey, N00b, We Didn't Hire You to Complete Tasks
- Thoughts, Not Thinking?
- Adaptive Radix Tree
- Genie Sessions: Run, Right, and Fast for the Adaptive Radix Tree
- Genie Tarpit
- Genie Lessons: Nobody Wants Agents
- Passing Tests Bore Me
- Extreme Time Value of Money: Late-stage Career Planning
- Parkinson's
- The Bridge: Too Far
- Potpourri: Lessons from an AI Leadership Conference
- Starving Genies
- Genie Sessions: TCR Skill
- Tremors
- Why Your Progress Is About The Same As Everyone Else's
- Forest Thinning
- A few questions about what you're working on...
- Genie: Death of the Iron Triangle?
- Don't Accomplish Everything
- Earn *And* Learn
- Genie Session: Codex for Mac/GPUSortedMap
- Generation Gap or Just Rude?
- Labor Replacement is a Poison Pill
- Is Source Code Going Away?
- The Pinhole View of AI Value
- Can Genies Break Down Silos?
- Genie Sessions: Optionality
- Tidy Together Reboot
- Taming the Genie: "Like Kent Beck"
- Bridges
- My Fitbit Buzzed and I Understood Enshittification
2025 82
- The Precious Eyeblink
- Party of One for Code Review!
- The Bet On Juniors Just Got Better
- Explore *Then* Expand *Then* Extract
- Monday - Last Call on $180/Year
- Tidying: Canonical Order
- If You've Been Thinking About Subscribing to Premium...
- Why Does Development Slow?
- Intentions & Actions
- Composable Tests
- Pitching Hackathon Ideas: Oxymoron
- Getting Ready to Launch
- First Principles First
- Separate Failed Assertions from Unexpected Exceptions?
- Teaching Augmented Coding
- Programming Deflation
- Genie Fight
- Switching Scale
- Beyond the IDE
- Genies Getting Stuck
- Leaving the Nest
- Genie Fight
- New Is The New Black
- Cloud Development Environments Tame Complexity By Reducing State
- Match The Pipes
- Kent's Going Home
- Conclusion: Final section intro from Tidy Together
- Theory
- Management Section Intro: Tidy Together Chapter
- Tokens: The New Oil
- Preface to Tidy Together
- The First Feedback Filter
- Survival, Cash Flow, & Options
- Augmented Coding: Beyond the Vibes
- Return of Multi-tasking?
- Features & Options Revisited
- Augmented Coding: Coached by the Genie
- Me an' Algernon
- Augmented Coding: Copy/Paste Detector
- Functional Genie
- The Generalize Step In TDD
- Augmented Coding Technique: Copy From Simpler Language
- Copy From a Simpler Language
- Legitimate Peripheral Participation
- Free Idea: Train on Changes, Not on Code
- My Augmented Coding Tools As Of 16 May 2025
- Thinkie World Congress 1
- Persistent Prompting
- Genie Wants to Leap
- Augmented Coding is Good For Exploration
- The Platonic Database
- Augmented Coding & Design
- Why TDD Doesn't Lead to Dumb Code
- Design in TDD
- Augmented Coding: Negative Feedback
- One Pile
- Social AI Adoption: Lessons from Hybrid Corn
- When Should Visual Design Precede Implementation?
- Retrospective Performance Reviews
- Tidy Together Scope Trim
- Structure Folks & Feature Folks
- Hand-Drawn Illustrations
- How Long Should Functions Be?
- Deadlines in The Forest
- Reflecting on FnD: Parallel Universes
- The Threat of Incremental Delivery
- Caterpillar to Butterfly
- Anatomy of Oscillation
- How I Will Measure My Life
- Chapter Bundles of Options
- Options, Financial & Software
- Tidy First Example
- Developer Productivity Metrics: Education Necessary
- Measuring Programmer Influence, Kinda Sorta
- Remote Site Growth Is Not A Conquest Game
- Personal Site Refresh
- Additional Testing After Refactoring
- Meeting Prevents Exceeding
- Kent Beck: Illuminating the Pattern Language of Modern Life
- Moving On
- Bugs Optional?
- Managing Expand Projects
2024 127
- Complain & Propose
- Far Behind The Eyes
- Different Bests in Different Contexts
- The Explore That Cannot Fail Is Not An Explore
- Intentions & Actions
- “Best” Practices Ain’t...
- The Product Development Triathlon
- Measuring Lines/Function
- Refactoring: Narrow ↔ Widen Parameter
- Learning in the Forest
- One Hand On The Yoke
- Fruits & Roots
- Flying Solo
- Attracted To The Desert (Or The Forest)
- Forest & Desert
- In Praise of the Desert
- TT Chapter: Fat-Tailed Distributions
- The Captain Class
- Tidy Together Chapter: Long-Running Design Changes
- Moving Mental Mountains
- Background Work
- Why Insurance Companies Are Rationally Failing Their Social Purpose
- Safety & Freedom
- Profiting From (Some) Failure
- Which System?
- Constraints on Software Design
- Live Drawing
- Empirical Software Design Q/A
- Slow Deployment Causes Meetings
- Authority & Responsibility
- Mixing Design & Features—Experiment, Initiate, Sustain, Abandon, & Finish
- Old & Single & Unready to Mingle
- Chapter: Make It Run, Make It Right, Make It Fast
- Product is a Party, Not Chess
- The Life-Changing Magic of Tidying Up Code
- Scope Management 101
- Private Reflections on Founder Mode
- The Impossibility of Making an Elite Engineer
- The Founder Mode Tradeoff
- Example of Thinkie: Laughter
- Ad Hoc Infrastructure
- Corner Meet Paint
- Scrape Then Paint
- Enthusiasm: Managing Our Most Precious Resource
- Big Feet In Small Shoes
- No "We" in IC
- Humans >> Data
- Refactoring Catalog
- Software Is Bananas
- Refactoring: Constructor <-> Builder
- Game Over Absorbs Future Winnings
- Responsible Slack
- Refactoring: Boolean In Constructor <-> Subclasses
- Boolean Parameter To Switches
- A Loaf of Roadmap
- July Founders' Call: Monday, July 15
- The Economic Case for JUnit Max
- Standups: Individual → Teammate
- TDD is Not Hill Climbing
- Hinge
- Minimum Viable Product revisited
- "Good" Design
- The Trough of Despair
- TT? Chapter: Fields Object
- Start Presentations on the Second Slide
- The Documentation Tradeoff
- New Tidying: Reconcile Parameter Order
- TT? Chapter: Parameters Object
- Present Factory Chapter: The Incentive Paradox in Software Design
- Interceptors in JUnit
- TT? Section Intro for Refactorings
- Founder Call Friday, 7 June 2024, 0830 PDT
- Best Standalone Tidy First? Chapter?
- Coupling and Cohesion
- Why I Wasn’t Writing Tidy Together
- TT? Chapter: One Principle, One Technique
- Tidy Together? Outline
- Why Accelerate Deployment?
- Surprise Factory: Cohesion: Coupling’s B Side
- Sales Happen When Buyers Fear Missing Out
- (Revised Surprise Factory Chapter) Coupling: Why Software Costs So Damn Much
- Stretching Your TDD Skills
- The Saff Squeeze
- One At A Time
- Untangling Spaghetti: Debugging Non-Terminating Object Programs
- AI & Software Development 2
- AI & Software Development
- To Test or Not to Test? That’s a Good Question
- Getting There From Here
- TDD's Missing Skill: Behavioral Composition
- Surprise Factory--Coupling: Why Software Costs So Damn Much
- Design is an Island
- Features & Design: Both Essential & Yet Mutually Exclusive
- The Open/Closed/Open Principle
- Features & Design: A Dance of Contrasts
- Money Shapes Design: The Economic Drivers of Software Development
- Productive Compliments: Giving, Receiving, Connecting
- The 3X Model - The Sensible Path to Chaos The Genesis of the 3X Model
- The Tale of Two Teams
- Tidy First? in One Page
- Crazy Idea: Tidying Wrasse
- Rent-a-Kent for "The Pleasure of Pattern"
- The Pleasure of Pattern
- Rent-a-Kent for Mastering Programming
- Mastering Programming
- Rent-a-Kent for Front-End Vs Back-End Post
- Front-end Versus Back-end
- Dissecting a Case of Imposter Syndrome
- It Didn't Happen, It's Not That Bad, It's Your Fault Anyway
- Exploring AI
- ChatGPT's Second Derivative
- Inserting Logic: Improving My Problematic Behavior Starting at the Roots
- Your Outcomes From Tidy First?
- History of This Newsletter In One Chart
- Tradeoff Booklet: Example Potpourri
- My Sustainable Newsletter
- Free Idea: Analyze Test Runs
- I Learn a Surprising Lesson About Human Motivation
- A New Literature
- Debut of Rent-a-Kent
- Productivity Measurement as a Tradeoff
- Gathering Twigs for My Nest
- January Founder's Call
- Niklaus Wirth: 1934-2024
- The Book is Now the Vinyl of the Intellectual Life
- Request for Examples: Pass-Through Interface
- Professional Pricing
2023 83
- Maybe Accumulating Employees is a Core Competency
- The Surprise Factory
- Tradeoff Booklet: Tradeoff Decisions
- Not My Money Any More: Lessons from Poker 4
- Canon TDD
- Recommending Kent Beck: 2011
- December Founders' Call
- TDD Isn't Design
- Expanding Myself to Nothing
- TDD is Kanban for Code
- Just Ship, Baby
- Taming Complexity with Reversibility
- Business Evolution
- TDD Outcomes
- Idea: CodeFeed
- Pulling Practice, Not Pushing
- "Testing" Structure Changes
- Idea: LayoutFeed
- TDD Prerequisites
- Founder call details
- Private Estimates, Public Progress
- Founder Call: Book Launch Party!
- Idea Portfolio
- To Design or Not To Design?
- Why Software Design Matters
- First One, Then Many
- Book 2 Topics?
- Coding in the Debugger
- Timing
- Helping Geeks Feel Safe in the World
- Don’t Cross the Beams
- September 2023 Founders Call
- Dimensions of Power
- Incentives: The Hits
- A Career Accounting
- Measuring developer productivity? A response to McKinsey 2
- Kent Beck: Business
- Measuring developer productivity? A response to McKinsey
- Founders' Call
- Effort/Output/Outcome/Impact, Take 2
- Ergodic Development
- Design Intuition
- Book Editing
- Publish Everything (Pretty Much)
- Idea To Impact
- Eventual Business Consistency
- Ergodic: Good Thinkie, Awful Name
- State of Tidy First?
- Emotions: A Code Book
- Envy Brings a Lesson
- Fresh Work 80/15/5
- Accounts & Transactions
- Snapshot Testing
- Paint Drip People
- Code “Smells”?
- When Did It Happen? When Did We Find Out?
- Invite your friends to read Software Design: Tidy First?
- Never Forget
- What If You *Are* Going To Need It?
- Confusion to Sense to Boundaries to Leverage
- Two More Implementation Patterns
- Barry "Prof Barry" Dwolatzky, April 29, 1952-May 16, 2023
- Abstract vs. Concrete Parameters
- Appreciating Your Way to XP
- Bet On Growth
- More What, Less How
- 90% of My Skills Are Now Worth $0
- Why "Empirical"?
- Examples Needed: Reading Order & Cohesion Order
- Thinking About Code Review
- Why Write "Tidy First?": Personal Coda
- Why I Came to Write "Tidy First?"
- How I Came To Write "Tidy First?"
- Fool Proof Design
- Accountability is Not Blame
- Boss/Employee is not Exactly a Prisoners' Dilemma
- Scaling Extreme Programming: Dependencies
- Signaling Cooperation: Employee's Dilemma
- Responsibility
- Delay Versus Friction
- Design Play at Work
- Sign-up Versus Assignment
- Design Play
2022 72
- The Pie Problem
- Team Matching Creates Incentives
- The Story of A
- Performance Review Incentives
- Underpaid Programmers
- Distinctions With A Difference
- Sources of Friction, Sources of Harmony
- Conclusion
- Cohesion: ...And Elements That Aren't Coupled Go Elsewhere
- Downside of Design as Increasing Cohesion & Reducing Coupling
- Next Book Topics?
- Push Back, Finally!
- Cohesion
- Musing: Aligning Authority & Responsibility
- Coupling
- Beneficially Relating Elements
- Final Push To First Draft
- Options Versus Cash Flows
- Options
- Behavior Change = Revenue Versus Structure Change = Option
- A Dollar Today > A Dollar Tomorrow
- Economics: Time Value & Optionality
- Discarded Chapter: Time Value of Money
- Constantine's Equivalence
- Reversible Structure Changes
- Geographic Compensation Will Lose
- Tidying Versus Sooner
- Better?
- Better/Sooner/Cheaper/More
- First, After, Later, Never
- Rhythm
- Sooner Versus Longer
- Batch Sizes
- Summer Hiatus
- Tidying: Move Declaration & Initialization Together
- Theory Outline
- Structure & Behavior
- Section: Theory
- Earning to Write, not Writing to Earn
- Relationships: Non-geeks, Geeks, & Self
- I'm Having Trouble Writing
- Getting Untangled
- Chaining
- Managing
- Management: Separate Tidying
- Sketching the Management Section
- Tidying: One Pile
- Tidying: Extract Helper
- Perverse Incentives of Retrospective Promotions
- Tidying: New Interface, Old Implementation
- Tidyings are Almost Done
- Tidying: Chunk Statements
- Explaining Constant
- Explaining Variable
- Self, Team, Product
- Explicit Parameters
- Cohesion Order
- Normalize Symmetries
- Reading Order
- tl;dr Cohesion
- tl;dr Coupling (& later Cohesion)
- Add Comment
- Delete Redundant Comment
- Prototype Tidying Example Leaderboard
- Tidying Example Bounty
- Obligation: Incentive to Write
- What to Expect as a Paid Subscriber
- Tidying: Dead Code
- TF? Book Outline
- Book Writing Resumes
- Guard Clause
- Desirable Unit Tests
2021 34
- Fixed Equity Grants Become Toxic
- Accountability in Software Development
- No-compensation Ratings
- Ratings as Incentives
- Incentives Change Marginal Behavior
- Change
- Authority, Responsibility, Blame, Accountability
- Make It Run, Make It Right II
- Geek Incentives Manifesto Expanded
- Jocelyn Goldfein Hits the House
- Collaboration Incentives
- Make it Run, Make it Right
- Lumpers & Splitters
- Waze Founder's Comments, Space of All Incentive Systems
- Patterns of Performance Review & Compensation
- Incentives Not To Invest In Structure
- Follow the Incentives, Waze Edition
- Incentives >>> Money
- Geek Incentives Clubhouse Debut with Keith Adams
- Beneficially Relating Teensy-tiny Elements
- Mysteries of Geek Incentives
- It's Not Programming
- The Geek Incentives Manifesto
- Structure & Behavior PRs
- Structure & Behavior
- Beneficial Relationships
- Elements All The Way Down
- Software Design Dilemmas: A Survey
- Chunk Size
- Discuss fixed tidying budget
- 30% Tidying?
- Mind-sized Chunks
- Welcome to "Tidy First?"
- Software design is an exercise in human relationships.