It's a particularly busy week for me: on top of a few looming deadlines, I'll be at Business of Software 2008 in Boston. So, I figured it'd be the perfect opportunity to revisit some classics.

The Complicator's Gloves was originally published on January 16th, 2007. Another fun, tangentially related article is The Complicator's Bicycle.

Good software is constantly under attack on several fronts. First, there are The Amateurs who somehow manage to land that hefty contract despite having only finished "Programming for Dummies" the night before. Then there are The Career Amateurs who, having found success after that first contract (read: taking the client's money and not being sued for developing a useless product), actually manage to make a career out of repeating that experience. And then there are The Complicators, the side that tempts the best of us to join their ranks, even if only for project or two.

There are some so deeply embedded within The Complicators, that they've acquired a sort of sixth-sense: the ability to find meta-problems ("a problem with the process of creating a solution for the actual problem") in virtually any solution. As we've all seen, the systems that these developers create often end up as a barely functional application comprised of a Matryoshka-doll-like nesting of problems and solutions. Given the chance to solve problems outside of Information Technology, I've often wondered how The Complicators might respond. Fortunately, Mike has given us that opportunity ...

Mike's corporate intranet hosts a message board where software developers throughout the company can ask for advice and share ideas with other developers. Recently, one of the software architects from their East coast office submitted the following.

[Off-Topic] Bicycle Improvements

As I pedaled to work today, I thought to myself, why hasn't anyone ever invented a bicycle with heated handlebar grips? These New England mornings can really make your knuckles suffer! Has anyone seen or heard of something like this?

The first response was another from a programmer in Mike's division, who just happened to be responsible for one of the most confusing components in their application.

A quick Google search turned up nada, but I think it's a fantastic idea. Let's build one! I've already got a preliminary design in mind: attach a dynamo to the pedals, run some wires through the frame, and add a mesh on the grips.

That response really got the ball rolling. Certain developers from different departments chimed in, suggesting improvements ranging from a battery backup to an extra dynamo on the front tire for use only when coasting. After lunch, the discussion turned into a "simpler" and more "reusable" approach:

That's brilliant: we can reuse body heat more efficiently! This way, the system could be used when walking/jogging as well.

We'd simply use a thin inner-jacket (like a wind breaker) and run some flexible tubes from the tip of the sleeves to the midriff (which never seems to get cold). There'd be valved inlet and outlet water connectors at the sleeves to distribute the warmed water to the hands via a fine mesh of smaller tubes.

The water would circulate due to the one-way valves and compressions of the device caused by walking/cycling movements. If necessary, we could add the battery/dynamo-powered heater for extra warming of the water. Obviously, that'd be bicycle-specific, though.

Luckily, Mike's company has at least one sensible developer within their ranks who chimed in anonymously on the discussion.

This has to be the most idiotic discussion I've read since ... well ... last week, when you were discussing the architecture for the UND component.

The reason that this "hand warming system" does not exist is because most people have found a pair of gloves to be a perfectly suitable way for keeping one's hands warm.

Unfortunately for us (I would have liked to see a diagram myself), that last reply effectively ended the "hand warming system" discussion. But I will leave you with this bit of advice: the next time you find yourself designing software, be wary of The Complicators; take a good, hard look at your first revision and just say to yourself, "gloves."


UPDATE: Reader "sir_flexalot" created a fun (de)motivator ...

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!