Geek Smithology

April 19, 2006

Expertise is Overrated, or Why I Hate Design Patterns

Filed under: Craft of Dev by Nathan @ 3:00 pm

I know, let’s build a Facade using a Strategy that takes a Command to build its Memento and we can modify it using a Builder! Oh, and I think it should be a Singleton.
– famous last words, number 629 in a series

A few weeks ago, a colleague mentioned in passing that he had spoken with a more junior developer who was attempting to bridge the gap between procedural and object oriented programming starting with Design Patterns. Talk about shifting paradigms without a clutch!

According to the Dreyfus model of skill acquisition, experts come to rely on intuition and experience whereas novices depend on explicit instructions and detailed rules. Yet many a sage ur-guru has suggested the path to object oriented enlightenment crosses through the valley of the Gang of Four. I call this the expert’s folly.

Design Patterns are descriptive, not prescriptive. While the wizards may describe their caching policy as a “Decorated Proxy” using a convenient shared vocabulary, novices barking their shins in the dark create Singletons and States without any regard for data encapsulation, domain modularity, or coherent behaviour. It’s the Golden rule turned lead. Experts feed advice they would like when following the Platinum Rule would yield smoother sailing.

It is often said that those who can, do; those who cannot, teach. But that glorifies the wrong side of the scale. It’s easy to perform based on your intuition, but very difficult to teach based on your understanding. I think this ancient aphorism needs an update:

Those who cannot teach, merely do.

One Response to “Expertise is Overrated, or Why I Hate Design Patterns”

  1. Your famous last words describe this “architecturism” perfectly. I have heard these phrases repeatedly, either in job-interviews or from freelance-consultants who managed somehow to get into our offices.

    Patterns are a treasure of software-engineering, but when you have to hide behind their mere names, you simply prove that you don’t have a decent understand of the problem. So far to “expertise” with that consultants and some neewbies try to make an impression (aka justify their rates).

    The use of Pattern comes naturally into the design of system by identifying the tasks of the subsystems, a seasoned engineer knows immediatly how this could be implemented and (perhaps) the name of the Pattern. The name helps communicating among engineers to fine-tune the design also by getting experrtise on the use/implementation of Pattern X in a given context.

    It is now 2 months that I declared that I used the last remaining pattern from the GoF-book in our system (it was Decorator). Since our system hasn’t been designed :-) , there hadn’t been architecturism, but the patterns evolved anyway.

Leave a Reply


Powered by WordPress