Microtest TDD is a "way of coding", not an after-market bolt-on to old-school approaches, and as a result, we have to constantly intertwine our conversation about technique with our conversation about transition.
Geekery's fun for me, and it's comforting, but it's not the most important story going on around us. Enjoy this thread, but please keep working for and supporting change in the world.

Black Lives Matter.
Technique, skills, philosophy, theory, all of these are tremendous delights to me. I love to muse & mull & illustrate & analyze & argue & point, and I greatly enjoy doing it on the topic of the modern synthesis in software development.
But all of this explication & analysis is about a framework of related ideas. And that body of knowledge is a "there", a point on the time horizon we can orient towards.

We, the trade, well, we're "here".

How do we move from here to there?
Because it doesn't matter what color the walls are painted in the City on the Hill if we can't find a path that takes us toward it.
I've been a software development coach for 22 years, working with teams in transition towards some flavor of agility, or some technique sheltering under its umbrella. Dozens and dozens of teams, around the world, in every kind of domain & tech stack.
My experience report: I have seen gigantic failures, jumbo failures, extra-large failures, very broad failures, very deep failures, regular failures, small failures, and a handful of successes.

(Seen & sometimes participated in.)
The hallmark of nearly every failure I've seen: trying to install something as thick, rich, nuanced, and complicated as TDD in a single instant step.
No. It just doesn't work. It'd be cool if it did, but it doesn't, it really doesn't.

And I have tried harder, and seen many people try harder, and I think it's time to try different, not harder.
We need an approach to "TDD-izing" an individual, a team, an org, that is a slowly unfolding DAG that we can move ourselves, our code, and our process along, effectively creating a network of paths & trails that will bring us, inch by inch, closer to the City on the Hill.
Today, I want to sketch it broadly, to try and give you a feel for where I'm headed. Here are some of the attributes I want to emphasize.
1) Voluntarism. Most of the failures I've mentioned before have had close to their root the cause that the people having to do the work did not think the work was worth doing.
If you accept as I do that TDD is really a worldview change at least as much as a technical one -- I think you'd have switched off the GeePaw channel in disgust a long time ago if you didn't -- then it should be obvious: you can't order people to shift their paradigm.
2) Partialism. If you're a pro, the odds are good that you're working in a codebase that is far larger than can ever be altered in a "flip a switch" way. It could be 20k lines, or 3m lines. It doesn't matter, it's *still* too many lines of code to change in one pass.
We need to take pieces, small pieces, & move them, one at a time, from "here", to our next staging point. We will have a mixed system, parts of which fit our current definition of righteousness, parts of which don't, for a long time, & we need to work w/that.
3) Iteration. Those staging points, they're not the City on the Hill. They're just camps on the path. And we won't be moving them one time, we'll be moving them from point to point, several times, over a long period.
An important aspect: this isn't just about the code, it's about us, too, as individuals, teams, and our process. What I thought "righteous" was forty years ago, versus 30, 20, even 10, well. It is to laugh. And the code didn't change, *I* did. We will, too, over time.
4) Demarcation. At any given time, elements of our system will be in various states, and those states aren't a hierarchical partitioning of the space, they're attributes, tags. We need to know what things have what tags, and to do so relatively quickly & effortlessly.
If I have a piece that is "righeous" -- has all the current best tags we have -- I never want to make it "unrighteous". I might go sideways, but I don't want to go backwards. And I also don't want to re-judge that for every new piece I work with.
5) Experimentalism. Next to ordering people to do things they don't think are worth doing, the next greatest cause of failure is premature commitment to a tool or a technique. We want our approach to unfold as a conscious series of experiments.
Not only is it easier to sell & explain experiments, it's far safer. At any given time, some of our pieces will have tags we're not even sure we like yet. "So far, so good" is cool, but it can be said by a person who jumps off a cliff right up to the moment when it can't.
6) Opportunistic. One of the challenges every working professional developer has to wrestle with: "when do I deal with this?". We want our approach to emphasize the answer "when you're ready".
Real programmers work for a living. To do so, they must provide a steady stream of value. They don't always have time or energy or money to do the things they know would be better. But they *sometimes* do. And when they do, we want to be there.
7) Patient. Above all, patient.

