Untangling Spaghetti: Debugging Non-Terminating Object Programs

Make an understandable mess, fix the bug, then make it easier to understand | Continue reading


@tidyfirst.substack.com | 10 days ago

AI & Software Development 2

2 more missing topics | Continue reading


@tidyfirst.substack.com | 13 days ago

AI & Software Development

Raw Thoughts | Continue reading


@tidyfirst.substack.com | 14 days ago

Thinkie: Self-description

I apologize for this coming out late. I had mis-scheduled an earlier Thinkie & thought I already had this week covered. We are moving now into Thinkies that I call “models”. “Analogy” might be a better word. “If this were an X, then the logical consequences are Y & Z.” There is p … | Continue reading


@tidyfirst.substack.com | 15 days ago

To Test or Not to Test? That’s a Good Question

First published August 2014. For context JUnit Max was a commercial product I produced that is still the best test runner I’ve ever used. It gave sub-second feedback every time a file was edited & reported test failures in a way that looked like syntax errors. No more switching b … | Continue reading


@tidyfirst.substack.com | 20 days ago

Getting There From Here

Getting ramped up to write book 2 & I keep thinking of book 3 topics. I’ll record them with you so I have them some place & so you know a bit about what is coming. (Oh, yeah, gotta finish Surprise Factory first too. Busy busy.) The theory section of book 3 is going to go as deep … | Continue reading


@tidyfirst.substack.com | 22 days ago

Thinkie: Latency Or Throughput?

Pattern: someone says, “We need to go faster!!!” (yes, 3 exclamation points!) Transformation: ask “latency or throughput”. They’ll say “both”. Keep asking until you get an answer or you learn that the organization refuses to distinguish. Latency is the distribution of times from … | Continue reading


@tidyfirst.substack.com | 23 days ago

Thinkie: Reduce Utilization

Pattern: We need to get more done but we’re already busy as we can be. Transformation: What would happen if we reduced utilization? Reduce Utilization is based on Kingman’s Formula which states the unintuitive (to many folks) result that as utilization of a rate-limiting resource … | Continue reading


@tidyfirst.substack.com | 1 month ago

Thinkie: Reduce Variance

Pattern: you aren’t responding to change in time. Everyone is pushing to get more done. Transformation: how would you reduce the variance in your work, even if that would “take longer”? In Reduce Utilization we saw that pushing utilization too high impedes the ability to respond … | Continue reading


@tidyfirst.substack.com | 1 month ago

TDD's Missing Skill: Behavioral Composition

I appreciate Mr. Zakharchenko’s extensive critique of TDD even as I have some reservations regarding his language. He tried TDD. He thought about it. He put his thoughts out there. He knew he was going to get a reaction & he did—300K views, 160 comments, 190 reposts, 1000 likes. | Continue reading


@tidyfirst.substack.com | 1 month ago

Thinkie: Grow *Then* Split

Pattern: You are creating something that will end up with many elements & you are stuck on where to start. Transformation: Start with one tiny element. Grow it. When it gets uncomfortably large, split it along the revealed natural fault lines. The “natural” tendency is to say, “W … | Continue reading


@tidyfirst.substack.com | 1 month ago

Surprise Factory--Coupling: Why Software Costs So Damn Much

Thank you all for the feedback on the previous chapter. I think the result is much improved. This week we have the technical meat of the briefing—coupling. Should the gears analogy be up front or where it is? Why does software, seemingly straightforward at the outset, morph into … | Continue reading


@tidyfirst.substack.com | 1 month ago

Thinkie: Upside/Downside

Pattern: you’re faced with an evenly-balanced decision Transformation: list the upside & downside consequences of the decision. Upside & no downside? Do it. I know this one sounds trite, but stay with me. When I’m facing a decision, even something as trivial as “should I post thi … | Continue reading


@tidyfirst.substack.com | 1 month ago

Design is an Island

First published April 2009. This was a period when I was working consistently on the material that would become, a decade and a half later, Tidy First?. If design is responsive motion in a space of all possible designs, then some designs are acceptable and some are not. Designing … | Continue reading


@tidyfirst.substack.com | 1 month ago

Features & Design: Both Essential & Yet Mutually Exclusive

I got great feedback that the previous version of this chapter relied too heavily on analogies. Here it is written in a more straightforward style. If you’re an executive, does this work better for you? If you’re not, would you feel better handing this to an executive? | Continue reading


@tidyfirst.substack.com | 1 month ago

The Open/Closed/Open Principle

First published June 2009. I still see folks making this mistake—”design good APIs”. Sure, fine, but what about when the APIs turn out not to be good? Or they were good but now they’re not? In addition to drawing boundaries between elements, we need to also be prepared to periodi … | Continue reading


@tidyfirst.substack.com | 1 month ago

Thinkie: Envelope Calculation

Pattern: You see some data. Do they matter? Transformation: Do the math to put the numbers into context. Gergely’s post reminded me of this Thinkie. 350K H100s. Is that a lot or a little. Almost 20% of worldwide units? Thats a lot!!! Envelope calculations aren’t complicated math. … | Continue reading


@tidyfirst.substack.com | 1 month ago

Features & Design: A Dance of Contrasts

Chapter 4 of The Surprise Factory | Continue reading


@tidyfirst.substack.com | 1 month ago

Shift Left & Right

Trigger: You have a multi-stage process with handoffs & you’d like to eliminate a handoff Transformation: Look at the value realized by person handed off to. What would it take for someone else to realize that value earlier or later in the process? The classic example is the rela … | Continue reading


@tidyfirst.substack.com | 1 month ago

Money Shapes Design: The Economic Drivers of Software Development

