
Core competencies of great hackers - possiblemat
http://giraffesoft.ca/blog/2009/03/10/4-core-competencies-of-great-hackers.html
======
jwilliams
Typing speed? Not sure how much code people here write per hour, but I doubt
typing speed is a real issue (the ratio of my staring at the screen thinking
versus coding is probably 10:1).

~~~
jrockway
Typing speed is important for the reason the article mentions -- micro-
interruptions. Most of the time, you just have to type a few words, and the
editor will complete the rest for you. Fine. But a lot of the time, you are
typing a symbol for the first time, and autocompletion doesn't really help. It
breaks your flow if you can't type this symbol quickly and correctly the first
time. (It is also worth pointing out that I can type most words faster than it
would take to cycle through potential expansion candidates, so I only use it
for moderately-long identifiers. Abbreviation expansion becomes less of a time
saver when you learn to type more quickly.)

Anyway, a few months ago, I decided I would learn to properly touch-type (and
increase my typing speed). It was very difficult at first -- I couldn't type
at all, and even simple programming made me really mad. A few months later, I
can type significantly faster, and I make many fewer errors. (As an aside, I
don't think touch-typing was really designed for programmers. All the
important symbols end up under your pinkys, which is not very comfortable. So
I compromise and type some symbols like ()- with my ring-finger. This probably
reduces speed, but it doesn't hurt my hand.)

The common response to typing is "programming is not about typing, it's about
thinking". Sure, that's mostly true. Nobody expects you to sustain 120 wpm
typing for eight hours a day. But, it's very helpful to type quickly in
bursts, to get your ideas in to code form as quickly as possible. Sketching
out that idea in 2 minutes instead of 3 means that your brain has more time to
think about the problem, and has to waste less of its time babysitting your
fingers. I know I get mad when my typing speed is delaying me from trying an
idea as quickly as possible. That's why I decided to do something about it.

I'm glad I spent the time to practice typing. It has made programming and
writing more enjoyable, and didn't take much time or effort at all. The
dismissive attitude of "programming doesn't require typing skills" is
extremely naive.

~~~
jwilliams
_The dismissive attitude of "programming doesn't require typing skills" is
extremely naive._

Shrug... Well I say that because that's my experience. I've never really been
concerned with micro-interruptions. I guess I'm surprised this bothers people
so much (It's the macro interruptions that hurt me more). I've been in
situations where I've been unable to type (or type quickly). I learnt and grew
as a coder more in those times that any other - so a different experience
really.

So, yeah, typing is great. It's a very handy skill to have. It probably helps
a coder a lot, and it's a good thing to know. However, I don't think it makes
you a better coder.

~~~
gnaritas
You're wrong. Learn to type well and then come back and tell us it didn't make
you a better programmer.

If you don't know how to type, then you're wasting brain cycles looking for
keys when you have to type, cycles that would otherwise be spent thinking up
good identifiers and nice function names. Not knowing how to type also means
you'll choose terse identifiers rather than clear ones because it's too much
work typing longer names.

Typing well is a critical skill for a programmer and the only programmers who
don't think so are the ones who can't type.

~~~
axod
Do you really spend that much time typing? I spend most time thinking :/

Obviously there's a lower bound, if you have to look at the keyboard then you
probably need to improve, but the importance of being able to touch type
perfectly is overplayed.

Do all authors _need_ to learn short-hand?

~~~
comatose_kid
More like "do all authors need to learn longhand? Printed lettering is fast
enough".

~~~
axod
I don't think even printed lettering would necessarily make you a bad author
would it?

------
strlen
These things aren't really enough. They're more of "things you need to know be
a computer hobbyist". I did put together a quick list once -- for an HN post
asking what should someone learn as undergrad if they wish to be a web
developer -- of things I'd prefer a back-end developer that I would hire to
know:

<http://news.ycombinator.com/item?id=499880>

Of course, knowing these things (or really, knowing _anything_ ) doesn't make
you a hacker quite yet, it's a title one earns within a community by
contributing to it. As cliche as it is, "how to become a hacker" covers this
part:

<http://www.catb.org/~esr/faqs/hacker-howto.html#status>

~~~
danielharan
Thanks, I was hoping people would add to that list - and certainly wasn't
claiming that covering those 4 skills would make you a hacker.

------
peregrine
Visual Studio is a very powerful editor. Everything that you can do in Visual
Studio through menus you can do through the keyboard. In fact you can setup
visual studio to use emacs shortcuts ( <http://msdn.microsoft.com/en-
us/library/ms165509(VS.80).aspx> ) and I'm sure it exists for Vim and etc.

People who believe the tools make the hacker are naive at best and would
probably think the person with the best shoes wins the race. Not true when it
comes down to it, the person driving those tools, whether they can type 60 wpm
or use Emacs, is the one who is responsible for the creativity and output.

I think the author needs to step back and see if his priorities are in the
right spot.

~~~
sketerpot
The article was pointing out correlations, nothing more.

~~~
hairsupply
"We haven't met a single great hacker that relied on an IDE, although we hear
they exist."

The implication here is completely in the negative.

Further, it's like saying "If you want to be a hacker, use English measuring
units because we've never any met any great hackers who use the metric
system."

Just because a bunch of rails hackers don't use an IDE doesn't imply the
contrapositive.

~~~
danielharan
I hear they exist, I've just never met them. That could be my sampling bias.
None of the people around me relying on IDEs are great hackers.

Instead of arguing about what might have been implied in what I wrote, I'd
rather you introduced me to people you consider great hackers that use an IDE.
Know any?

~~~
hairsupply
The people who I work with whom I regard as great hackers work almost
exclusively in the real time embedded space (industrial automation systems)
and don't have web notoriety.

Slightly more prominent individuals could include Ted Neward
(<http://blogs.tedneward.com>), Joe Duffy
(<http://www.bluebytesoftware.com/blog/default.aspx>), James
Devlin([http://www.codingthewheel.com/archives/how-i-built-a-
working...](http://www.codingthewheel.com/archives/how-i-built-a-working-
poker-bot)), and Dustin Campbell (<http://diditwith.net>)

------
dazzawazza
One of my early mentors taught me that "it's not how fast you type but what
you type" that matters.

I think his lengthy career as a journalist, designer, photographer, M$
engineer, Apple engineer and Google Engineer have proven him correct.

The analogy with understanding/familiarity with your tools is weak. The only
important tool for an engineer is his brain.

(PS I abhor the term hacker)

~~~
apgwoz
> The analogy with understanding/familiarity with your tools is weak. The only
> important tool for an engineer is his brain.

But, an engineer with a great brain and no tools, is weaker. One must
communicate thoughts and ideas in order to be great.

------
mannicken
Well. I type 100-120 wpm, use Emacs, use primarily FAR or cmd.exe (bash in
*nix), and prefer not to debug. I suck though.

Apparently, these four things are not enough to be a great hacker. What I seem
to lack is the mental capacity to clearly see problem out of the box as my
friends (great hackers) do so I have to use all the tools I can to keep up.

it's the kind of sober, relaxed look at a problem that I think separates great
from mediocre. The relaxedness and calmness with which hackers attack problems
-- most people I know and myself would be anxious and pissed off about a
problem. Hackers on the other hand are comfortable and relaxed with problems,
seeing them as something, that is fun to solve. They are like cats who play
with the mice before they catch the prey; they are confident in their ability
to solve the problem, and completely free of tension or stress.

I have that some of the time but very very rarely and I can say, no editor can
even come to the performance-enhancive qualities of Zen-like centering.

------
hairsupply
\- Type fast - Use Linux - Use TextMate/VI/emacs - Don't read documentation

Sounds like "Core competencies of ruby on rails hackers"

~~~
nostrademons
Well, it's more "Core competencies of hackers in the C/C++/UNIX/Scripting/Web
tradition."

Most of the great Windows hackers I know use Visual Studio. Most of the great
Java hackers use IntelliJ. Of course, people in the UNIX/web tradition would
probably not admit that great hackers exist in those cultures, but they've put
out some pretty impressive software...

Also - I suspect that great UNIX/web hackers don't use IDEs because the IDEs
for those languages _suck_. I work on a C++ web team. If you glance around our
monitors, everyone has the same setup: 4-6 terminals, 3-5 emacs/vim windows
open, and Firefox. The funny thing is, many of us are ex-Java programmers, and
we all used either IntelliJ or Eclipse in our Java programming days. And would
love to use something like IntelliJ for C++, but we took one look at the C++
support in Eclipse and ran back to vim.

~~~
curtis
As a data point, I have Firefox building under Eclipse/C++ reasaonably well. I
had to hack the Eclipse project files to tell it where all the headers were
(arguably more a fault of the Mozilla build system), but since then it's
worked surprisingly well. I'm under the impression that Eclipse's C++ support
had improved substantially in the last year, although I can't say for sure,
since this was the first time I'd used it.

------
ardit33
"We haven't met a single great hacker that relied on an IDE, although we hear
they exist. " -- fcuk you. Really. Just an over generalization/stereotyping at
its worst.

I am a good hacker, and yes I use an IDE (eclipse to be exact). I have to code
java for living (mobile), and I think I am one of the earliest developers in
java, and i used to use Textpad, and Vim at my early days. I guess, in your
eyes that makes me a "better developer", but the truth is that some IDEs
really make your life easier. Much easier.

In mobile you have to re-invent the wheel over and over again. From UI, to
basic things as a string tokenizer, and it is impossible to memorize
everything (some of your team memebers implement different functionalities).
IDE's auto completions are very very useful. Also the refactoring facilities
and debuging tools are really useful.

I do use Vim for programming in LUA (does it make me cool?), and I really miss
a lot of these tools. Simple things like variable highlighting, jump to
definition are missing, and it makes the code a pain to read (especially if it
s not yours). If you decide to change a variable name, good luck, you have to
do string search/replace, and the potential for errors is huge.

While a good programmer HAS to be comfortable and good in command line, just
because they use an IDE doesn't make them less of a people.

And the best programmers I have had the chance to work with used IDEs. These
guys implemented a LUA VM in J2ME from scratch, in a couple of months.

I have noticed that this really shallow and douchebag-y attitude comes from
people that use mostly Ruby. It seems that in their eyes, if you don't use
Ruby and textmate, you suck.

But really, fcuk you.

~~~
mroman
I think you missed the rely upon part.

Also, I think the main point of what you quoted is that the additional level
of abstraction does more harm that it does good when it comes to hacking, not
everyday 9-5 in the office type programming.

As I mentioned a bit earlier in this thread, people are confusing programmer
and hacker. The two terms are not synonymous.

------
gills
This should just be titled "Tools used by people with great hacker egos but
may or may not actually be great hackers", because these are _not_ predictors
of great hackers.

~~~
anc2020
> While I won't claim that learning these 4 skills will make you a great
> hacker, it seems unlikely you can become one without them.

------
gord
I confess I just didn't read this - 'core competencies' came up on my watch
list as almost surely spam.

And if typing speed is more relevant than thinking depth then I probably made
the right decision in that Gladwell blink moment.

In another recent HN post, several people had a similar reaction to "shop" as
in 'work for a great ruby shop'...

Heres a partial list of non-sequiturs - six sigma isoN000{0} skillset core
competencies coder java [ contentious, I know, C++ is borderline ] loc - lines
of code metrics / kpis candidate coordinate role leadership deliverables

Competency is particularly insidious - being merely competent rules out any
kind of real craftsmanship, or "Xen and the art of Motorcycle maintenance"
connection to the thing your doing. If your competent, you've checked a box,
and thats the wrong reason to do anything.

Am I overreacting?

------
dan_sim
I don't want to start a war but I'd say that this list is about the
differences between a Windows VS Linux developer. The thing behind what is
said is "get your eyes off of the nice UI. Look and type code".

~~~
kaens
Every "hacker" I've met either:

Doesn't use windows.

Uses the tools listed in the article on windows. (well, windows equivalents
anyhow)

I think the message was more of "Know your tools, know them well. Know them,
and what they are capable of so that you may wield them to their fullest
potential". For software, this involves reading the source when it's
available.

~~~
nostrademons
Could that be because you exclude Windows hackers from your definition of
"hacker"?

I know some folks on the Google Toolbar team. I don't use Toolbar, and neither
do any of my friends. It's desktop software, and desktop software for Windows,
so I mostly ignore it.

But their installed base is _huge_. I'd wager that if you added up the
combined user base of every Web2.0 startup _mentioned_ on this site, you still
wouldn't equal the number of Google Toolbar users worldwide. Are they still
hackers?

FWIW, they use Visual Studio.

~~~
dmix
Exactly, and look at IE6... combine the amount of every web 1.0 startup's VC
funding and you wouldn't have the number of users that used IE6.

AND they used Visual Studio.

Userbase != great hackers

~~~
whatusername
IE6 was good.

It was a genuinely better browser than the competition. The problem isn't that
IE6 wasn't a good browser - it's that IE6 was a great browser in 2001. But in
2009 - it's not really up to scratch.

------
rmaccloy
In fact you could condense all of these into "know your tools extremely well",
and you can take it further to "optimize yourself/your environment
relentlessly".

I've known great hackers who used Eclipse, sam, acme, Brief, UltraEdit and
everything under the sun.

Working with someone who doesn't know their chosen tools (people who use menus
to work their editor, hand edit things instead of using sed/awk/perl, etc) is
extremely painful, and seeing someone profess to use a tool but not operate it
well is a huge warning sign to me. Same with slow typists: pair programming
with such sucks.

------
wwalker3
Great hackers create great works from within, not from their tools or their
environment. Their core competencies are things like relentless self-
improvement, not the use of a particular editor or a particular OS.

The author's list of core competencies (fast typing, command line, vim, Linux)
sounds more like a list of cultural traits.

------
adatta02
The point about text editors is absurd. One because comparing TextMate to vim
or emacs is almost apples and oranges. And secondly because writing something
Java without completions is going to be horrendously slow just because of all
the arcane function and property names.

~~~
zmimon
To me it's kind of a weird arbitrary divide to make. All the text editors
mentioned offer IDE like functionality at various levels. They help you with
various kinds of auto-complete, context sensitive help, etc. etc. Where is the
line that when crossed makes it an IDE an not an editor?

To be fair to the author though, the phrase was "rely on an IDE", not "use an
IDE" which is a little different.

I think a more valid way to look at it is that great hackers tend to use
highly advanced editors and they totally own them from top to bottom - whether
they are in an IDE or not. That might just mean that they have a completely
customized eclipse setup and know every hotkey extension innately or (like
myself) use powerful editor plugins like viPlugin to ratchet up the
productivity.

------
swolchok
I feel that this article is the sort I would not like to see on HN, because it
can't teach anything to hackers. As seen by the discussion it elicited, it's
just starting a write-only conversation with many elements of a flame war.

------
MaysonL
There are no great Smalltalk hackers?

Great hackers don't use IDEs: they write them.

~~~
gnaritas
Glad someone else noticed that glaring oversight. If you haven't met a great
hacker who doesn't use emacs/vim/textmate, then you need to get out more,
you're a sheltered child.

------
keefe
"Let's not pick editor fights: the only 3 editors we know to be used by great
hackers are TextMate, vim and emacs. The most productive hackers will often
customize their editor heavily."

I think this is rather ignorant... eclipse >> vim or emacs. What's a hacker
anyway? Presumably, they are talking about someone who writes code and IDEs
make writing code easier.

------
psyklic
I completely disagree with all four points. A hacker can only use TextMate,
vim, or emacs? You kidding me? And who writes code at more than 60 wpm --
writing code is a thinking sport, not a race to the finish.

Diving into a large codebase can be important for certain hackers, but
honestly this sounds like a skill moreso needed for corporate programmers ...

------
Tichy
So if I learn these things, will I miraculously be transformed into a great
hacker? Or will I have wasted my time, while others spent the same time
launching several profitable web sites with Ruby on Rails?

------
pskomoroch
I'd take problem solving ability and creativity over typing speed any day, but
one area where typing speed seems to help is for live coding or instructing
others...

------
jerome_etienne
well coding is not part of being a 'great hacker' according to this list...
but the text editor you are using is part of it... Im not convinced to say the
least, the word 'poser' comes to my mind, not sure why

------
TwoBit
John Carmack has always used the VC++ IDE. I rest my case.

------
ANaimi
grow up

------
mroman
Think the article should have been titled

"Core Competencies of Coders"

I expected something that would include, at the very least, Algorithms and
Data Structures.

Software Construction is not the sole realm of the Hacker.

coder!=hacker

Coding is not the sole realm of Software Construction.

It is too bad that so many people totally mix concepts up like that, playing
fast and loose with synonyms in that manner is like wearing a sign saying "I
am an ignorant two bit tech person in a hurry"

Say, what about Cray, when he toggled an entire OS (that he designed) into a
machine (that he designed) through the front panel switches, in Octal? AND IT
WORKED.

Crappy programmer, can't type x number of wpm.

ROFLMAO

EDIT (now that I paused for breath)

Worse programmer even, for not USING A KEYBOARD

ROFLMAO

