|
General Operation
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 . Conversely - if less than the optimum amount is spent up
front the down stream costs are greatly increased and , as such , the cost of
the code will increase relative to the capital value of the code . It is important
to maintain the overall costs of the code as low as possible relative to the
capital value of the code . And - it must , at all times , always be below 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 :-
- 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 .
- code that requires a lot of developer and \ or customer support
.
- code that requires write arounds .
- code that requires large amounts of duplication .
- simplistic code - always ends up being messy and overly complicated
.
- noddy code - code that does not do anything much .
- making mountains out of molehills - code that costs far more
to develop than it's worth .
- big blob code - code not componentised - always ends up being
messy and overly complicated .
- overly complicated code - that does not use the minimum amount
of code . Code that does not use optimum design .
- buggy code . Code that has hidden - ' arbitrary ' bugs . Code
that bugs easily .
- code that is difficult to maintain and update . Code that can't
be easily modified and evolved . Code that produces side effects very easily
.
- code that can't be easily tested .
- 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 . The basic calculations
applying to assets have to be applied to the code - expenditure
, life time , ROI etc. . And - time to market , support costs etc.
.
A whole component , module
and system approach has to be used . If the system is bad then it
will cost . 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 .
|