Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Are You A Hacker, Developer or Engineer? (And Why it Matters) (hartleybrody.com)
26 points by hartleybrody on June 25, 2013 | hide | past | favorite | 15 comments


Those terms are used in different ways by different people. Some of the strongest software engineers I've met publicly describe themselves as "hackers". You'll get very confused if you start thinking those words have consistent and distinct meanings. (That's not to say that the underlying categories that the article refers to are invalid.)


For me these are three different classes. A good team needs all three of them. And in no way does this mean 'progress' from one level to the other.

A hacker is an explorer, using, exploiting and playing with new technologies, finding quick solutions, often a bit too bored to implement and debug them, but at the forefront of your development process. Their motivation is the fun of playing with new systems, often you can't motivate them with money. They love the chaos that new stuff brings. An engineer is the overall architect, ensuring the system overall's flow and creating the tie between your teams roles. They love order and structure. A developer is the person who implements the elements of the structure that the architect designed. They are trustworthy and can sit down from 9-5 to do boring code work. They often love clean implementations and efficiency.


I hadn't thought about it in these terms until this post, and then your comment, but I also see three classes that already fit these terms in my mind. Mine are a bit different, though:

Hacker: explorer, exploiter, duct-taper, as you say.

Engineer: has a strong grasp of algorithms and "the metal". Often a good architect, but won't tend to come up with great new designs. May have trouble reading and working with non-engineers' code, or with nebulous 'specs'.

Developer: if the Hacker is motivated by exploring the clever creations of others, the Developer is motivated by a vision of creating new things (cleverly if possible, but the realization of the vision is more important than the cleverness of the solution). Can be a good architect (and UX designer) if they can learn to control their impulses to innovate, rewrite, and adopt bleeding-edge languages and libraries.

In this taxonomy, "trustworthy and can sit down from 9-5 to do boring code work" applies at least as often to Engineers as Developers; my archetype Hacker will start out with schedule/focus difficulties, but improve with age. I think as each of the 'classes' gains experience, especially in the presence of good examples of the other classes, they make progress in the other classes' areas of strength. The Hackers and Developers get better at writing code the Engineers can stand to work with; the Engineers and Developers accumulate arcane knowledge; and the Hackers and Engineers see more of the space of possibility that their tools give them access to.


I look at this a bit differently. An ideal team would be comprised of individuals who possess all three skill sets, but with different specializations.

Having a pure "hacker" and a pure "engineer" in the same group is setting things up for conflict. Along the same lines, having an "engineer" and a "developer" can lead the "engineer" towards being an Ivory Tower Architect.

In a team that I'm a part of, I want to split the work around a bit. Sometimes people get to do prototypes, sometimes you have to sit back and write a spec or draw up an architecture diagram, and other times you have you have to do the boring coding work.

I'm not sure about others, but I strive to be able to do all three roles when the project at hand demands it.


That's a really good point I hadn't thought about. I'm trying to imagine the career path of someone who just wanted to be a hacker. How would they progress?

Also, would you say most engineers started out as hackers, or do you think it's possible to jump straight through the levels.


I think what you describe as your experience of hacking is mostly a process of learning through experimentation. Many people learn differently - some first want to understand by studying themselves and do not like to experiment. Others like to be taught and told and follow instructions. For managers it's really important to understand that learning curves are very different - someone may be faced with new technology and write functional code within the day, another person may need several days. It doesn't mean one is worse than the other over the longer term. I have worked with people who would read through programming language books and only then would start coding, while I met others who would start entire projects from sample code. Like yourself I really like the experimentation path.

Regarding the career of someone as a hacker, there are many of them, they just have to find the right environment with enough freedom to work in. Difficult to find it in a corporate environment, but I have seen it happen.


Most engineers as described in the article come from the developer group described in the article. I've found most hackers end up in systems administration, wall street, security, etc. Situations where there is a lot of work that involves systems integration, writing throw away programs to solve a specific problem, etc.


Now, I really do not consent with the terminology given in the article. Here's an alternative description:

In the old days of computer jargon a hacker would be someone who would be able to optimize the hell out of a code by exhibiting a crystalline beauty in his code at the same time. He would achieve his goals sometimes by unexpected means and ways. He would take pride in his code, which could not have been produced in an industrial fashion.

In the even as old debate of art vs engineering, an engineer would be the more bovine species. In reality a good software engineer is someone who doesn't focus just on the brilliance of code, but (also) on the aspects of its social production. (Is the architecture suitable to be broken up into programmers' tasks? Is the algorithm understandable? Is it maintainable? Often it's better to go for a more mediocre solution in terms of code efficience and rather have a reproducible and maintainable expression of the underlying ideas than some kind of mind twisting wizardry in your code base.) A software engineer is focused on the production of code as an industrial process.

A developer comes in all flavors, occupying any position in this continuum. He might be a hacker, but knows about the limitations of industrial processes. Generally, a developer is expected to be focused more on the task than on the social process of its production. He "speaks" his languages and knows the APIs by heart. You could say, he's centered on solutions, often encapsulating his knowledge and achievements in opaque libraries for the benefit of more earthly users.

And for the term hacker as used in the article, someone who's just poking around and not really knowing what he/she is doing? Isn't there a word like "script kiddy"? (Yes, the classic hacker was also poking around, but to be considered a true hacker, this would lead to supreme knowledge and insight in the system that would even transcend the ones of the system's designers.)

Not that this could be claimed to be more true in any way, it's just an alternative description. But as for me, it's rather a question of attitude than of levels of skills.


This is all on a continuum, so I think these labels overcomplicate this. All of us started at the "bang on things until they work" stage, whether it was in 1985 with a C64 or 2013 a web tutorial.

A person can be in multiple stages at once (expert in backend design, clueless about Cocoa, whatever), but all software shares many core concepts and so experience helps with understanding new systems.

But nothing has really changed, becoming a really good software hacker/dev/engineer/whatever just takes a lot of time, a lot of _doing_ (sorry, reading books doesn't count IMHO). Some people top out at some point, but there's no shortcuts, you're still looking at 10K hours, like anything else.

Norvig had it right: http://norvig.com/21-days.html


Are you a FOO?

We can't agree. As the very few people who have bothered to comment here have shown. And we are all FOOs or BARs or BAZzes. All of us!

Why it matters?

Well, it probably doesn't unless you have an agenda. I am not a "full stack 'web developer'" (hate me if you want but web dev isn't "full stack") nor an author of a marketing book. I don't have an agenda. I just have to post crap like this because I can't downvote the noise out of existence.


This article could have made some sense in terms of self-reflection à la "What's your attitude to code?" (See the alternative description below.) But as it is, it's just an exhibit of a single-minded attitude by itself.


I don't really agree with this. Someone could definitely be an engineer in one area of coding but have absolutely no clue when it comes to doing something else, but they could find code on StackOverflow and put a working solution together. Does that drop them back down to hacker? I don't think so...


Considering we're on "Hacker News", is the OP trying to insinuate that we're all amateurs?

...

This is the only definition of "hacker" that should be accepted IMO:

http://www.catb.org/jargon/html/H/hacker.html

And, for further reference:

http://catb.org/jargon/html/introduction.html


I think this definition of hacker is lacking and based on the wrong context.

Someone that 'hacks' at something is generally someone that is just trying to reach an end (e.g., copypasta).

However, when you look at a 'hacker' in a computer context, it's typically someone who can figure out how to push the boundaries or exploit a weakness in a given system.


Back in the old times there were hackers and programmers.

Programmers had a degree and understood malloc and bitwise operations. They were engineers, but they were not "cool". "Programmer" wasn't a good word anyway, so they called themselves "Software Engineers". They worked for big companies, creating boring software for managing numbers and creating graphs in a fancy way. Yep, there was only IE4 back then and nobody ever thought that you could create JS script more than 100 lines, which does something good, so they had to learn and use Delphi, Visual C, etc.

Hackers were people that understood security flaws and exploited them ( also they were the guys that steal from someone's credit card and similar. ) Pretty much the hackers were those people who dropped out of school and didn't want to go back, because they hated programming complex stuff. This didn't make them non-experts. In fact back in those days hackers didn't need to work for a big company and made money with doing fancy network-routing kernel-hacking stuff for a local internet provider, buying / selling three-letter domains ( old times remember! ), creating and supporting websites for pirated software, MP3s, etc ( Imagine Morpheus' matrix team ... ) Hacker was more like a criminal. ( Remember the first movie, titled "Hacker"? )

Nowadays :

Now I see some different perspective here. You got your CS degree for a couple of years and you see that the technology from your uni is obsolete. Yep, C, C++ are here for good, but if you want to deal with Web applications and web development you'll have to know Zepto, Backbone, Angular, LESS, SCSS and nothing of this is old enough ( and perhaps will never be ) for university.

So in summary ( IMHO ) :

Engineer for me is someone who does low-level programming ( C, ASM, C++, etc. ) and knows what Hz is by definition. Developer (web) is someone who develops some stuff and don't predict Memory flaws and doesn't do flow-charts for most of his work ( Although, he does some testing :D ). Hacker (nowadays) is a Developer on the edge - He is a developer, but also wants to enhance his work into an art. ( writes plugins, frameworks, etc. )




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: