Subscribe
About

Can developers make land in sea of change?

While rapid and constant technology progress could leave developers floundering, there is a raft of potential solutions.
Jaco Viljoen
By Jaco Viljoen, Principal consultant at IndigoCube.
Johannesburg, 14 Mar 2008

The software development business is beset by problems that are well documented. They haven't changed in over 30 years. Frederick Brooks' "The Mythical Man Month: Essays on Software Engineering" was originally published in 1975 and re-released in 1995 with only one additional essay: "No Silver Bullet". The book highlights many of the problems the industry faces.

It's important to know what those problems are, but it's critical to know what to do about them. There are four common areas of problems that software development faces, with a fifth that's specific to countries such as SA.

1. Technology is constantly changing
2. Software development is people-intensive and becoming more so
3. Changing team structures and rising complexity
4. Evolving process and techniques
5. Education and the future labour pool

Technology keeps changing

People's skills become quickly outdated in the wake of rapid development technology progress. Shortly after software developers learn a new environment it changes, with the result that they always appear to be one step behind.

A set of technologies generally has a lifetime of five years in the software business, and that affects the development process at all levels - people, process and architecture, the way hardware is employed and the way requirements are drawn up. But since many of the new technologies make a lot of sense people are keen to adopt them and that's why the cycle repeats itself.

People-intensive

Software development projects see much interaction between many different people. In addition, the process is creative, opinionated and fraught with the risks of disagreement.

There's no single correct way to conduct software development; no single governing rule or standard. There are so many possible permutations that if you put five systems architects in a room they'll give you 10 solutions.

Team structures, rising complexity

In the past, software development teams operated like any other business structure. But with the advent of agile software development, for one, the traditional hierarchical structure was replaced with a matrix structure of teams.

With increasing business and technological complexity, the team communication and interactions grew to a point where this cannot be ad hoc any more. And the product is also far more complex and risks having too many features, many of which are never used.

A common example is Microsoft Word, which has grown into a feature-rich application that does far, far more than the original word processing it was intended to perform. Or cellphones that do a lot more than allow people to make and receive calls.

Process and techniques

People aren't machines and they don't always operate according to plan.

Jaco Viljoen is principal consultant at IndigoCube.

As the team structures have evolved, many people have used it as an excuse to forget about process or technique. But agile software development is not an excuse to do away with process. Developers still need to know what they're doing, where they're going wrong, where they're going right and how to improve what they're doing.

Too often a fixed mindset is in place. Process awareness is critical and it needs to be aligned with best practices that function in the real world - outside of the university lecture room.

Agile development is an attempt to deal with the gap between a process depicted or described on a piece of paper that suffers from human intervention when it is translated into the real world. But people aren't machines and they don't always operate according to plan.

Doing away with process altogether is an untenable situation. It's not replicable or sustainable. The answer is for developers not to follow processes but follow practices. Practices are accepted and time-proven methods of developing software.

One example is iterative development. It's a form of agile development that embraces ongoing requirements changes that allows adaptation at any point during a project's lifespan. It's difficult to map the process in its entirety, at a macro level, since requirements are not fully established up-front. They evolve. They grow. They change all the time. But software development should still encompass best practices at a micro level. Each and every incremental step in the development should adhere to proven processes.

Future labour pool

South Africa, unlike many other countries, faces a different challenge in that the education system is under immense pressure. One of those pressures is university budgets following the recent merging of many institutions. Remedial action seems to be slow in taking effect.

Businesses need to step up to the plate if they're to ensure a future supply for their own needs. They need to invest in the right people with the right talents, attributes and aptitudes.

Organisations investing in people must ascertain whether they have the requisite skills and potential to become what they need. There's no standard rigour applied to this process and the education industry cannot always be relied on to vet candidates. Many professional CV writers have also crept into the industry.

But businesses do have options. They can hire psychologists to test potential candidates, but that can be expensive. They can also buy software tools that will help them to do it. Or they can outsource the function to organisations that already have both of those options and the expertise to do the job for them.

While some consulting companies offer niche solutions that will address some but not all of these issues, there are others that take a holistic approach, leading organisations swiftly to a successful outcome.

* Jaco Viljoen is principal consultant at IndigoCube.

Share