Agile Methodologies

Reducing software development risk by identifying key challenges throughout the entire process.

Identifying key challenges

Acknowledging the clear risks our clients face in undertaking new software projects, we continually re-evaluate and evolve the way we work to help ensure the success of the projects we work on.

Worldwide just 30% of all software projects are delivered on time, on budget, and with required features and functions. More than 20% are cancelled prior to completion or delivered and never used.

Software development is inherently creative and subjective.

For a given set of requirements there can be numerous, very different software solutions. The process for identifying the most appropriate solution is subjective and based on many factors that are incredibly elusive. Although most of our team members have studied computer engineering or computer science, the unpredictable and creative nature of software development makes the process more like an art than a science.

The processes of developing and using software are heavily reliant on people.

The vast majority of software project costs are labour related. Requirements are also usually driven by people and their processes. Effective communication between various stakeholders needs to be supported during a project and designers need to consider human factors such as emotion, memory and fatigue in their solutions. Humans are dynamic and unpredictable and so this reliance makes managing software projects extremely difficult.

Requirements change during software projects.

Due to unpredictability in both business and technical environments, and the inter-reliant nature of software components, certain opportunities and risks only emerge once a software project is underway. Within a traditional fixed project schedule, reacting to change is difficult and expensive.

The ability to estimate software development resources is limited.

Everyone involved in a software project would like to be able to have accurate estimates of how many days/hours are required to complete the project. Unfortunately history has shown that attempting to estimate resources at an early stage of a project will not produce reliable results. NASA researchers document the cone of uncertainty that suggests actual resource utilisation is generally between 25% and 400% of what is initially estimated.

How we approach software development projects

Like many other development teams today, we acknowledge that there is inherent risk in the process of software development and we have adopted what the industry calls an Agile approach to software project management.

We have tested and implemented various tools and frameworks that fit in with this approach to help us increase the quality of our software and the efficiency of its development.

Prototyping

Software development is inherently creative and subjective.

We support the creative process through the design of prototype solutions from a very early stage. Low fidelity prototypes (such as paper mock-up interfaces) allow designers to quickly explore various approaches to a problem without incurring significant costs. Stakeholders are able to asses and feed back regarding multiple designs as a mock-up evolves into a functional prototype and eventually a working system.

When analysing requirements and estimating resources, we reference creative deliverables such as mock-up designs. We find that an interface design is much more effective at accurately communicating desired functionality than a feature description in a document.

Online Collaboration

The processes of developing and using software are heavily reliant on people.

Effective communication and collaboration during a software project are essential. We found that meetings, telephone calls and emails were not enough to keep all stakeholders ‘in the loop’. For the last 3 years we have leveraged Basecamp, an online project management tool, as a central repository for our team members and clients to view and update project progress. Basecamp is used by millions of people worldwide and is considered a leading web-based project collaboration tool.

For years project management software was about charts, graphs, and stats. And you know what? It didn’t work. Pictures and numbers don’t get projects done. Basecamp tackles project management from an entirely different angle: A focus on communication and collaboration. Basecamp brings people together.

Project Management

Requirements change during software projects.

Instead of attempting to eliminate risk in a project by specifying requirements and plans in detail upfront, we assume that there is inherent risk in the process of software development and adopt tools and methodologies that allow us to effectively manage risk through the life-cycle of a project.

We have identified and employed Scrum, a lightweight agile project management methodology, in response to our desire for agility during a project and we have found very positive results over the last few years. The methodology allows us to manage software development projects effectively with a focus on flexibility and incremental delivery.

Scrum is widely adopted internationally by small teams as well as large organisations such as Microsoft and Google. Detail regarding the methodology can be found on Wikipedia at http://en.wikipedia.org/wiki/Scrum.

Quotations and Contracts

The ability to estimate software development resources is limited.

Although the process of software resource estimation does not produce reliable results, we understand that decision makers need to have some idea of cost and schedule in order to pursue a given opportunity or not.

When faced with a set of requirements for a new system, we are typically able to advise a rough budget estimate, but prefer to embark on a high level analysis phase in order to explore requirements in greater detail. During this phase we start designing a conceptual overview of the system and begin prototyping high risk features so that we can be more confident in our estimates.

Estimates should not, however, be treated as quotations as they are based on unpredictable factors. When comparing estimates or even quotations from various service providers, the lowest cost provider will not necessarily be the lowest risk option.

The variables contributing to risk in a typical software development project are understood to bescope, cost, time and quality.

  • Scope – Have the correct features been identified for development?
  • Cost – Is the cost of developing the scope worth the value that will be added?
  • Time – Will the time taken to deliver the scope align with our business deadlines?
  • Quality – How well will the system function and support growth and maintenance?

‘Quality’ is included as a fourth variable although it is far more difficult to specify and measure than the other three variables. Unfortunately, most people simply assume that quality will always be ‘good’ and fail to consider that for a given set of requirements there can be many very different software solutions.

Whenever costs are not specified up-front, a common perception is that there will be no control over how much will be spent and developers will consume a run-away budget. On the contrary, our methodology allows close management of exactly how much is being spent, when it is delivered and what exactly is being created. The major difference is that these variables are not assumed to be fixed at the outset of a project. They are free to change as more is learned about the system. Development productivity is increased which leads to better quality and/or lower costs.

Cost, Scope and Time can be roughly estimated at the start of a project. It is, however, expected that each variable will start changing from the moment the project starts. To allow management of risk, variables are traded off against each other as the project progresses. For example:

  • “Let’s add feature X to the Scope which will increase the Cost and push out the Time.”
  • “The Costs cannot increase, so let’s remove the lowest priority features from the scope.”

Since developing software involves extensive collaboration with many stakeholders, we think of our clients more as partners in the software development process than as customers. We make every effort to ensure that whatever costs are incurred add maximum value to their businesses. We are completely transparent with our processes and attempt to foster a high level of trust so that our role in a project can hopefully be considered more like a partner than a service provider.


Our Services

Agile Methodologies

Agile Methodologies

Reducing software development risk by identifying key challenges throughout the entire process.

Learn more

UX Design

UX Design

Meeting measurable business objectives with experiences that are intuitive as well as engaging.

Learn more

Consulting

Consulting

Full service web and mobile consulting right from the initial stages of a project.

Learn more

Mobile Strategy

Mobile Strategy

Engaging users on every level by taking a "mobile first" approach in building responsive applications.

Learn more

Code

Code

Front end (web & mobile) and scalable backend systems development (API's, databases, services).

Testing

Testing

Quality is a key success factor for any software project. Our testers keep our developers honest.

Architecture

Architecture

Ensure that your software stack can cope with change and scale.

Devops

Devops

Provide the ability to react to change and tackle urgent challenges in the field.