in reply to Re^5: Reinvent the wheel!
in thread Reinvent the wheel!

Standard industry estimates are that 80% of software costs come during the maintenance phase. Maintenance in this case is definitely not what you'd call "active development". So in the long run we can expect 80% of developer time to be spent on stuff that is in what you'd consider minimal maintenance.

Using agile incremental methodologies does not change this fact. Because no matter how wonderful your development process is, at some point the client is going to say, "OK, this is good enough, we don't want to pay for continued active development." And so you start leaving a trail of code that is in use but is no longer under active development. But that code is not perfect, and someone is going to wind up with the job of poking and prodding it along.

If history is a guide, we will always have more under challenged programmers than over challenged ones. Which means that there is a real potential opportunity from finding ways to help bored programmers improve their skills.

Replies are listed 'Best First'.
Re^7: Reinvent the wheel!
by chromatic (Archbishop) on Mar 24, 2009 at 03:38 UTC
    Using agile incremental methodologies does not change this fact.

    It certainly does. Agile, incremental development pushes almost 100% of the cost of software into the maintenance phase.

      That depends on how you define "maintenance".

      To me if you're actively building new features, that's not maintenance, that's development. The fact that people are using the software as you're developing it doesn't change the fact that it is under development. You obviously use the term "maintenance" differently.

      What I'd call "maintenance" is roughly equivalent to what you were calling "minimal maintenance" earlier. Granted, there is more of a gradual decline here rather than a bright dividing line. But the distinction is real.

      In that state a project needs much less development. But software stays in that state for much longer periods of time - frequently decades. And when bugs come up, the maintainer likely has not seen the relevant code in a long period of time, which makes everything that much more difficult to deal with. These two factors together are what causes so much aggregate expense in software which is changing at a glacial pace.