Simple Design or Swiss-Army Knifing?

Naresh Jain’s Managed Chaos has a short post reminding us to Embrace Simple Design.

Naresh uses the phrase:

“Smartest Possible Thing That Could Possibly Work”.

Stick that bromide in your quiver. I like that sentence.

Version One’s
marketing material refers to simple design, quoting poet Wallace Stevens

“the art of what suffices.”
Wallace Stevens

in reference to growing application functionality that is

for today’s story, and today’s story only

Sadly that advice is counter to our natural inclinations. We love to flex our muscles to unwittingly complicate things.

I sometimes feel victimized by Swiss-Army Knifing on the development team. Forget about gold plating being bereft of value to our product owners, I am referring to so-called re-usable components that well-meaning developers build. It’s an affliction that inexplicably infects the C# practitioners more so than purveyors of Java.

Many times re-usable components are a detriment to the development team who feel obliged to use them. These re-usable Rube Goldberg contraptions present technical debt we must shoehorn into our code because…well …because, um, they took so long to build?

Many of us have the unfortunate proclivity to grow do-all components; ostensibly for others to re-use. Unfortunately these knives do more than cut. Much more. So much more, they don’t even cut very well. Our Swiss Army knives end up being clunky and difficult for others to understand. Plus, they sag our pants. Turn Jam into Jelly.

Is the Swiss Army knife approach little more than the flexing of coding muscles?

In XP, the acronym is YAGNI, for

“You Aren’t Gonna Need It”

Let’s resolve to keep it simple.

I plan to heed Naresh’s advice to focus on, the “Smartest Possible Thing That Could Possibly Work”.

Thanks for the reminder.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s