
Hacker vs Engineer - Know The Difference! - imgabe
http://www.pchristensen.com/blog/articles/hacker-vs-engineer-know-the-difference/
======
sadiq
The term 'Engineer' is so widely abused in many parts of the world (such as
the UK, where I live) that I may be msinterpreting your use, apologies if I
am.

I believe there's a fundamental reason there's distance between the two. I'm
on to my second degree in Engineering at the moment but I remember back in my
undergraduate days.

One thing you realise quickly when you're learning alongside mechanical, civil
and electrical engineers is that if you get it wrong, people die. You can't
afford to do quick solutions and fix it later. You have to get it right first
time or lives could be at stake.

You could kill several people with any one of the dozen or so robots we have
downstairs and poorly written software. When you realise that, it changes the
way you program.

~~~
pchristensen
I think that the definition still works - you just need to go farther down the
scale towards pure engineering, and you start running into things like anti-
lock-brake sensor programming, bridge design, refinery design, etc. The
constraint "no failure whatsoever" is a pretty hard constraint, and while it
may limit a lot of options and take more time and care, it would let you
pursue perfection and responsibility to a degree not possible with regular
business apps.

~~~
davidw
Yeah, I had a boss who liked to bitch about how NASA can do all this great
stuff that works the very first time. I told him we could too if we had
millions of dollars, and accepted the fact that it would take a long time to
deliver even relatively simple components. And of course _nothing_ would touch
the running system without weeks of QA.

------
menloparkbum
In startup world, the difference is:

Hacker: beta is out the door in a month, features get tacked on every 2 days
in the middle of the night, million users in a year, $100M exit in 18 months,
anyone who sees the code would cry.

Engineer: can't release the beta because no proper QA cycle, no features can
be released until the beta code base has been refactored with proper unit
tests, less than 2000 private beta users after a year, $10M series B round
after 18 months to keep the company afloat, everyone cries when they see their
hacker competitors' new automobiles

~~~
pchristensen
Mixing metaphors from the post a little bit, but yes, in the startup world, if
you take time to engineer before you have a proven product, you'll get
squashed. On the other hand, with a proven and successful product, if it's
poorly engineered, it will be too expensive to scale or modify. Different
situations, different priorities.

~~~
derefr
What this says to me is that:

    
    
        hacking: 0 < version <= 1.0
        engineering: version > 1.0
    

In other words, as soon as the product is "established" as a pile of hacks,
all hackers should be taken off the project (temporarily) and a complete
white-room rewrite should be done by a team of engineers, with one of the
criteria being "to closely match the original product as possible while
creating room for future expansion."

Then, the hackers (now known as "R&D") can have at the new codebase, but in a
distributed SCM way--a hacker can only work on their branch, and any approved
branch must be white-room redeveloped by an engineer before being put into the
clean code-base.

...or, "What I Would Do If I Ran Some Sort of Military Project With Unlimited
Funding and No Time Constraints"

~~~
cstejerean
"a complete white-room rewrite should be done by a team of engineers"

NO! NO! NO!

Never allow your engineers or anyone else to do a full rewrite of anything
that currently works and serves the needs of your users. While they're busy
rewriting (and it will take SOME TIME) you're not pushing out new features and
your competitors are (remember Lotus 1-2-3?). And if you are pushing new
features while your engineers are doing a rewrite they will NEVER catch up.

The solution: Make sure your application has tests from the start (and don't
allow any excuses for not writing tests) and you can slowly refactor and
rewrite small parts of your app, one bit at a time.

There are some exceptions to this, some companies have managed to successfully
rewrite their software from scratch. But consider that a statistical anomaly
and don't try to replicate it (and chances are it was rewritten by a team of
super hackers, not a bunch of engineers trying to find the most perfect,
scalable solution).

------
naish
I would suggest that hackers and engineers need not be mutually exclusive. One
could assume either role, depending on the needs of the situation.

~~~
pchristensen
True, for any given project you need some of both. The whole post made so much
sense when I was dealing in the abstract, but when I got to the end and had to
tie it to development, I realized I had painted myself into a corner. I'll go
back and clarify.

Thanks!

EDIT: I expanded the last paragraph to clarify that point. I think it makes
more sense now.

------
henning
Can we all stop pretending software development is engineering? For
chrissakes.

We don't build bridges, we make valuable things people will give us money for.
We solve problems. We respond to rapidly changing, conflicting requirements.

How many suspension bridge projects have turned into skyscraper construction
projects over the course of two months? Now, how many web startups have
radically changed their idea? Flickr started as an online game, you know.

