So, what is a hack?

Well, I think I have to define what I’m not talking about. I’m not talking about a person. “Joe is a hack” isn’t the meaning. I’m also not talking about a malicious intruder; not a hacker or the hacks they do. Not even a hacker (white hat this time) and the cool hacks they do.

No… a hack. A band-aid on some code. A bit of bailing wire and twine that holds systems together that shouldn’t really be together the way they stand in the system. The equivalent in the electronics worlds are the bits of bodge wire that tie things together that should have been on the circuit board.

But an oops happened.

Hacks are a way to cover up the mistakes from the past.

Hacks are an added layer to make something that should’ve worked in the first place work in the second place.

Hacks are those bits of magic in the code that everyone is afraid of. Those sharp edges of code that only questionably work — it works now, but it might not work with different data.

– = –

Hacks came up in conversation at work today. Systems that are interdependent in strange ways that no one can really define. Systems that only sometimes work. Systems that require other patches to even work they way should have in the beginning.

Hacks are rarely designed. Hacks occur because of how they organically grew. Hacks are happenstance.

Life — and code — is full of hacks.

– = –

Another way to look at them is “technical debt.” Once you know it’s not the right way of doing things you start to divorce yourself from the way things were done in the past and start thinking of how it should have been designed from the start — if only you knew how it would turn out in the end.