Share this with you favorite executive. It’s the third chapter of the executive briefing on Tidy First? called The Surprise Factory. If they don’t want to miss further draft chapters, they can subscribe at a discount below. Somehow, software development got disconnected from econ … | Continue reading


@tidyfirst.substack.com | 2 months ago

Productive Compliments: Giving, Receiving, Connecting

First published July 25, 2018 An early reviewer pointed out that what follows depends substantially on acting from a position of privilege. Absolutely. What appear to be compliments can be assertions of power, & people with less power need to treat them differently than people wi … | Continue reading


@tidyfirst.substack.com | 2 months ago

Thinkie: Work/Wait Ratio

Trigger: you have a multi-step process where responsibility moves from person to person (or organization to organization) Transformation: trace a typical recent work item through the process. Add up the time spent actually working on the item & the time the item spends waiting. D … | Continue reading


@tidyfirst.substack.com | 2 months ago

The 3X Model - The Sensible Path to Chaos The Genesis of the 3X Model

Here is the draft of chapter 2 of the executive briefing on Tidy First?, called "The Surprise Factory. I want to alert executives to the options value of software & the role of software design in preserving & expanding those options. Feel free to share it with an executive of you … | Continue reading


@tidyfirst.substack.com | 2 months ago

Thinkie: Separate Observation From Judgement

Trigger: You are getting carried away in your reaction to a situation. Transformation: List the externally observable facts about the situation. With the list in hand, judge the situation. Say I’m getting feedback face-to-face with my boss. I don’t like what they are saying. I st … | Continue reading


@tidyfirst.substack.com | 2 months ago

The Tale of Two Teams

First chapter of an executive briefing on Tidy First? | Continue reading


@tidyfirst.substack.com | 2 months ago

Tidy First? in One Page

From the coming executive briefing | Continue reading


@tidyfirst.substack.com | 2 months ago

Crazy Idea: Tidying Wrasse

Read more | Continue reading


@tidyfirst.substack.com | 2 months ago

Rent-a-Kent for "The Pleasure of Pattern"

Read more | Continue reading


@tidyfirst.substack.com | 2 months ago

The Pleasure of Pattern

First published 2010. I stand by this observation although I’d love to learn more about the neuro-chemical mechanisms that might support it. Studying poker has helped me crack a long-standing (maybe 20-year-old) puzzle for me: why are so many programmers musicians? I’ve sang and … | Continue reading


@tidyfirst.substack.com | 2 months ago

Thinkie: Special-Cause Versus Common-Cause Variation

This is a process control Thinkie taking from Deming. Trigger: A process has gone haywire for some reason. Transformation: First decide if that reason happens repeatedly or just this once. React accordingly. One class of mistakes comes from not paying attention to a process. Some … | Continue reading


@tidyfirst.substack.com | 2 months ago

Rent-a-Kent for Mastering Programming

Read more | Continue reading


@tidyfirst.substack.com | 2 months ago

Mastering Programming

FEBRUARY 5, 2016 · FACEBOOK This was one of those posts that I threw together, thought nothing of, & then it blew up. Until recently this was my most-read post ever. From years [decades] of watching master programmers, I have observed certain common patterns in their workflows. F … | Continue reading


@tidyfirst.substack.com | 2 months ago

Not My Money Any More: Lessons from Poker 4

First published January 2010. This one holds up, I think. Here is my first lesson from poker. I take that back. My first lesson from poker is when two strangers ask if they can join the game, lose a little all night, then offer to cut the cards for $100 as the game is breaking up … | Continue reading


@tidyfirst.substack.com | 4 months ago

Thinkie: Parallel Decision

The final decision-related Thinkie, joining Force Decision & Defer Decision. Pattern: You have to decide between 2 alternatives, the decision is unclear, & the stakes are high. Transformation: Why not both? I first learned this Thinkie when talking to Ward Cunningham. The web was … | Continue reading


@tidyfirst.substack.com | 4 months ago

Canon TDD

Write a list of the test scenarios you want to cover Turn exactly one item on the list into an actual, concrete, runnable test Change the code to make the test (& all previous tests) pass Optionally refactor to improve the implementation design Until the list is empty, go back to … | Continue reading


@tidyfirst.substack.com | 4 months ago

Goldilocks & The 3 Tradeoffs

This is why I hate writing outlines too early. The clear next chapter didn’t fit the outline. Oh well. You’re seeing the real process in real time. I also need more early material on why you might care about tradeoffs. People need emotional energy to change as well as ideas about … | Continue reading


@tidyfirst.substack.com | 4 months ago

Coding in the Debugger

In-situ Programming | Continue reading


@tidyfirst.substack.com | 7 months ago

90% of My Skills Are Now Worth $0

...but the other 10% are worth 1000x | Continue reading


@tidyfirst.substack.com | 1 year ago

Why "Empirical"?

In "Empirical Software Design" | Continue reading


@tidyfirst.substack.com | 1 year ago

Signaling Cooperation: Employee's Dilemma

I’m assuming you’ve heard of the Prisoners’ Dilemma. My summary: 2 people are arrested. If neither tattles they both go free. If one tattles & the other doesn’t, the tattler goes free & the other person goes to jail for a long time. If they both tattle, they both go to jail for a … | Continue reading


@tidyfirst.substack.com | 1 year ago

Software design decisions are (mostly) reversible

What's the difference between a bad haircut & a bad tattoo? The bad haircut grows out but the bad tattoo is forever (well, not forever forever, but way harder to undo). How are structure changes different from behavior changes? One property, relevant to "Tidy First?" is that stru … | Continue reading


@tidyfirst.substack.com | 1 year ago