#EvolutionaryDesign

J. B. Rainsberger (he)jbrains
2026-01-22

When one part of a function is not changing while you're repeatedly changing another part, this is a signal to consider breaking that function into two pieces: the stable part and the unstable part.

This isn't a law, but merely a helpful guideline.

2024-01-29

#EvolutionaryDesign is one of the software development approaches I value the most. For years I've struggled to have a simple place to point folks to explain what I mean by the term, so now I've put it down in a brief blog post.

I hope to write more about this soon, but I wanted to get this out there to get started.

codingitwrong.com/2024/01/29/b

Karsten Schmidttoxi@mastodon.thi.ng
2023-10-09

When I grow up, I (still) want to be like Theo! His creatures are becoming ever more complex, elegant & marvellous....

youtube.com/watch?v=iWGlbpEZkN

🔥🔥🔥

#KineticArt #GenerativeArt #EvolutionaryDesign #Strandbeest

2023-08-03

DevLog 009: Improve timeline scrubbing

... This passes the tests, and when I try it in the application, it works as intended.

Are we done?

rickardlindberg.me/writing/dev

#python #evolutionarydesign

J. B. Rainsberger (he)jbrains
2023-06-08

The "Test Helper to Production Code" pipeline: one pattern.

Custom assertions become comparison operators become summary values become domain concepts.

2023-05-21

#EvolutionaryDesign means you trust your ability to respond to change more than you trust your ability to predict the future.

#Agile

2023-05-12

#EvolutionaryDesign is a "good strategy" approach to design. Focus on the core, and only the core, of the problem first and then iterate. Attempting to anticipate all design issues upfront is "bad strategy".

2023-02-07

We needed to extend a component with new behavior. Rather than trying to _think_ our way forward by designing something clever, we created a copy and added the new behavior there.

Yes, copy and paste. Loads of duplication. Then we made the code work, with nested if-else blocks. Yucky, but it worked.

THEN we went to town, doing mostly mindless #Refactoring. It was like the Gilded Rose #CodeKata, but in real life! #EvolutionaryDesign

J. B. Rainsberger (he)jbrains
2022-12-25

@tonybyrne @davetron5000 Indeed. Thinking in labels (such as that) causes a new class of problems, which I've spent decades trying to avoid. :)

One nice aspect of involves growing increasingly comfortable with imperfection, such as unfamiliar code or two design approaches in the same code base.

Jakub Zalasjakub_zalas
2022-12-07

or ? I believe it’s a bit of both as I always bring in my past experience and have some design in mind before I start to . I also evolve the design as I learn more about the domain and listen to what my tests are telling me.
Here’s a 2007 discussion between Jim Coplien and Uncle Bob that prompted me to write this: youtu.be/KtHQGs3zFAM

J. B. Rainsberger (he)jbrains
2022-12-05

Further to my recent discussion about / in design, I remember asking this question at a SoCraTes event in Rochegude, France:

"Are method/function expectations an disease?"

(Or something similar.)

The short answer seemed to be this: it's quite OO, but maybe not a disease. In FP we sometimes contort ourselves to turn complicated custom workflows into straightforward function composition, and it's not always worth the effort.

J. B. Rainsberger (he)jbrains
2022-12-03

Further to this idea, whose videos on "evolutionary design without / " would you endorse? I mean you really like them. You found them compelling and convincing. They don't have to be free.

mastodon.social/@jbrains/10943

eferroeferro
2022-11-09

This was one of the best talks I've heard on software design in a long time. Excellent points on evolutionary design, testing, technical practices, etc. Highly recommended. @jamesshore @KentBeck
jamesshore.com/v2/books/aoad2/

2022-10-30

#introduction Welcome to the fediverse, folks!

I’m a professional software dev and hobbyist programming nerd. I like finding ways to accomplish more with less effort.

Paradoxically, this means I focus on both using high-abstraction frameworks (#react, #reactnative, #expo, #rails) and old development methods (#tdd, #refactoring, #evolutionarydesign). I post/write/livestream/speak/teach about all this stuff.

I live outside Atlanta, GA and work at @testdouble

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst