
Are You A Hacker, Developer or Engineer? (And Why it Matters) - hartleybrody
http://blog.hartleybrody.com/hacker-developer-engineer/
======
Myrmornis
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.)

------
julianpye
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.

~~~
hartleybrody
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.

~~~
julianpye
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.

------
masswerk
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.

------
shawnb576
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](http://norvig.com/21-days.html)

------
drewcoo
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.

~~~
masswerk
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.

------
adamcanady
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...

------
k3n
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](http://www.catb.org/jargon/html/H/hacker.html)

And, for further reference:

[http://catb.org/jargon/html/introduction.html](http://catb.org/jargon/html/introduction.html)

------
marklubi
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.

------
drinchev
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. )

