In his now-iconic 2005 Stanford commencement address, Steve Jobs spoke of connecting the dots—how meaning emerges not in the moment, but in retrospect. When examining our relationship with nature through the lens of design and the built environment, this notion becomes strikingly relevant. To envision more prosperous futures, we must first look back—to understand how […] The post Hybrid Habitats: Innovating Pathways to Evolutionary Design first appeared on Innovators magazine.| Innovators magazine
A mentoring client of mine said this recently: I took ownership of some strategically pivotal code and did precisely that, typically refactoring twice a week for about 18 months (my delivery was unaffected). The refactorings took at most half an hour. Last week I got reprimanded. I’ve read the room and stopped. Someone asked why someone reprimanded them, from which came this reply: I should be refactoring under an initiative, the colleague felt. I said I was refactoring to the Four Rules of...| The Code Whisperer
What is refactoring? You’d think that, in 2022, we’d have long settled this question already. Yes and no. A Problem I routinely encounter programmers who struggle with refactoring because they become stuck on this central question: I’m making these kinds of code changes (describes example)… am I refactoring? They might arrive at this central question because some well-meaning person has looked at what they’re doing and exclaimed, “That’s not refactoring!” To someone trying har...| The Code Whisperer
I think a lot of people fall off the TDD wagon because of this exact thing—they learn TDD by working on new code and then can’t seem to apply it to their existing work projects. And then they give up, naturally! When this happens, I help the person focus on the difference between “test-first” and “test-driven”. I hope that this offers them more-realistic expectations regarding the outcome. With test-first, we focus on correct behavior and fix defects. Usually, but not always, when...| The Code Whisperer
Too many people are writing too many articles trying to direct others’ thinking on their own testing strategies. I am guilty of this and would like to contribute to reversing this trend. Instead: test until fear is transformed into boredom (Phlip Plumlee) if you don’t like something about the test, then try interpreting that as a sign of a design problem—usually an unhealthy dependency in the production code (The “driven” in test-driven development) faster-running tests tend to prov...| The Code Whisperer
I noticed that Ron Jeffries had written about a kata I hadn’t tried before, so I decided to try it. The exercise involves evaluating a polynomial of one variable at a single point. For example: 5x3 + 4x2 + 19x + 3 at the point x = 5 evaluates to 823. Check my arithmetic if you like. How does one write this incrementally and test-first? First things first: if you’ve never tried it, and especially if you’re new to test-first programming, then try it yourself. Take small steps and never wr...| The Code Whisperer
When I teach evolutionary design with TDD, I often encounter programmers who don’t like all these little classes and all these extra interfaces. (Or all these little higher-order functions, if you prefer. It’s the same problem.) They worry that it creates a serious performance problem: deeper call stacks, passing parameters around, that kind of thing. They see memory being unnecessarily allocated and freed, memory becoming fragmented, and garbage collection happening at the worst possible...| The Code Whisperer
How do object hierarchies evolve? Many programmers struggle with this question. Mostly, they want to know how object hierarchies can evolve safely and sensibly! They have a picture in their mind that TDD is only safe in the hands of programmers with excellent design sense, but I believe that anyone can learn these skills with a combination of simple guidelines and guided practice. It would be nice to have more examples. I have stumbled upon one that I’d like to share with you. I’m refacto...| The Code Whisperer
TDD is for those who don't know how to design software, which doesn't have to mean that we're all dopes who are doomed to perpetual failure. Let's explore th...| blog.thecodewhisperer.com