The cost of dead code and the only technique you need to know to clean it up

Vestigial features are a common plague in software. There’s a special type of this that often goes unnoticed. Vestigial features are usually usable features that simply aren’t used. But under the hood, every system has some code that isn’t even exposed. It doesn’t support a feature users can access. It’s often the result of experimentation, or perhaps a vestigial feature…

http://commons.wikimedia.org/wiki/File:NASA_Hawaiian_Islands_main_islands.png

Islands of value

Waterfall has a bad rap, likely deserved, of over-committing to the minutiae of what it will take to create or modify software over the course of many months and years. For this, and many other reasons, agile development favors change over following a plan. Unfortunately, this often results in a severe degree of under-commitment, the polar opposite of over-commitment. Both…

Hoarding features

A few weeks ago I stumbled on an article about clutter. Apparently hoarding is now considered a psychiatric disorder. I wonder what took so long to come to that conclusion. The article referenced the DSM-5, released in 2013: hoarding, is now a distinct psychiatric disorder, defined in the new Diagnostic and Statistical Manual-5 as “persistent difficulty discarding possessions, regardless of…

So that shouldn’t be optional

User stories are a popular technique to organize software development. While many use them to record future work, they’re much more valuable as a means to enable effective communication. By using the As A, I Want, So That format, we capture three important things: who, what and why. The latter is what matters most. We can alter who and what,…

Hourly billing and cost plus pricing aren’t sustainable

I’m obviously passionate about value in software development. Committing to worthwhile results shouldn’t be taken for granted. All too often decisions are made and actions are delegated. Those that act have no understanding of purpose, desired results and the value of those results. They have no ability to correct course to ensure the results are obtained and the effort is…

Downstream cost of interfaces

Last week I mentioned the consequence of not fixing problems upstream. When we design software to be dependent on other systems, those systems become upstream dependencies. No interface to any system is “perfect,” there’s no such thing. But there are many systems that have interfaces that require excessively nuanced interpretation by downstream systems. This can happen for any number of…

I think I need

“I want”, “I need” Implicit in both statements is a crucial word. “I think I want”, “I think I need” The fact that we want or need something implies we have thought about it. At least long enough to utter the words. But it doesn’t imply how much thought, nor how rational. “I want” is much more powerful than “I…