A while back I wrote about what it takes to kill code. I won’t take up any time repeating why it’s a good idea to get rid of code that’s dead or low value. I think that anyone who’s spent time trying to understand or change some area of code only to find out that it’s never really used knows how frustrating it can be.
As often as . . .
Everyone involved in software development seems to know what Technical Debt is. It’s a powerful metaphor. In Ward Cunningham’s original formulation, Technical Debt was the accumulated distance between your understanding of the domain and the understanding that the system reflects. We all start out with some understanding of a problem, and we . . .
The debate between proponents of static and dynamic typing never seems to die down, but it has matured. Most people I encounter seem to be ready to accede that people can do good work in a dynamically typed language. On the other side, it’s becoming more and more apparent that as type systems grow, the number of error classes we can eradicate . . .
Writing tests to describe and fix existing code
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 . . .
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 . . .
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 . . .
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 . . .