R7k_red_large
R7k_red_large

Characterization Testing

Writing tests to describe and fix existing code

Michael Feathers
August 08, 2016

I think that the most confusing thing about testing is the word testing. We use it for many things, from exploratory testing and manual testing to unit testing and other forms of automation. The core issue is that we need to know that our code works, and we’ve lumped together a variety of practices and put them under this banner. We can look . . .

Read More

To Kill Code

Michael Feathers
February 03, 2016

Silvrback blog image

Economics is a great frame for understanding problems, but it can cloud many issues as well. The software development community has fought for years against the idea that IT should be viewed as a cost center. We’d like to see it as a value creating investment. Yet, as much as we’d like to see it that way, we speak about code as a liability. . . .

Read More

Variable Capture Considered Harmful

Michael Feathers
December 09, 2015

According to wikipedia, after Dijkstra’s letter Go To Statement Considered Harmful there were at least 65 papers published with titles like ‘X Considered Harmful’, most of them generating heat but little light. I’m using the convention ironically because, well, this is just a nit. It shouldn't be controversial all. :-)

Variable capture is . . .

Read More

The Universality of Postel's Law

Michael Feathers
September 21, 2015

Design is deep topic. One could say it’s the deepest. It’s about making decisions that affect choices in the world. When you design a chair, what you’ve really done is make a set of choices about how people using it will sit and what their experience will be. People sitting on chairs have choices too. They can defy your expectations by . . .

Read More

Moving Past the Scaling Myth

Discontinuous Transition in Process and Architecture

Michael Feathers
July 01, 2015

I’m going to the Agile 2015 conference this year. It’ll be the first time I’ve been to that conference in half a decade. Agile has been around for over 15 years now and at a certain point you feel like you’ve seen the important developments. In truth, I felt that way years ago but I kept going to agile conferences primarily to catch up with . . .

Read More

Collection Pipelines - The Revenge Of C

Michael Feathers
April 27, 2015

What do Ruby’s Enumerable module, .NET LINQ, and the new Java Stream package have in common? They are all there to facilitate functional programming. Here’s an example, pulled from Java 8’s docs because its support is the most recent.

int sum = widgets.stream() .filter(b -> b.getColor() == RED) .mapToInt(b -> b.getWeight()) .sum(); 

. . .

Read More

A Monadic Approach to Error Handling in Collection Pipelines

Michael Feathers
February 16, 2015

If you read my last blog you know that I’ve been pushing the idea of chained computation rather far. It’s been fun to just try to use it for all of my utility programming to see where it breaks down. When you build a program as a single expression in a single sequential flow, one of the things that you have to deal with is making sure that . . .

Read More

Archive
  Subscribe by Email and Never Miss a Post