Subscribe

The devil's in the details

Successful software development relies on business and developers understanding each other

By Mia Andric, Brainstorm special editions editor
Johannesburg, 03 Mar 2009

The software industry started in the early 1960s when universities and businesses first began to use computers and to seek out programs to do certain computing tasks. Many of these programs were written in-house by full-time staff programmers. Some were distributed freely between users of a particular machine for no charge. But others were done on a commercial basis, and the very first standalone software firms started in the US in the 1960s.

New world order

The network is now the computer, and developers are running to keep up

Current trends forecast a rather sunny outlook for cloud computing. It is promising to be what business and IT executives (and their teams) have been asking for - a truly elastic and highly affordable computing infrastructure. When it matures, it will be able to totally free them from building IT infrastructure and keeping it running, and it will help them redirect most of their time and energy toward innovating and solving real problems of their core businesses. They will begin to take computing power for granted, just as they do their electric power.

Under those circumstances, on-premises computing would gradually become pass'e. Some market analysts estimate that three to four years from now, 20 percent to 25 percent of the IT workload will be managed using cloud computing environments. Software developers will then have to take this paradigm shift into consideration when developing applications in the future.

Airborne Consulting's Brian Harding says he is seeing the move to a hosted or cloud model more and more, and feels that it is the wave of the future. “Almost every aspect of computing will be packaged as a service, including hardware, software, or some combinations thereof,” he says. “Each will have its own commercial flavor, corresponding features, and service-level agreements (SLAs).”

The candidate applications for cloud computing are practically limitless. With the right stack of software architecture, a cloud computing system can run all the applications of a normal computer. In addition to the common layers of application software, the cloud comes with additional layers to support elasticity, provisioning/de-provisioning, monitoring, metering/billing, clustering/load-balancing, and related fault tolerance and recoverability.

Advancements in enabling technologies will fuel the growth and acceptance of the cloud. The idea is finding wider acceptance among users and providers, so software developers are having to ensure their proficiency in standards such as Elastic Computing Markup Language (ECML) and Elastic Deployment Markup Language (EDML). These standards are also being extended to include SLAs such as provider's reliability, scalability, and performance commitments.

The industry expanded greatly with the rise of the personal computer in the mid-1970s, which created a growing market for games, applications, and utilities. And gradually the concept that software should be bought and paid for took hold. The software industry has continued to grow with the growing need of businesses and consumers alike for more applications, tools and utilities.

As the software development industry matures, business is constantly demanding more flexibility, more responsiveness and more scope for changing requirements further into the development process. While this responsiveness is needed in order to remain competitive in a rapidly changing marketplace, business often doesn't know how to go about achieving it, or even what it really needs.

“Business also requires tighter control of spend,” points out Mark Gebhardt, technical director at Saratoga Software. “These two requirements may seem to conflict with one another and often they do, resulting in poor quality processes that deliver poor quality software.”

Opportunities for failure

Since there are several different approaches to software development, with significant advantages and disadvantages to the various methodologies, it makes sense that the opportunities for project failure are legion. Large-scale software development efforts today are conducted in complex, distributed IT environments. Development occurs in a fragile matrix of applications, users, customer demands, laws, internal politics, budgets, and project and organisational dependencies that change constantly.

Moreover, software today must not just automate processes; it must create business value, by improving customer service or delivering a competitive advantage. Raising the stakes of every large-scale development project is return on investment (ROI): Software must have a measurable impact on a company's bottom line.

Project managers who lack enterprise-wide multi-project planning, control, and tracking tools often find it impossible to comprehend the system as a whole. Underestimating project complexity and ignoring changing requirements are basic reasons why projects fail. Under these conditions, software project management is almost an oxymoron.

Challenges

According to Brian Harding, executive director of Airborne Consulting, software development is a risky business. “It's not an easy product to deliver. Business asks the question: 'How much does it cost?' when the real question is 'How do I do it?',” he says. “This is where most projects fail - they are too cost sensitive without asking the right questions.”

nVision IT's technical director, Nick McKenzie, feels that one of the biggest problems is the actual definition of custom development. “At what point does customisation become custom development?” he asks. “Businesses should think carefully about what to build - building stuff that already exists is a waste of time unless it is specifically needed.”

MIP's CEO, Richard Firth, agrees that customisation is not trivial. He says he's seen a massive shift in the industry, though, with more calls for custom development and less for customization. “As the new South Africa has matured, the legislation has matured. The local legislation has been customised to the South African market, with the effect that international systems can't just plug and play any more. There is therefore little scope for out-of-the-box solutions,” he says.

McKenzie adds that the vision of a business of its needs ranges, and some just don't know what's causing their pain. “Sign-off from the customer is often a major problem because they don't understand their need, so the developer is not supplying what the customer expected because he hasn't got that understanding either. Getting everyone speaking same language is the biggest challenge.”

Strategies

Firth says the first step is to get a closer match between business and technology speak. “The first thing any developer needs to do is establish what the business needs,” he says. McKenzie agrees, adding that one of the most important aspects of a software development project is to manage the client's expectations.

“Companies know their own business better than the developers do, and if the developer isn't told exactly what's needed, the developer ends up making assumptions. You have to understand the requirements first, understand who's going to be involved from the company's side, and understand the commitments,” he says. He adds that a successful project has to have buy-in across the organisation. “Change management is vital. If it's not handled correctly, the software will fail.”

Sean O'Connell, Airborne Consulting's MD, says that all software development projects are abourt people, and software development has to take cognisance of that. He and Harding say that because of technological convergence, it is now important to look at projects in the context of infrastructure. “You have to take into account the integrated strategy, enterprise architecture etc.,” says Harding.

Gebhardt points out that the agile approach to software development offer remedies for some of the fundamental flaws present in many current development projects. “Competent developers love it, because it puts responsibility and control of the process in their hands. However, key stakeholders in the business can sometimes struggle with the mind shift that it requires,” he says. “The fundamental difficulty appears to be getting the business to alter its thinking up front and engage with the process sufficiently to change the way they relate to development teams and the development process.”

Firth points out that lots of people try to equate software development to the building industry, but that there's no such thing as once-off development. “The building model is important, but there's only one way to sell applications and that's service. There has to be change management going into the system monthly, and support is vital. There are two areas to support, each equally important - maintenance and changing to develop what the business requires as needs change.”

Skills

While these are all vital aspects to ensuring the success of a software development project, none of them are as important as having the skills to complete a project. Firth says that resources - both technological and human - are an important part of development. Harding adds to this by saying that it is important for a developer to be highly skilled, not a jack of all trades.

However, this seems to be rare locally. Firth says that South African developers' skill sets are much broader. “In the international market, people seem to focus more on one area,” he says. McKenzie agrees, adding that the element of local knowledge, of understanding legislative requirements etc., is vital. However, he paints the usual dismal skills picture common throughout the IT industry. “A lot of colleges are letting woefully underskilled people into the workplace. Skills are expensive, and the shortage has driven up salaries to where they are out of whack with the job.”

However, the situation isn't sounding the death-knell for development houses locally. In fact, Firth says that they don't really battle to find developers, they have just had to increase their training. McKenzie says there are other challenges in South Africa compared to overseas markets - not just skills. “For example, you have to think about bandwidth all the time. The challenges around logistics in Africa make for more interesting solutions, though,” he says.

While the stats remain poor - McKenzie says that two thirds of software development projects are challenged and a third of projects fail - South African business seems to be willing and able to embrace the challenges necessary to ensure success. Software development has moved on from a “big bang” approach, with the multi-million Rand projects common in the past occurring less and less, and developers and business have learned that success lies in talking to each other.

Share