Make an understandable mess, fix the bug, then make it easier to understand | Continue reading
2 more missing topics | Continue reading
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Chapter 4 of The Surprise Factory | Continue reading
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
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
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
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
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
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
First chapter of an executive briefing on Tidy First? | Continue reading
From the coming executive briefing | Continue reading
Read more | Continue reading
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
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
Read more | Continue reading
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
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
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
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
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
In-situ Programming | Continue reading
...but the other 10% are worth 1000x | Continue reading
In "Empirical Software Design" | Continue reading
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
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