When capital is invested in a software business a primary part of that capital is invested in the development of the software product . A basic requirement of capital is that there should be maximum capital productivity . This means that the value of the capital should grow at a maximum rate . Software , however , has a capital value not related to how much is spent on it but how much it can gain in revenue . As such if more than the minimum - optimum - amount is spent at any stage then this is wasted money - it does not increase the capital value of the code .

There are a number of ways where this money and effort can be typically wasted - that is designing and developing :-

  1. code that is difficult to understand . Difficult to use . The WTF - " Why did they do it that way ? " - " Absolutely no need . " - " Keep it simple ! " . Code that is not constructed such that it is easy to follow . Code that is not fully commented .
  2. code that requires a lot of developer and \ or customer support .
  3. code that requires write arounds .
  4. code that requires large amounts of duplication .
  5. simplistic code - always ends up being messy and overly complicated .
  6. noddy code - code that does not do anything much .
  7. making mountains out of molehills - code that costs far more to develop than it's worth .
  8. big blob code - code not componentised - always ends up being messy and overly complicated .
  9. overly complicated code - that does not use the minimum amount of code . Code that does not use optimum design .
  10. buggy code . Code that has hidden - ' arbitrary ' bugs . Code that bugs easily .
  11. code that is difficult to maintain and update . Code that can't be easily modified and evolved . Code that produces side effects very easily .
  12. code that can't be easily tested .
  13. code that is continuously largely re-developed - ie. code that has a short life . Usually caused by short term investment - get it out quick and nasty - and leads to code being developed as customised applications rather than as multi project and multi customer components .

Basically - code that is badly thought out , badly designed and developed . Code that cannot be justified . IE. - a business that has not applied the basics of business to the code development .

If code is designed and developed such that it requires the least expenditure of time on it and using it - overall - the OS , the applications , the modules and the components , the design , the development , the testing , the developer and customer support , the maintenance and updates - then it is optimally designed code . Further - if the market reach ( it's validity ) is maximised - it is the best design that it can be .

If , in the overall scheme , say , double the amount of code than the optimum is developed then the value of the individual items of code is half of what it can be . The number of bugs is , however , potentially much more than double - because of interactions . Likewise - the development time , testing , maintence and support etc. . The best possible job has to be done in it's entirety and in a balanced and business conscious manner . The effort has to be made up front - if it is - it pays off - otherwise it starts costing .