The downside of design patterns

Scientists tell us Google is destroying our memories (*).
Are design patterns destroying our ability to design?

Anybody who has worked on a “Big IT” project must surely have marvelled at how insanely complicated the amazingly simple can be made to be. This is usually blamed on the scale and age of the associated systems. Tight budgets and tight timescales force compromises between good solutions and convenient mash-ups leveraging existing ones. The rate of change of what are considered “strategic” platforms outstrips the rate at which they can be completely implemented, leaving behind a jungle of tools, standards and technologies. Once the scale of these systems stretches beyond any one individual’s conception the ability to confidently assess the implications of change is compromised and this fuels an ever-growing mess of short-cuts and workarounds, which are poorly designed but are at least safe from unintended side-effects.

Complexity breeds complexity it would seem. But I have recently noticed a rather disturbing trend. Greenfield projects which are being designed in just such an insanely complicated way.

Poor choices

To some degree poor design choices, sometimes destructively so, have been a feature of many projects I\ve worked on.

Technology choices are often made for marketing capital or by commercial relationships or even personal relationships rather than on technical merit or by those who actually understand them. Techies are often driven by what they want to work with rather than what’s appropriate, or just lazily opt for what they’ve used before.

Project management by consensus leads to weak, compromised design or decisions driven simply by who held out longest. A lack of clarity and prioritisation around requirements, particularly non-functional ones, often leads to conflicting and irreconcilable opinions because each stakeholder is allowed to assess the requirements as viewed through their own, individual prism.

And the wisdom of the loudest voice so often seems to win out over that of the knowledgeable one.

The above issues seem to be a fact of life, something we’re stuck with. And yes, poor architects and designers have had a role to play in some of these debacles too. Though unlike the other issues, this one seems to be on the rise.

Poor designers

Back when I started in this business it was the fashion to actually think about a problem and design a solution from the nuts and bolts out of which it would be assembled. You couldn’t do the job without the ability to understand how to do that, nor were you likely to rise to a senior position without learning how to do it, and how not to do it.

Design patterns have de-skilled this process. They have done for architecture and design what Visual Basic did for development. Just as a competent developer will create good code whatever tool you give him, a good designer or architect can judiciously use patterns to create a clean and flexible solution using a common language easy for others to understand. But just as tools like Visual Basic enabled the “differently-abled” developer to create something which, though worked, was an unstable and impenetrable mess, patterns have allowed the clueless architect to commit the same atrocities at a higher level.

Technological progress has had a hand in this too. Once upon a time the limitations of the platforms we used required an efficient and effective solution to be designed. The gulf between the power needed to deliver requirements and the power of the platforms they are delivered on has grown immensely since then, a gulf that can be filled equally by useful functionality or by inefficient waste

And it seems to me that a new pattern is emerging from all this. Where requirements can be addressed from a pattern manual, cookbook or easily Google-able article, then that’s how they’re met. Where they can’t, anything that seems like it’ll do the job gets used. The designers neither know how to do any better, nor how to effectively assess the alternatives being proposed to them. They’ve simply never learnt how.

Have we raised a generation of designers and architects who simply don’t know how to design? And where will this leave IT when those of us who do are long gone?

(*) http://www.wjh.harvard.edu/~wegner/pdfs/science.1207745.full.pdf

 

Leave a Reply

Your email address will not be published. Required fields are marked *