Why You Shouldn’t Employ “Great Hackers”
This article entitled “Great Hackers” really pissed me off. It is just so far off-base that it’s annoying. It’s not the kind of article that is generally wrong on facts, but just wrong on intentions and the concepts of what’s good and what’s bad. There are a few really, really stupid and outright wrong statements in it though. The worst of these is:
The programmers you’ll be able to hire to work on a Java project won’t be as smart as the ones you could get to work on a project written in Python.
That statement referenced a footnote as well which I thought might point to some scientific survey of Java programmers vs Python programmers so that the statement at least had some backing. Sadly, the footnote was:
[2] When Google advertises Java programming jobs, they cleverly require Python experience.
Honestly, doesn’t everyone know that real programmers code in C? Smart programmers aren’t Java hackers, smart programmers aren’t Python hackers, smart programmers use the best tool for the job. Sometimes that’s C, sometimes that’s Java, sometimes that’s Python and sometimes it’s a pen and paper.
Also:
Great hackers also generally insist on using open source software.
Maybe, but probably not. Great programmers use the best tool for the job regardless of whether it’s open source or not. Furthermore, programmers who aren’t in the opensource world tend to be unknown and you definitely wouldn’t know if they were great or not because you most likely won’t see the result of their work.
My biggest complaint about the article though, is that it espouses “Great Hackers” as something to aspire to. Great hackers have their place - they are really good at quickly creating prototypes because they are just so efficient at writing code. The golden rule of prototypes definitely applies though: always throw it out. Great hackers are dangerous because they write code so rapidly and are so focussed on doing what they enjoy that they don’t stop to design, document and test carefully. In software development, writing the code is the easy part. The design is the critical part to get it working correctly, the documentation is critical to keeping it working correctly and the testing is the part that takes up most of the time (while being necessary because of the problems introduced in the coding stage).
So when we look at a project the thing we least want is someone who is obsessed with writing code and who makes a habit of rushing in and implementing code without first designing it and rushes off to the next thing before they’ve properly documented and tested it. In short the worst advice you could give someone who wants to be a great programmer is:
make the following deal with yourself: you never have to work on boring projects (unless your family will starve otherwise), and in return, you’ll never allow yourself to do a half-assed job.
Paul Graham said that was the way to become a great hacker because:
All the great hackers I know seem to have made that deal, though perhaps none of them had any choice in the matter.
Which is precisely why I wouldn’t ever hire a great hacker. I’ll hire the great software engineer instead.

August 1st, 2004 at 2:52 pm
Honestly, doesn’t everyone know that real programmers code in C?
Actually, Real Programmers use FORTRAN.
Apparently. :-)
August 2nd, 2004 at 8:20 am
Twiddle the inodes with a refrigerator magnet…
August 3rd, 2004 at 1:23 am
Your point about “Great hackers also generally insist on using open source software.” is not exactly correct.
Even though great programmers do insist on the correct tool for the job… most great programmers will choose open source given the choice. And the reason why is that you can see the source. Would I ever pick to use Visual Basic over wxWindows/Python? Oh yeah, there are things that VB does for GUIs that make life great, but that does not mean that I would not prefer wxWindows/Python instead. In fact to me the correct technical choice is almost always open source. Mainly for my own sense of security. If something goes wrong with wxWindows/Python I can figure it out. If something happens with VB, in most cases it is hard if not impossible since the source is not available.
August 3rd, 2004 at 1:33 am
“Among professional programmers, the term hacker implies an amateur or a programmer who lacks formal training.”
http://www.google.com/search?q=define%3Ahacker&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8
August 4th, 2004 at 6:54 pm
No doubt this article was written by a python enthusiast. The python community has been astrosurfing for a while now, and a big part of it is made of fanatic “langage church” zealots. So I give no more credit to it than I give to an angry man who’s toy does not attract other guys.
September 4th, 2004 at 3:32 am
About design…
A great hacker will create a better design “just coding it” than nearly every other group will do with weeks of careful work with Together or another modelling tool.
Indeed, even practices like eXtreme Programming espouse the idea of writing flexible code NOW with the best design you can think of and incrementally improving it and upgrading it throughout the life of the project.
The Pragmatic Programmers also espouse a similar approach, using what they call a “Tracer Bullet”, which is a code skeleton that is your ‘best shot’ which may or may not be thrown out.
The days of design-up-front are thankfully coming to a close, and we’re getting better software as a result.
A great hacker (in this context) is someone who is more productive. Keep that in mind as you read these. This hypothetical great hacker not only writes code faster, but s/he writes code that you keep (and want to keep). Not only that, they write code that saves you time in the long run too.
This kind of code longevity can only be achieved by experience in the domain. And the only way to get experience is to try. Incremental refinement is the essence of this approach.
March 9th, 2005 at 12:23 am
Well, I think its stupid how people love to employ degree/cert people that proberly don’t even know as much as the local hacker on the block, and most being 15 - 20 yrs old….
I was talking to a security company that was asking for someone to fill a job as a Ethical Hacker, I asked if I would qulify, even though I may not have degree’s or certs, I do have 12 yrs experience in hacking, programming, phreaking, carding.
The guy said no to me because he would rather someone with the piece of paper stating he is qulified for the job (needs Ethical Hackers cert). I also said to him that most the degree gurus (as if) think they know there stuff when they don’t…
Example:
Microsoft, all Governments, Military, Large Companies, Security Companies list goes on… They have the so called best of the best system admins, network admins, security analysts, security consultants….etc… that work for them, but in the end a hacker always gains access…and most the hackers that do are like 15 yrs old.. They know C/C++, VB, Perl, HTML, ASP, .NET, Python, Java, FORTRAN, Assembly, SQL, LINUX, UNIX, etc…. Why not hire HACKERS, they are the best you can do, they know how hackers hack, they know where to look and how to secure, if a hacker hacked the company they could track them down easy.
I SAY HIRE THEM !!!!!
Lord GrayFox a.k.a T3
Leader DarkFoxes-Elite
Owner of Cyber Crime Intelligence Security Consulting
POC 4118 DEFCON
.::Learn More Become More::.
October 30th, 2005 at 2:04 am
The best coders I have ever met are part hacker part engineer. They love their work and the do it properly.