This post was migrated from my previous blog managed by an old CMS. Some parts may be broken or poorly formatted, images may be missing, etc. Feel free to report an issue.

The word "hacker" means a lot of things these days. If you ask a "regular person" they'll most likely imagine some criminal-looking person in a dark room staring at a bunch of gibberish on a computer. Ask someone in the Valley though, and you'll probably get a few different definitions, and most likely a few, "I'm a hacker!"

Over the past few years, the term "hack" has come to be used with praise. Developers all over will wear it as a badge of honor, proudly proclaiming, "currently hacking ______" in their Twitter bios. In some circles, "hacking" simply refers to the regular programming or development someone does on a daily basis. This is a dangerous way to think about our work.

If you describe your everyday development as "hacking", I'm going to assume your code is bad.

Consider how we use the word "hacking" outside computing. It generally refers to a solution to something that works but is carelessly thrown together. It gets the job done, but you can look at it and see that it's a silly solution. As much as some of us will wear the "hacking" badge proudly, the non-computing use of "hacking" is oddly fitting for the current state of application development.

In order to keep pace with an ever-increasing rate of "innovation" we settle for solutions to problems that work but are far from elegant. The NPM left-padding incident is nothing more than a result of this mindset. A "move fast and break things" mentality that means the products we build become black boxes of near magic that no one actually understands, but at the end of the day we can feel proud of because we earn the coveted label of "hacker". This is what leads the Facebook app to be composed of over 18,000 classes, and for dozens of widely used tools to break because one person decided their stupidly tiny packages shouldn't be hosted in the one place everyone else expects them to be. Our products are hacks. Have we sunk so low that hack solutions are good enough? Are we forgetting how to program?

Would it be so bad to slow down a little and give a damn about how we're solving problems, and not just that we've solved them? I'm not saying we should always reinvent the wheel, but maybe we should just stop hacking.