Why is software development so complex?

This article is part of my Better Return On Investment from Software Development series.
These articles are aimed at senior management funding Software Developer or IT Professionals attempting to show the ROI benefits of what can sometimes seem counterintuitive.
This ever growing library is provided free of charge and can be found here.

In this article, the second in my series explaining better ROI from software development, I expand on why it is so complex.

What is software development?

At its heart, it is problem solving. It’s the taking of problem and using technology to resolve that problem.

Software development has been described as much art as science.

In a future article, I’ll dig into what makes a good developer; but in summary it is:

I certainly subscribe to the theory that a good developer is somewhat that can get stuff done AND learns. I look for that in the recruitment process.

Why is learning so important?

I hinted at this in my last article.

Software development is an exceptionally broad subject. And it’s growing:

While no developer will ever have the time (or capability) to absorb that amount of knowledge – and certainly doesn’t need to have to be effective – it should give you some idea why I believe learning is so important for a developer.

So why is there so much content out there?

Personally, I largely see this being due to the maturity of software development.

If you look up Computer Programming in Wikipedia, you’ll see early uses of something resembling a programmable computer in the early 1900s.

Realistically though, most modern computing has been in the last 60-70 years and even then only in the mainstream since the 90s.

While we all now have powerful computers in homes, cars, in our phones and on our wrists – I started my career on “green screens” only progressing to a mouse around 1996. Since then we’ve obviously seen great leaps in the underlying hardware and its availability.

With that has grown consumerism and a growing expectation on software. We seen an explosion of both within the software development field.

Yet, we are very much still exploring the capabilities of the field – finding new ways to work, creating new tools and methods to solve problems and continually improving on what has come before.

Ok, but why does that matter?

Because those improvements can (and will) effect your ROI.

Better methods & processes can produce better, more efficient methods of getting work done.

Better tools can save time and effort getting that work done.

And this is probably at the heart of this series of articles. By understanding (or even just being open to the use of) these improvements, you can materially affect your bottom line.

I’ll explore various improvements during this series, but for the remainder of this article I want to talk about your role.

How to be a better manager

Most business managers will recognise “command and control” as normal or traditional management techniques. I know this was the management style I was educated in and recognise in most organisations. A manager dictates the work to the subordinates then monitors the execution of that work.

Command and control has been an exceptional driving force in productivity during the 20th century. It excels at repeatable actions.

A Software Development however, due to her problem solving activities, falls into the category of knowledge work. Work whose main capital is knowledge.

Knowledge worker are workers who “think for a living”.

“What differentiates knowledge work from other forms of work is its primary task of "non-routine" problem solving that requires a combination of convergent, divergent, and creative thinking” Wikipedia

This means we need to think a little differently when managing and directing work to a knowledge worker.

Peter Drucker (much respected management guru) notes “Workers throughout history could be ‘supervised’. They could be told what to do, how to do it, how fast to do it and so on. Knowledge workers cannot, in effect be supervised”.

By trying to supervise knowledge workers you simply do not get the best results. This will vary by individual, but common problems are low moral & motivation and focus on dysfunctional targets such as time vs. quality.

The former of these is easily demonstrated by good developers leaving. This is costly in recruitment, replacement, training, lost opportunities, etc.

The latter of these can be seen in poorly written, buggy code finding its way into testing or even production. This again costs you money.

I'm not expecting you to be convinced by just these few paragraphs – but I hope to have convinced you to read the rest of the series. During the journey I can help you to get to better ROI from your software development.

Next time …

In my next article, I’ll be looking at what makes a great software developer – both their skills and their motivations.

About the author:

Mark Taylor is an experience IT Consultant passionate about helping his clients get better ROI from their Software Development.

He has over 20 years Software Development experience - over 15 of those leading teams. He has experience in a wide variety of technologies and holds certification in Microsoft Development and Scrum.

He operates through Red Folder Consultancy Ltd.