In a World of Simple Men, Complexity is King
Dealing with software you must have noticed how complex the matter can get. And you are right, software source code is without a doubt the most complex achievement of the human race, so far. Software that has been developed over the years reaches often such complexity that maintenance becomes a nightmare or impossible. Sometimes even young software succumbs to the siren call of complexity. In a world of increasing demands on performance and features, complexity reigns as king. Teams and teams of testers have fought many a battle against this despot and killed mountains of bugs - and still lost the war. Complexity rules - not ok.
Complexity causes bugs
Essential complexity is caused by real difficulties in the application area. Time pressure, carelessness, not having the right skills or the right motivation, and existing complexity cause complexity, too. This latter kind of complexity is inessential, accidental and - to make the obvious obvious - unnecessary. The software becomes almost unmaintainable when you combine a demanding application area (for example, real-time) with hurried developers. Bugs will find endless hiding places in the resulting source code. No matter how much the testers try to fight it, the end result will be far from flawless.
Learning is key
The only people who can really influence the complexity of the source code are the software developers. They need to prioritize complexity above all else. Luckily, there are ways of achieving this. Create a workflow where the developers notice the complexity and understand how harmful it is. With that feedback in place, all you need are clever people who learn. The single most important aspect in the fight against complexity is to make sure the developers learn. Learn from their own mistakes and from the mistakes of others. That way you can reverse the usually prevalent Vicious Circle of Busyness*.
* The Vicious Circle of Busyness states that "the busier you are, the busier you'll get".
Labels: complexity