Why your business (probably) has code quality problems

I am very much an advocates of developing custom systems in pursuit of productivity and competitive advantage, but in this post I am discussing one of the draw backs of doing so. In fact, most businesses rely on custom code in some form or another, but do not really realise it.

Problems (nearly) everyone has

Firstly, why do I say most businesses rely on custom code without realising it? Because everyone ends up with some custom code somewhere. It might be your website, it might be spreadsheets, it might be a database, but most businesses end up undertaking some sort of software development, and the resulting code matters to the business.

Some of the problems (e.g. informal application development using Excel) has become more discussed in recent years but few seem to have made much headway in solving the problem - having business critical systems that are not properly tested, secured, or backed up. It all seems fine until something goes wrong.

Websites are another common issue. There are often quality issues even when nothing goes wrong. Most small sites have either a poor user interface or are far slower than they need be. There are still a surprising number of sites sites that do not work on small screens, or, more subtly fail on really big screens, or on intermediate sizes such as tablets.

Security issues on websites are very common, even if they are a source of business that it is important not to interrupt. In addition hacks can be reputationaly damaging (what do your customers think if they see links to porn on your site?) or harm SEO (for much the same reasons). Some of the blame lies in the popularity of Wordpress, which is easy to use but requires regular updates and careful screening of themes and plugins.

Problems for people knowingly developing custom software

The good news is, that with custom software you are deliberately developing, you know you have a code base that requires quality control, and you have a lot more control over what happens.

The problem is whether you know how to maintain quality. Do you have internal resources to carry out code reviews, for example? Do you know how to measure test coverage or know what level of coverage or type of tests are appropriate? Do you look at metrics of complexity.

Again, good quality code had real benefits. It is easier to maintain and extend with new features (so you keep saving money). It is more secure (better design and implementation makes it easier to avoid problems). Its faster and more efficient. But you cannot see any of these at the time the work is done.

I cannot offer a perfect solution, but at least be aware of the problem.

I have often been hired by businesses who have people who understand software, just to improve quality. In contrast many businesses are unwilling to pay for upgrades because, as one client put it with regard to a web framework upgrade "I cannot see a difference".

In fact it is not at all common for SMEs (or even big businesses, such as Tesco Bank) to fail to keep the software running publicly exposed systems up to date, even though they are reasonably careful with their desktops and laptops.

I do not have a perfect solution, but please at least try to work with your developers to solve the problem.