Where is your Garbage Garage?

I live in a pretty good neighborhood and get to know it by running around in it most mornings. It’s nice — for the most part. But there are these places. Houses slightly in need of a paint-job with two-car garages and two cars parked in the driveway. On some days, when those garage doors stand open, you can see what they hold. And it isn’t cars.

Wood-working projects, refrigerators, piles of boxes from moving that haven’t been unpacked after several years, toys, toys, more toys, motorcycles, disassembled vintage cars on blocks, old Christmas trees, bikes, snowmobiles, hockey nets, stacks of soda from Sam’s Club. Garages so full of non-car stuff that they can’t fit a car in them.

Garbage garages.

So too with software. We have our own garbage garages.

In the tidy neighborhood of our design we have pockets of garbage — structures that are not used for their intended purposes, designs that fill up with so much unessential stuff that we can’t see the design for the garbage. Sure, we might hide it behind a tidy API garage door, but it’s still there.

And it happens at all levels of granularity: functions with while loops that have no coherent termination criteria; inheritance hierarchies with no (or a deeply compromised) basis for inheriting; subsystems with dark pits of dysfunction that lower the value of their entire neighborhood. These are the code smells, the anti-patterns, the legacies of past generations of developers.


And garbage breeds rats, and rats breed plague, and now my metaphor has fallen apart…

But I’m as guilty as anyone, so I’m no one to sermonize. I guess we just have to make an effort to actually clean up our garbage rather than just close the garage door to hide it. It doesn’t fool anyone anyway — there are still two cars sitting in the driveway.


About jeffkotula

Software engineer, musician, and so on...
This entry was posted in Coding, design, Software. Bookmark the permalink.

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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s