No elaboration here, except to say:

A pig like that, you don't eat all at once.
So.

This is where I'm headed. I think the way forward for me is to take these attributes and apply them to formulating the way forward for others.
In coming muses, I'll be trying to combine technique with transition, elaborating both, intertwingled, because I think it's the only way forward that might work. Voluntary, Partial, Iterated, Demarcated, Experimental, Opportunistic, and Patient.

I'm daunted, but cheerful. :)
Thanks for following on. Todoay I'd ask three things of you, if you like my work.
1) Subscribe. It's free, it's spam-free, and you get full-text or audio. Subscribers help me keep the juice.

geepawhill.org/subscribe
2) Join in. I read every reply & comment, and there's a slack of folks who want to be more active in the effort.

geepawhill.org/camerata/
3) Please keep working for and supporting change, in the trade and out of it.

Not only can we change this trade and this society, we're the *only* thing that can.

Please do what you can.

Black Lives Matter.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with GeePaw Hill

GeePaw Hill Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @GeePawHill

13 Feb
Townes Van Zandt. "Pancho & Lefty".

I spill a little beer for TVZ.
Jesus.

That's all. Just. Jesus.
Read 4 tweets
13 Feb
Jumping forward 60 years, here's Indigo Girls, "You Left It Up To Me".

This one. Ai ai.

These women, roughly contemporaneous with me, have narrated my entire adult life. I have no real distance with which to critically evaluate them.
Not only do they have harmonic skill that usually depends on genes, their harmony is *insanely* slurry, above & below the note in perfect correlation.
Read 4 tweets
13 Feb
This is Tommy Johnson, covering Charlie Patton's "Big Road Blues".

Patton is widely regarded as the "father" of Delta blues. Certainly, he was the first well-known professional country blues player. Composer, or liberator, of many songs that came to the canon, like this one.
He was also a well-known *trick* player. He'd put the guitar behind his head, or under his leg.

He had a travelling show, the first ever with advance men, posters, and reserved theaters.
Read 4 tweets
13 Feb
If 30 people say they want me to twitch the first 100 cycles of an ONI game, I will do it. Say yes by just responding with "yes".
Okay, so that's a done deal. Sometime in the next week we'll twitch the first 100 cycles of an ONI seed. Now I just gotta figure out when. Stay tuned, I'll give a couple of days warning and several tweet announcements.
I'm looking at Thursday, 5 pm Eastern.
Read 4 tweets
12 Feb
ONI: I had another seed, but I was in low-bandwidth location featuring the very real & dark possibility of cannibalism, so I couldn't share. Anyway, I still have two days more off, and now I'm home, so let me share.

It's c267. Image
Features: My increasingly standard base, 8 beds wide, 16 dups. Directly below it is the industrial brick, which I'm really just now turning on full. West of the base are 4 hatch ranches and a full rodriguez, cooled by the AETN below it, and watered by that huge ph2o cistern.
East of the base is the drecko rig, below that the remnants of my starter power + industry area. Down below in the oil, I once again went straight for a petroleum boiler. By chance, I seem to have gotten the counterflow exactly long enough, oil's dripping in at 398c, perfect. Image
Read 57 tweets
7 Feb
In microtest TDD, we describe collaborations as "awkward" or "graceful". The distinction is critical to understanding how the Steering premise and the Pieces premise work together to make TDD a productivity tool. Let's dig in.
Here in the states, it's Black History month. I urge my friends and followers to pay attention: American history and Black history are deeply & painfully intertwined, and we won't move on until we go through.

Black Lives Matter.
We talked the other day about understanding & manipulating dependency in microtest TDD. The awkward/graceful distinction is at the heart of this. It can be a long journey to get it all, but it *starts* as soon as you take TDD for a spin in your day job.

threadreaderapp.com/thread/1355919…
Read 31 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!