TDD

TDD Pro-Tip: TDD & Refactoring Are Intertwined Life-Game

TDD Pro-Tip: TDD and refactoring are permanently intertwined activities, neither of which can be grasped all at once, so start learning how to write tests at the same time you’re learning how to change code w/o adding bugs to it. Some activities are what I think of as "life games". The better you get at it, the more there is to learn. I call them games, cuz my first two noticed experiences of this were in the games of pool […]

TDD Pro-Tip: TDD & Refactoring Are Intertwined Life-Game See Full Post

TDD Pro-Tip: They Work For You, Not You For Them

TDD Pro-Tip: remember who works for who, and shape your tools to your hand, not your hand to your tools. (Btw, these tips are in no particular order. If you want to know the truth, i’m musing them as I do them. People always know more than they can say, and i’m no exception, but i’m digging at what I do over and over, and sharing it.) One difference I see over and over between noobs and olbs is the

TDD Pro-Tip: They Work For You, Not You For Them See Full Post

TDD Pro-Tip: Suspect Demeter Chains

TDD pro-tip: demeter chains are anti-microtestable. What is a demeter chain? It’s code where we talk to a collaborator’s collaborator. U can look up the origins of the name in your copious free time, but in regular code, it looks like this: x = a.b.c.d.e.f; each one of those dots is a link in a demeter chain out of whatever the object is that contains that assignment. A is our direct collaborator. We might have been passed her, or given

TDD Pro-Tip: Suspect Demeter Chains See Full Post

TDD Pro-Tip: Time Needs Technique

TDD pro-tip: any "time" u refer to a clock, be on the lookout. It’s a time — I just can’t help myself — to seriously microtest your way through. If you have to talk about "now", consider whether you want to be able to pass a clock rather than call the system. For the price of an additional argument, you get perfect testability. The price of resistance? Your now-based object will have to be thought about every time you place

TDD Pro-Tip: Time Needs Technique See Full Post

How TDD Makes Change Faster

We spoke of two questions in the recent re-visiting of the money premise. How/why does TDD make changing layered branching logic faster? What’s the capital outlay to change to it? I’ll stall a little further on 2, but let’s do 1. Some provisos before we get started, and they’re pretty important. Proviso #1 We are speaking here of a particular kind of test applied at a particular time during development, specifically, microtests applied right before (and sometimes right after) the

How TDD Makes Change Faster See Full Post

We’re In TDD For The Money

This entry is part [part not set] of 9 in the series Underplayed Premises

Time, this morning, to return to the underplayed TDD premise called the money premise. In one phrase: "We’re in this for the money." What does that mean? In the software business, like every other business in a long period of very high demand, we make more money when we ship more value faster. Please be careful here. When we say "more value faster", we’re not trying to constrain the possible varieties of value. THIS IS AN INCREDIBLY IMPORTANT THING TO

We’re In TDD For The Money See Full Post

Parsing Expressions, TDD, and the Big Why

So, for those following along, the other day I had to decide whether to roll my own parser for boolean expressions involving tags, like "(stinky & doofus) | (ugly)". Very standard stuff. In the end, I rolled my own, and I have to tell you, I just had a really wonderful time. A parser for strings is an absolutely awesome place to do TDD. They’re just strings. No clever fakes, no extract & override, nothing. Just strings. I hadn’t done

Parsing Expressions, TDD, and the Big Why See Full Post

The Technical Meaning Of Microtest

I write things called "microtests" to do my development. Doing this yields me greater success than I’ve had using any other technique in a 40-year career of geekery, so I advocate, wanting to share the technique far & wide. Before we can talk seriously about how or whether this works, we need a strong grasp of what a microtest is and does, from a strictly technical perspective, w/o all the trappings of the larger method and its attendant polemic. A

The Technical Meaning Of Microtest See Full Post

TDD & The Lump Of Coding Fallacy | Video

Hey, it’s GeePaw, and if you’re just starting to look at TDD, refactoring, the modern technical synthesis, we need to start with a couple of minutes about the Lump Of Coding fallacy. You’re a working geek: you spend your days coding for money to add value to your company. And one day some random schmoe like me comes up to you and says, hey friend you really ought to try TDD, because that value that you’re adding, you could have

TDD & The Lump Of Coding Fallacy | Video See Full Post

TDD: Resist Integration Tests

The expense of an integration test can be extremely high. Consider the contentment app. This app makes drawings 1) that distribute across time, as if they were being drawn live in front of you, 2) that are generated stochastically, 3) with a "pixel-inaccessible" framework. Now, it’s important to understand that none of these problems are insurmountable. Before you tell me how you’d surmount them, let me tell you how I could. 1) screw time. Rig it so it draws as

TDD: Resist Integration Tests See Full Post

Scroll to Top