Most
of this software is not exciting or wildly innovative
but it will make a big difference to people’s lives:
ensuring people get the hospital appointments they want,
that they are billed correctly for their banking services,
that they don't wait in all day for the washing machine
repairman.
Which
brings me back to my lengthy preamble - in order to
address this challenge what we need is not new things
but improved processes. We need to be able to build
better software, more cheaply, more repeatably and with
less skilled people. We need to be able to find errors
before they are frozen into code and we need to reduce
the heavy cost of testing and retesting when changes
are made. We need to design our software in ways that
make it more robust when its operational environment
changes, or when it requires enhancement. We would like
to be able to predict and control 'feature interaction',
that is emergent behaviour when a piece of software
is composed with other software. We would also like
procedures that allow us to determine in advance how
much building a piece of software will cost us.
New
processes are not sexy, even when they require new science
they don't attract the spotlight. They are often introduced
incrementally and their effects are only seen by producers.
Consumers see new processes indirectly and in the long-term.
|