Alan Ridlehoover 

153 Followers
148 Following
304 Posts
Empathetic leader (@ Cisco). 

Passionate Rubyist.
 
Fallible human. 

Storyteller. International speaker.
Environmentalist. Feminist. Ally. 
Swell photographer. Rusty drummer.

Loving twins dad and husband. 

Owner of too many hats, given I only have the one head.
Pronounshe/him
Open Sourcehttps://firsttry.software
Bloghttps://the.codegardener.com
Speaker Profilehttps://sessionize.com/aridlehoover

If your codebase were an automobile, what kind would it be?

A sports car?
A minivan?
A pickup?

Regardless, if you let complexity sneak into your codebase, you'll be driving with one foot on the gas, and one on the brake. The more complex, the harder you're pushing.

Simplify your code. Take your foot off the brake.

@zenspider that’s cool! I haven’t seen that model before. But it totally makes sense. How might that work as it scales? 1 engineer, 10, 100, 1000?

"Red, green, refactor" promotes premature abstraction.

Ward Cunningham once answered the "how do you convince management to refactor?" question with: "I don't. I give them two estimates—time to make room for the feature, then time to add it."

He refactors before starting the next user story, not after. The last responsible moment.

Some-teen years later, I connected the dots. I wrote about the workflow I use instead: https://the.codegardener.com/red-green-premature-refactor/

Red, Green, Premature Refactor

"Red, green, refactor" promotes premature abstraction. I had all the information to come to this conclusion 20 years ago. I'm embarrassed to admit how long it actually took. What makes me say that? Well, sometime between 2003 and 2005, I met Ward Cunningham at a Seattle Extreme Programming Users Group

The Code Gardener

@benjamineskola
I’ve personally used Claude to build working software in a day that would have taken me a week alone, because I would need to go learn a specific skill.

I’ve used it to make things I didn’t know were possible before I started chatting with it.

I’m not saying it’s perfect. But when did you last use AI?

@benjamineskola
Are you familiar with NASA’s transition from human to digital computers circa 1960? Dozens of mathematicians were laid off. Others thrived for decades. The key? Domain expertise. The computer could calculate. It could not formulate.

How does that relate to today? AI does the typing faster. It does not know your domain. It also needs the same kind of code quality guardrails as humans. That’s where our domain expertise and standards come in. AI needs us.

Code comments

Are you a builder who prioritizes shipping software? Or are you a craftsperson who prioritizes well designed code?

It’s a false choice.

You get more done with well designed code and tests than you do without. Craftspeople move faster than Builders who eventually grind to a tech debt induced halt.

@zenspider Hey, Ryan!
I use coverage (line+branch) to tell how safe it is to refactor, not how safe I am from bugs. I use flog to tell how bad I need to refactor. I use churn to tell whether or not a class is open/closed.

Try being that nuanced with an exec who only cares about Sev1 reduction. You’ll see why I answer that way.

Have you ever been told by an executive that test coverage past 80% produces diminishing returns?

Have you asked them which 20% you should not test?

Have they ever given you an answer?

Hot take: Developers who are happy to complain about friction within a process, generally don't lift a finger to resolve it.