Complexity (June 9)

Our staff is making steady progress on the new estimating/accounting software. Lately it has involved a lot of fiddling with the Qt message systems. They often have several ways to do the same thing. Half the battle is figuring which are best to use.

Our staff has worked with the Qt framework for 20 months now. It is starting to be very satisfying. There are visible rewards every hour. Our time spent with Apple’s Cocoa and Microsoft’s MFC were both disasters. Qt has been the opposite. It’s not perfect, but it works without trauma.

It’s still hard to tell when we’ll be ready to ship the new accounting app. There are plenty of small details left to finish. A good guess would be Fall 2022: some time between September and December. The estimate will grow more accurate as we get further along.

Even with familiar tools, programming has not always been fun. During the past month we wasted several frustrating days because of mystery bugs in other apps.

A few weeks ago, SourceTree stopped working on Windows. We finally had to switch to a different source control system. Not long after that, WordPress auto-updated to version 6.0, and lost the ability to write new posts. After some fiddling, it eventually worked again. No idea what fixed it. This week, Qt Creator suddenly gave hundreds of weird errors deep in Qt code. No idea why. It took a complete re-install to get it back to normal.

All three episodes are symptoms of a bigger problem: computer code has become too complex. These days, all software relies on libraries created by other people. In turn, those rely on piles and piles of ancient code created by still other people. It goes many layers deep.

Some parts of the foundation are solid, but many were never meant to be mission-critical. A programmer whipped out code years ago to solve a minor problem, and it gradually became essential. Most likely the original author is long gone. Nobody else understands the code, or has time to work on it. Until it breaks. Computer viruses, worms and other forms of hacking are nearly always based on subtle bugs in that buried code.

We face the complexity problem every day, even working in our own familiar files. There’s no way to fully understand every bit of code. We can get stuff to do what it should. We work hard to make the code rugged and understandable. But there are so many pieces, and ways to go wrong. It will never be perfect. The only consolation is that nobody else is perfect, either.

Dennis Kolva
Programming Director
TurtleSoft.com

 

Author: Dennis Kolva

Programming Director for Turtle Creek Software. Design & planning of accounting and estimating software.