Software Development Process

From Gevo

Jump to: navigation, search

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.

Links

Views
Personal tools