Unit Conversations

Writing characterization tests interactively

Michael Feathers
September 23, 2020

There are many ways to look at unit testing, but one of my favorites is to see it as an attempt to have a REPL in languages that don't have one.

When you have a REPL, you can call a function and learn how it works interactively. You get immediate feedback—you can have a conversation with it. In dynamically-typed languages this . . .

Read More

Testing Warranties

Managing API use across an organization

Michael Feathers
June 16, 2020

Access specifiers in programming languages can be frustrating. Superficially, they seem ok. You use public to mark the methods you want to allow anyone to call, and use private to hide the ones that people shouldn’t call. When you’re writing code, it’s easy enough to make that decision, but there are situations where it would be useful to . . .

Read More

Functional Code is Honest Code

Michael Feathers
June 12, 2020

I’ve been reading quite a few attempts to define Functional Programming recently. It’s hard because we’ve taken so many paths in the industry. There’s some nexus around immutability, referential transparency, and typing. Each language makes its choices, and — if we are looking at those three qualities — it’s clear that you don’t need all of . . .

Read More

Scaling and the Friction of Dimension

Michael Feathers
December 03, 2019

If you’ve been in software development for a while, you know that small web applications are ill-suited for massive load. I’m writing this a few days after Black Friday in the US. This year, another large retailer had a site outage, losing tens of millions of dollars in expected sales. The retailer definitely didn’t have a small system, but . . .

Read More

The Simulation Argument and the Simulation Barrier

Michael Feathers
November 24, 2019

I can’t recall when I first heard Nick Bostrom’s Simulation Argument, but I know that it was a long time ago. It seems to resurface in the popular consciousness every few years — often when it is tied to the plot of a movie, or when a celebrity or entrepreneur makes reference to it.

The core of the argument can be found in the . . .

Read More

Socio-Technical Seeing

Modeling The Dynamics Of Code And Attention

Michael Feathers
September 11, 2019

In conversations about software development, I often ask people whether they’ve heard of Conway’s Law. It’s a doorway to a richer conversation. We can talk about the dynamics of design — how our environment affects us as designers and how the things that we design become part of that environment in a broad feedback loop. Without this . . .

Read More

Toward a Book of Form

Exploring Structural and Behavioral Abstraction

Michael Feathers
July 17, 2019

I’m fascinated by correspondence — when we see the same pattern in more than one place, or even a very different domain. A good example is Postel’s Law, sometimes known as The Robustness Principle. It states that when you are designing components in software you should design them so that they are open to accepting many kinds of input yet . . .

Read More

Archive
   Subscribe by email and never miss a post.