page contents

According to Wikipedia ‘software development’ refers to the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. It’s a reasonable description. At Encanvas, because we use no-lo software development tools and methods, the need to program or de-bug becomes irrelevant. We therefore describe it as – ‘The process of scoping, designing, deploying, documenting, testing, and tuning software applications.’

Software development lifecycle management

Over the years there have been several popular methods of developing software. These are articulated by the lifecycle a development takes from initial conception to completion, and beyond. We summarise these here.

Waterfall

As the term suggests, with waterfall development, a series of software developers (normally using different tools) are tasked with performing blocks of development. These activities are supervised by a project leader who sets out the development plan. Often, developers will disappear for days until the next project review meeting. This approach used to be the most common, particularly when the need to use different tools (demanding the skills of different developers) meant there was no other way.

Agile / Scrum

The existence of more versatile cloud software development environments has made it possible for agile software development to happen. The underpinned principle of agile development is that small teams, meeting regularly (in a scrum), agreeing what needs to be done, sprinting to get them produced in a day, then reviewing progress speeds up software development considerably. Unfortunately, this step forward in the software development approach does little to eradicate the project overheads and risks associated with manual coding.

Agile Codeless with Live Wireframing

Use of codeless (requires developers to no longer see or use code) Integrated Development Environments (IDEs) has made it possible for software developments to be managed by one person from start to end. The key design role is performed normally by someone with business analyst skills, as appreciating what needs to be created – and why – becomes the greater risk to project failure. This has led to the ability of software development to happen in workshops, in near-real-time. At the term suggests, live wireframing focuses on rapidly developing a live wireframe ‘prototype’ of a solution and ‘failing fast.’ Through the use of an integrated development environment, it’s possible to de-risk projects by iterating designs at a very low cost.

The risks of software development

Software development is known to be a hugely wasteful process.

A Harvard Business Review article article ‘Why Your IT Project May Be Riskier Than You Think’ published in November 2011 uncovered that, followed a survey of 1,471 IT projects with an average spend of $167m:

  • The average overrun was 27%
  • One in six of the projects studied was a black swan, with a cost overrun of 200%.
  • Almost 70% of black swan projects also overrun their schedules.

This level of performance has changed little in the intervening period. So, why are software development projects so inconsistent in their delivery? There are a number of factors:

A lack of clarity of what needs building

Specifying how an application should work – the process it must fulfill, the aspirational needs of stakeholders, user interface, the logic rules, data integration, and processing, etc. – is complex. Working with stakeholders unsure of what they need, and struggling to visualize how it will work for them, makes it even more difficult.

A lack of surety in outcomes and RoI

Calculating a Return-on-Investment It’s hard to envision ‘how well’ a software development will work, and the level of influence the application will have in improving the process.

The complexity of the software development project process

When multiple individuals are working on the same project using different software development tools, it’s difficult to keep everyone on the same page and keep developments on-track. Even when projects manage this, the consequence of using a blend of development tools means that a small change to one aspect of development can have a big knock-on effect. For example, changes to the database structure can demand changes to front-end forms, requests for reports can expose shortcomings in data designs, etc.

The challenges of manual coding and scripting

Anyone that’s ever tried their hand at coding or scripting knows that it’s a slow and detailed process. When code is created manually, there’s always the risk that errors will be made. Worse still, there is a risk of malware being introduced or intellectual property loss. These risks demand that applications are heavily tested before they are released. This costs a lot of time and money to do. Any changes result in a new wave of developments.

When ‘customers’ change their minds

It’s not uncommon for users and stakeholders of a software development to change their minds over what’s needed. When this happens, it can significantly delay or even de-rail developments.

integration and data quality issues

Few applications function in isolation. Normally they need to take data from third-party systems or deposit it somewhere. The quality of data and the challenges of integration can take 30 to 45 percent of the project-spend. When data is poor, the RoI of projects can reduce or be completely removed. Data quality can make software developments redundant.

Platform versioning issues

When an application is used by a community of users or customers and they request changes to be made over time, this can result in development teams to have to support more than one version of their software. Unless some pre-planning goes into how platform versioning is managed, it can result in a long tail of code management overheads.

The Author

Mason Alexander is a senior consultant specializing in helping organizational leadership teams to grow by implementing enterprise software platforms that improve data visibility, process agility; and organizational learning – creating an enterprise that learns and adapts faster. He writes on subjects of change management, organizational design, rapid development applications software, and data science. He can be contacted via his LinkedIn profile.

Further reading

My title page contents