Such a pity, the negative connotation that attends “hack.” In an environment where technologies are changing at lightning speeds we must realign our thinking and think of a “hack” as the same as “beta.” Nobody hates “beta.”
As usual we turn to that encyclopedia hack, Wikipedia, for a good jumping off point:
In modern computing terminology, a kludge (or often a “hack”) is a solution to a problem, doing a task, or fixing a system that is inefficient, inelegant, or even unfathomable, but which nevertheless (more or less) works.
Indeed, the basis of hacking is problem-solving. Attacking a to-do means gathering the right tools and gauging the intent: Figure out what needs to be done, and what the desired outcome should be. Then do it. The need for permanence in the solution is always relative to the desired result.
The notion of “hack” is not new, nor is it limited to computer technologies. What is different today than, say, 10 years ago, is that the technologies that define our environment change so rapidly. When we consider the world of open source software (which powers most of the Internet and brings you this charmingly spontaneous encyclical) we see that a “lasting solution” is really nothing more than a mature collection of beta versions that has documentation.
Help! My CFO Would Rather Spend $40,000 On A Brand Name Than $0 On Something More Stable But Built By A Loose Confederation Of Nonsalaried Hobbyists!
From laptops to smartphones to your car and your fridge and everything in between, we are inundated with computing devices. One would think that there would be more and more fragmentation in software development. After all, when there was only IBM, one needed to program only for IBM.
But one would be wrong. As data models continue to mature and the availability of APIs that deliver them continues to expand, programming for all these gizmos has actually simplified. What passes for application development today is usually a well-conceived bit of programmatic synthesis: mashing-up different code snippets and pre-existing libraries to effect a unique, task-oriented outcome.
The conceptual development of most mobile apps is almost always a mash-up: Let’s combine Twitter’s login with the Yellow Pages’ API and Mapquest’s API, add a small database and enrobe it in a fresh interface to create “Family Finder*”, a new way to manage driving directions for your entire family. Tagline: ‘Better than over the river and through the woods.’
There is nothing new under the sun, only clever ways of capturing, directing and applying its energy.
What this means for a business today (as opposed to, say, 10 years ago) is that today you (the client) pay big money not for from-scratch application development to handle a single task, but for an architect who knows how to mash up existing code libraries and relevant APIs into a technical solution that gets you most of the way there, and a team of professionals who know how to rapidly tweak, deploy, test, revise, and redeploy to bring the project across the goal line. Instead of paying for someone to weave custom fabric and then hand-piece it together into a bespoke suit, you hire someone who can pull together different articles of clothing from off the rack, and then leave it to a team who can convert it into a tuxedo or a hockey uniform.
Or a sheath dress, if that’s how you roll.
Hacking, therefore, is really not a description of a shortcoming, but rather of the acknowledgement that problem-solving is evolutionary. What we fix today will need to be fixed anew (or, perhaps replace “fixed anew” with “adapted”) in the near future. And “near” is relative. Max Goldstein said it best in a quite brilliant blog post on the subject of hacking:
The real problems facing the world are applied, which means that there is no right answer. Any answer, even a hack, is making progress.
Go forth and encourage the developers in your life to make progress. Or hack. Either/or.
* – This is a completely false concept. Swipe it if you want but cut me in for 25%. If this is already your idea then you’re definitely a genius! No, wait…I’ll sue!!!