Effective Software Development
(Enjoying the Process)
PDF
Software can add great value to an organisation. However, it is clear that
building good software is not a simple well understood process. This is
evident from the number of high profile projects that have failed (e.g. US FAA
Advanced Automation System was scrapped after $3-$6 billion, London
Ambulance Service Computer Aided Dispatch System was scrapped after $2.5
million). As we begin to understand how the failure of these projects relates
to systemic issues, we begin to be able to create processes that produce high
quality software within the given economic, technical and social constraints.
We believe that it is possible to create sustainable and effective
processes
that can help you to deliver quality software in an effective and enjoyable
manner.
It may seem that the concept of a ``sustainable process'' is out of place, but
in fact, although this is borrowed from studies of living systems it is
important for any ongoing process. What this means is that the process is
robust with respect to change and displays longevity and adaptation. For
example, how well would you software development team function if the lead
developer chose to switch to a new project? What would happen if the target
platform for your software needed to switched from Microsoft Windows to Linux?
Can your team maintain their current level of output for the full length of
the project?
There have been a number of management or development methodologies: from the
heavy weight UML modelling approaches to the agile approaches such as eXtreme
Programming. All these approaches undoubtedly have there own merits, however,
they often attempt to impose one single process irrespective of the
organisation or project.
Rather, one should step back and see under what circumstances these approaches
work, and look for common trends.
The common trends or underlying structural principles that we have observed
are:
- metrics - used to quantify the health of the project
- life cycles - harness the network of interactions that occur within a
project over time and between project members by ensuring that there is
suitable feedback
- decentralisation - most systems are too complex to adequately manage
via central control and it is useful to delegate decisions and responsibility
to the project members best suited for the given task
- personal involvement - successful projects rely on the output and
creativity of people and as such the project needs to be aware of the
individual needs
In tandem with these structural principles the following guiding values lead
to a quality process:
- simplicity and elegance
- critical review and questioning
- clarity
- openness and honesty
Now, in light if these principles it becomes possible to create a process that
is tailored to a given organisation or even a particular project. That is,
create a process that is unique to your environment, yet will be
sustainable and effective, embracing change, creativity and enjoyment.
Gethos approaches each client by looking at the current context and needs of
the project or organisation so as to act as a catalyst for introducing more
effective processes. Together with this system theoretic analysis,
technical knowledge and best
practises are leveraged to facilitate rapid and targeted change.