The term “hacker” is generally met with a poor reaction from the public. It’s easy to understand why when we live in the password protected world the Internet creates for us, and easier still when the media talks about stolen identities, fraudulent credit card transactions, and infamous activist groups like Anonymous and LulzSec.

But hacking, in and of itself, isn’t necessarily a bad thing. Hacking is, most simply, the art of exploiting the weaknesses in a system to accomplish a goal either more efficiently, or that would otherwise be impossible. In fact, you probably use hacks all the time, that you’re not even aware of.

Take for instance, your car. There’s a simple system in place to start your car that most people take for granted. As a basic concept, there’s a battery which powers a starter which starts the engine. The engine then powers the alternator that charges your battery while you drive. In terms of systems, it’s fairly inefficient, because the battery and starter are, for all intents and purposes, just dead weight to a car that’s already running.

Now we’ve all been in a situation where our car didn’t start because of a dead battery – there’s not enough power being supplied to the starter to turn the engine over. But if we could get the engine running, we wouldn’t have to worry about the battery (at least until we turned the car off again).

So, what do we do? We get someone to give us a jump.

It may not seem like a “hack,” per se, but it is. In essence, you’re exploiting the “weakness” of the car’s electrical system, effectively bypassing the only thing that’s standing between you and the open road – the car doesn’t need a battery, the starter just needs enough power for enough time to turn the engine over.

Now, while jumping your car is, technically, a hack, it doesn’t make you a hacker. Being a hacker requires the mindset necessary to dream up that solution in the first place. Programming teaches us this, because you have to break down problems into their most basic components in order to make a computer understand what to do. And in doing so, you begin to understand the system on an intimate level. You know what works, and what doesn’t; how to circumvent a problem; how to perform the same task with fewer instructions; or, most importantly, how to do the same thing in a number of different ways. It’s a method of creative thinking that many people possess, but few utilize.

In computers, it’s important to realize that everything that you do – typing an essay, playing a movie, browsing the internet – is accomplished with a very limited set of instructions. And it’s only the complex combinations of those instructions that result in what we see on the screen. If someone were to understand, intimately, the way those combinations worked, and was able to change or inject their own instructions, the functionality of that system could be changed completely – for better or worse.