8 Comments
User's avatar
J. B. Rainsberger's avatar

It seems like "behavior change" as you use it here implies "has an effect" in the functional programming sense. "Interacts noticeably differently with the outside world".

I would love to see this understanding of "behavior" become more common; it would help us avoid many arguments that amount to violent agreement.

Filis Futsarov's avatar

Hi Kent,

Could we say Behaviour is not reversible because Behaviours produce change? :)

Kent Beck's avatar

It's change in the outside world. We have sent money. We have filed a tax return. We have launched a rocket. No undo.

Filis Futsarov's avatar

Got it! that's a good one. Thanks! And thanks for helping geeks feel safe in the world

Kent Beck's avatar

Change in the outside world.

Filis Futsarov's avatar

Totally agree. Thank you!

Valentin Tudor Mocanu's avatar

Structure changes are developers' decisions. Behavior changes encapsulate business. We can always change/improve our design, but we cannot change the encapsulated business without customer change requests. So we want to be able to manage development-related decisions without effect encapsulated business. imo That is great support for refactoring and for design evolution.

Pietro Di Bello's avatar

Great insights Kent, thanks!

The phrase "...strive to make as few structure changes irreversible as you can" to me connects perfectly with many techniques we may use to keep structural changes easily reversible: refactoring (a series of small behavior-preserving code transformations) is the first one for me, and more generally speaking a "development by small increments" mindset.