Month: April 2020

Chunking and Naming

In our continuing conversation about refactoring, I want to go a little abstract today, and talk about chunking and naming. Naturally, a topic thisi important has already been addressed by a stupid joke in the movie Airplane!, so we’ll start there. A passenger is approached by a steward, asking if he might be able to help with a problem in the cockpit. He says, "The cockpit! What is it?". She says, "It’s the little room at the front of the …

Chunking and Naming Go to Post »

Large-Scale Transformation and the Bias for Action

Continuing on our conversation about large-scale transformations, I want to talk about change-harvesting’s “bias for action” and tell you a weird thing I did in kontentment the last couple of days. Change-harvesting takes the stance that our most reliable strategy for change is a highly iterative process of act-look-think, in roughly equal proportions, repeated in small local cycles. We oppose that approach to look-think-act, emphasis on think, in large global cycles. This opposition is, of course, not a philosophical light-switch, …

Large-Scale Transformation and the Bias for Action Go to Post »

Large-Scale Refactorings

Large-Scale Refactorings — given the recent refactoring-related muses, a respondent asked me to talk about large or larger scale refactoring work. (I love it when people’s questions trigger my writing. Please do ask these things.) First things first, “large scale refactoring” is really a colloquial expression, a shorthand we sometimes use, but in my experience there is no such thing, for two reasons. The first reason is definitional. Remember, refactoring doesn’t mean “changing my design”, it means “changing my design …

Large-Scale Refactorings Go to Post »

Second-Order Refactoring: Narrow The Question

Another small second-order refactoring for you today. I call it “narrow the question”. If you’re asking an object for data, ask for exactly what you want to know, instead of what you’d need to compute what you want to know. A very simple example: the PlayerView wants to disable/enable some of its controls when the Player is actively playing. In the “before” code, PlayerView asks the Player for its PlayerState and decides, based on its value, whether that means the …

Second-Order Refactoring: Narrow The Question Go to Post »

Second-Order Refactoring: Swap Supplier and Supply

As a hardcore user of TDD and refactoring, there are a number of what I think of as “second tier” refactorings that I use quite frequently. In one’s first intro to refactoring, one sees a lot of “rename”, “re-order”, “inline”, and “extract”. These are pretty potent tools, don’t get me wrong, but I think of them as, idunno, atoms. I think of these “second order” refactorings as small inorganic molecules. An example of this would be one I call “swap …

Second-Order Refactoring: Swap Supplier and Supply Go to Post »

Working By Stories – A Change Harvester’s Take

Now we’ve seen these basic ideas, human, local, oriented, taken, and iterative. I want to use them in a particular way for a bit. Let’s take some practices we know we like, and work backwards, seeing if/how these “known-goods” relate to those ideas. Let’s talk about “Working By Stories” for this first one. I’ll describe what I/we mean by that, and then we’ll try to look at it through our change-harvesting lens. I had thought to do TDD & Refactoring …

Working By Stories – A Change Harvester’s Take Go to Post »

Iterative Change – What and Why

TIme to take up “iterative”, the last, but by no means least, of the bywords of the change-harvesting worldview: human, local, oriented, taken, and iterative. Previous Posts in This Series Here: Human Change Local Change Oriented Change Taken Change The heart of the iterative approach is assuming change. We embrace it, we plan for it, we expect it, we encourage it, we enjoy it, we see it as the central act that defines what we are and what we do. …

Iterative Change – What and Why Go to Post »

Taken Change – What and Why

Human, local, oriented, taken, and iterative, those are the hallmarks of the change-harvester’s approach. This morning I want to tackle “taken”, which is about grounding the substance and approach of our changes to the situation that is already there. Want to catch up? Previous articles in the series here: Human Change Local Change Oriented Change Taken has several layers of meaning to the change-harvester, but the simplest way to say it is just this: To get to there, we want …

Taken Change – What and Why Go to Post »

Oriented Change – What and Why

The change-harvesting approach has these elements at its base: human, local, oriented, taken, and iterative. Today, I want to talk about what that adjective “oriented” means. Prior muses on human and local are here: Human Change: What and Why Local Change: What and Why We’ve said that leaning in to the humans in our systems leads us to locality pretty directly. We say “find the smallest easiest nearest change with detectable outcome and make it”. But this gives us a …

Oriented Change – What and Why Go to Post »

Scroll to Top