‘Why Does Software Cost So Much?’ Category Archives


Human Multi-Tasking

by Tony in Why Does Software Cost So Much?

I’m always amazed by how many simultaneous tasks software developers are given. I run into people all the time who are assigned to one project but also working part-time on one or two others, and on call to do a bit of maintenance on the last program they completed, or sales support of the need arises.

The human CPU is very inefficient at multi-tasking. We seem to switch gears well, but it’s all an illusion. Of course, we don’t let our inefficiency show. We don’t betray the fact that task one, just interrupted, is still churning on in some corner of the brain, making it impossible to pay attention to the guy who is throwing tasks two and three at us. We smile and nod, not to look stupid. He goes away and we try to remember what task one was, but it’s lost. And tasks two and three, well, they’re floating tantalizingly in recent memory when the phone rings and task four comes spilling into the ear.

Frustration and context switching are bad for team dynamics. Teams are an obsessive business. This means you and your teammates have to be allowed to be obsessively involved in one commonly owned subject area.

The sine qua non of team building is that each and every member has to be full-time on one and only one task, the task that defines the team. A group of split-responsibility, fragmented, and frustrated co-workers may be called a team, but they will never go nova.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 6


What is Management, Anyway

by Tony in Why Does Software Cost So Much?

The manager’s most important task is system design. But it is not the product system that the manager needs to design; it is the system that builds that product: the project. Designing the project means hiring the right people, putting them in the right place, building teams, keeping people’s sprits up, and redesigning when the result is improvable. Great managers don’t even end up steering their projects – they don’t have to. If they’ve succeeded in their design, they have constructed a project that knows how to find its own way.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 5


Lean and Mean or Sick and Angry

by Tony in Why Does Software Cost So Much?

Becoming lean is not a sign of future health, but of present failure. The ultimate way to achieve leanness is downsizing, or, to put it more bluntly, firing lots of people more or less at random. This is what my colleague Ken Orr calls “organizational bulimia.” Downsizing is exactly the opposite of what management has been chartered to achieve. The natural goal for almost any business is upsizing. Downsizing programs are clear admissions of upper management failure. Yet, somehow, it’s never upper management that gets downsized.

Lean and mean means sick and angry. Maybe that’s what many organizations have become, but it’s time to stop pretending that it was ever a desirable goal.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 4


Management-Aided Software Engineering

by Tony in Why Does Software Cost So Much?

The bread-and-butter mechanism by which an organization improves is simple enough: People identify best practices that are already working somewhere within the organization and propagate them. This involves no great breakthrough, no new theory. It is basic hygiene. Companies that can do it survive and prosper, and those that can’t don’t.

Less straightforward is propagation of good practice from one organization to another. The problem here is insularity. We are all so buy holding our cards close to the chest that we have trouble learning from each other.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 3


Software is not a production activity

by Tony in Why Does Software Cost So Much?

The paradox [of software development] is that productivity is often at odds with benefit. Benefit is maximized by taking chances and venturing into new territory. Productivity is improved by familiarity and repetition. When we make software into a production-type activity by “systemetizing” the way we build a certain kind of product, we can get much better at building products of that type. Is this progress? Why do we need so many products that are so much alike? Have we missed an opportunity to build one meta-product from which many instatiations can be generated instead of building the many clones, each one as a separate project? In most cases that is exactly what has happened, and you can see why. Building hundreds of cloned products can result in low risk and high “productivity” for each of the hundreds of projects. Building one meta-project is highly risky and likely to result in far lower productivity, but the total cost of the one risky project may be much lower.

Software is not a production activity. It is a research and development activity, for it is in software research and software development where the only real benefits can be produced.

All the attempts to make software into a production activity are doomed to failure. Companies that “suceed” in this are just creating opportunities for the Mike Hammers of the world to suggest, “Instead of pushing your software factory from CMM level three to level four, why not just close it down? It’s not building anything very useful anyway.” Hammer would call that Business Process Reengineering. I call it Turning the Brain Back to the On Position.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 2


Why Does Software Cost So Much?

by Tony in Why Does Software Cost So Much?

“Why does software cost so much?” is an assertion masquerading as a question. The assertion that software is too expensive is part of a cost-containment ploy. The cynical notion that a good schedule is one that no-one has a prayer of achieving is another part of that ploy. The constant refrain that software developers are just not productive enough has only one purpose: to make software developers work harder. It is a goad, a goad that appears to work because software developers are sincere and professional and a little dopey.

The problem is our industry is over-goaded. The work of software development is largely incomprehensible. When you’re under pressure, your first response is to cut out extraneous activities. As the pressure increases, the only real option is to pay for speed by reducing quality. This comes, of course, at the very moment that companies are paying lip service to quality as never before.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 1