I'm extremely suspicious of anyone who calls themselves a "software engineer."

~~~
pchristensen
I tried to convey the idea that it was a continuum between hacking and
engineering. "Software engineering" is a lot closer to hacking than it is to
hard engineering like chemical, aeronautical, or civil. It doesn't have the
extreme safety requirements of building a bridge or a rocket booster, but it
does have constraints on development cost, time, and performance that you can
blissfully ignore in exploratory hacking.

~~~
jlf
With all due respect, your assertion that software engineering lacks extreme
safety requirements is false. Like any engineering discipline, software
engineering is applied to both safety critical and non-safety critical
domains.

When I was in school this article[0] was required reading. Your life and
safety depend on software engineers every time you dial 911, ride an airplane,
etc. Not everyone is writing Facebook applications :)

[0] <http://sunnyday.mit.edu/papers/therac.pdf>

~~~
pchristensen
It's hard to make definitive statements about field as huge as "software" or
"engineering". Yes, there are areas of software with high requirements for
safety (avionics), performance (air traffic control), etc, just like there are
areas of engineering that don't have them (improving the manufacturing process
to make toothbrushes cheaper). I'm using it in the statistical general sense,
sort of like "Men are taller than women." More software gets written for
business apps than anything else, and the strict safety requirements aren't
there.

------
tel
_Note that this doesn’t mean that an engineer is any less creative than a
hacker. On the contrary, the constraints provided by the engineering problem
can provoke more creative and original thinking than that of the original
invention._

Take a look at that quote and then read this article:
<http://alistapart.com/articles/oncreativity>

Hacking is not necessarily a very creative endeavor. Instead it is more
inspiring.

~~~
pchristensen
That was a great article (especially in conjunction with what I wrote) and I
think you might have inspired another essay from me!

------
timr
I find it interesting that you talk about how engineers can be creative, but
then end the piece with an comment that engineering _"feeds my family"_ , as
if it were an otherwise shameful thing to be doing.

Maybe I'm reading too much into it. In any case, sometimes I'm a hacker,
sometimes I'm an engineer...but I get _really_ annoyed when people think I
should act a certain way because of my current job title.

~~~
pchristensen
Yeah, the job title things was just an excuse to introduce the continuum - I
purposely picked engineer instead of software engineer in the rest of the post
so I could talk about in terms of actions instead of titles.

About the "feed my family" - when you're on a forum like this one where so
many of the people are young single guys sacrificing all to follow the
billionaire/world domination dream, it's _not_ sexy to say you make decent
money fixing bugs for an app that helps gazillion dollar companies make more
money. I get to do some cool stuff (that I probably wouldn't be doing in my
own projects) and facing different constraints, and I do it while doing a good
job providing for my wife and kids. No shame in it at all, it's just atypical
for Hacker News.

~~~
timr
I understand. I'm not sure why that caught my eye, but if I had to guess, it's
because it was the one bit of wishy-washy-ness in otherwise solid writing.

I was right there with you on the Ikea metaphor, and thought you were doing a
great job of defending the creativity of the lowly engineer, but then you
seemed to go apologetic at the end. I hope you don't think I'm arrogant, if I
suggest that you cut that bit out. ;-)

~~~
pchristensen
How about this:

"Right now I'm a software engineer (really, it says it on my business card!)
and it has been good to me. I get unusual technical challenges that I wouldn't
have come across in my own projects, and unlike the "friend's couch and ramen"
startup life, I can feeds myself and my family and live comfortably."

~~~
timr
I like it. Sounds much less defensive.

------
dhimes
So, a hacker is basically a scientist? Cool.

~~~
pchristensen
When I talked this idea out in my head, it was originally "Scientist vs
Engineer", but I changed it to Hacker for the article because of the kind of
people that read my blog.

~~~
dhimes
It wouldn't surprise me to learn that the kind of people who used to go into
physics now hack. After all, I have a phd in physics, and I find hacking to be
really fun...

~~~
hhm
This comment is very, very interesting... I keep reading about physics people
who now are running 2.0 companies and that kind of stuff. But my question for
you is: don't you miss science when working on a 2.0 environment? Or how do
you correlate one subject with the other?

~~~
dhimes
Yes, I miss practicing science a lot. It was a blast to do (I did theoretical
work, which included a lot of computer modeling). But really, being a
scientist is a frame of mind. Being a practicing scientist is a different
story.

I don't consider mine a 2.0, incidentally.

~~~
hhm
Thanks a lot for your interesting reply, I was very curious about it.

