47 comments

[ 3.1 ms ] story [ 37.3 ms ] thread
Bak may be a computing genius, but he didn’t touch a computer until he was at university.

Wow. I wonder how many 10x programmers got their start in college.

Would be an interesting poll for HN. I'm in that same boat, I bet a lot of the readers here are too.
I learned while in college, but not from it. I needed money, so I freelanced as a web developer. I've still never been in a CompSci course, but they sound stuffy.
Yeah, computers in high school were only for nerds. Nobody wants to hang with the calculator crowd. Later on that changed.
Same here, had an Amiga before college, but only started programming in college.
David Heinemeier Hansson has said the same thing, and talked about how it never interfered with his ability to do things like Rails.
Is he a genius programmer or marketer?
I'd say both.
I haven't seen any evidence that DHH is a genius programmer, especially when his work is compared to that of someone like Lars Bak. Do you have a particular work of DHH's in mind as demonstrative of truly exceptional intellect and programming ability?

I reviewed Rail's ORM implementation extensively when researching the field, and I found DHH's implementation to be remarkably naive, with most advances provided by third party developers, and absolutely no demonstrative knowledge (theoretical or otherwise) of the underlying relational algebra, security concerns, etc.

A very simple example of implementation naivety: As of 2004, ActiveRecord implementation failed to even use parametrized SQL statements and was open to a variety of SQL injection attacks:

http://article.gmane.org/gmane.comp.lang.ruby.rails/623

http://article.gmane.org/gmane.comp.lang.ruby.rails/749

In my reviews of DHH's work, I've not found code that I would consider 'genius', but note that this is not an argument that his work is without value.

He simplifies web-development.

Can you say the same thing in regards to the developers that work for the following companies?

SUN (Java), Microsoft (ASP/ASP.NET), Macromedia (ColdFusion).

(and don't forget developers who use PHP, Perl and Python).

Yes, he's sloppy/have no knowledge in certain areas... and I assume that's where people like you, ankhmoop, come into play and contribute. Just like Lars Bak with his soldiers.

You don't need to be a genius to produce value.

In my early 20s, I wrote a piece of widely popular software that's still in very active use today. I didn't solve the problem well, and I wouldn't call the implementation genius by any stretch of the imagination, but I made something useful and quite a few people use it every day -- probably more than use Rails, but I must admit I'm guessing.

For all the value I've produced, I'm still embarrassed by the software, and all the more so when I see other developers emulating my design and approaches that I've since learned to be sub-optimal. The work wasn't genius, but yes, it simplified something important.

The lesson I take away is this: value doesn't require genius, and it's foolish to conflate the two. I try to appreciate the value produced by others without making assumptions regarding their genius.

And OOVM was the company that produced an embedded Smalltalk that was used in systems like speakers and stuff. I had always thought that's a pretty cool piece of work.

[Lars] Bak - "If you have say, a small router or a dishwasher you can upgrade the code while it's running, no reboot is required" (http://www.smalltalk.org/versions/OOVM.html)

Key Takeaway : If you are really really good at what you do, companies will pay you to work out of home, writing Open Source code, from scratch, at your own pace, on your own terms.

For the rest of us there is always enterprise systems and cube farms. :-(. Yeah Ok I am just depressed at how much other programmers are better than me :-(

More seriously though, I wouldn't have thought that there is such a "market" for expertise in writing VM s. Of course you probably get to be that good by not caring how much of a "market" there is to doing the things you love.

"Prestige is just fossilized inspiration. If you do anything well enough, you'll make it prestigious. " - PG in his essay "How to Do What You Love"

maybe not a huge market - but I guess when you can write a VM that works 56[sic] times as fast as IE's JS engine then people tend to let you have your own way :)
I am just depressed at how much other programmers are better than me

Learn a differentiating skill or two and suddenly you're the best programmer in the niche. Human languages, domain expertise, business/soft skills, etc etc. (I am no great shakes as a programmer but, if I actually cared to be "gainfully employed" for the duration of my career, being bilingual in Japanese/English and capable of programming my way out of a paper bag would pretty much guarantee it.)

On a similar note:

If you want an average successful life, it doesn’t take much planning. Just stay out of trouble, go to school, and apply for jobs you might like. But if you want something extraordinary, you have two paths:

1. Become the best at one specific thing.

2. Become very good (top 25%) at two or more things.

The first strategy is difficult to the point of near impossibility. Few people will ever play in the NBA or make a platinum album. I don’t recommend anyone even try.

The second strategy is fairly easy. Everyone has at least a few areas in which they could be in the top 25% with some effort. In my case, I can draw better than most people, but I’m hardly an artist. And I’m not any funnier than the average standup comedian who never makes it big, but I’m funnier than most people. The magic is that few people can draw well and write jokes. It’s the combination of the two that makes what I do so rare. And when you add in my business background, suddenly I had a topic that few cartoonists could hope to understand without living it.

http://dilbertblog.typepad.com/the_dilbert_blog/2007/07/care...

I don't know... if one is great at, say, 3D programming, VM implementation and parsing theory is that being great at 3 things or at 1 thing (a subset of computing)?
Well there probably aren't that many people, if any, that are good at 3D programming, VM implementation and parsing theory - so if you can find a niche that will pay money for those specific skillsets then you're good to go.
3 things - it makes you expertly qualified to write a new programming language for manipulation of 3D video streams...
(I want to make it clear I don't have any of those skills yet, hence "one", not "I")
Another option is to use the existing ability that you have to solve a problem. You don't have to be the world's top PHP/Ruby/Python hacker to create something useful.
I'm curious, as you seemed to have brought up being bilingual several times -- are multilingual (human lingual) programmers rare? I have the impression that they're exceedingly easy to find.

Or, are you only talking about "foreigners" (who look foreign) who speak the host language?

It depends on the language combination. A lot of people told me to study Chinese -- economy of the future and all. My feeling is that there are a lot of Chinese people who speak acceptable English.

However, in a major metropolitan area like Nagoya, you could fit all programmers who are functionally bilingual in a room the size of my kitchen. (It might have actually happened once. Three in one place, crikey.)

There is a certain benefit to having one token white guy around who speaks Japanese, too, but I've got higher ambitions in life than being the token white guy. Besides, every organization only needs one token white guy, but e.g. my employers would hire twelve clones of me for bilingualism if they could.

[Edit: which reminds me. Here's my algorithm for ranking language choices for anyone looking for career prospects: sum(trade between your country and of all countries speaking that language) / sum(number of Americans who speak the language better than you + number of relevant foreigners who speak English better than you speak their language).

The languages that consistently top this heuristic are Korean, Japanese, and maybe Chinese. If you're looking for employment in government, Arabic and possibly Russian are good bets, too. I'd stay away from Spanish for career purposes. I love being able to speak it, don't get me wrong, but you're asking to compete with literally millions of natively bilingual American Hispanics and competing with millions is not the point of the exercise.

Interesting perspective; still surprising: I am trilingual in two languages that you have listed, and somehow I feel that there are plenty of people like me, such that if there was any demand at all it would have been easily and quickly filled.

The programmers who are functionally bilingual in your kitchen, were they all white? Frankly my feeling is that a Japanese, fully bilingual with English, would still be at a disadvantage to a Caucasian who speaks English and passable Japanese. That is to say, P(speaks English + Japanese | Japanese) > P(speaks English + Japanese | Caucasian American), which makes the latter more expensive, or am I mistaken?

I was once advised that to make myself competitive with multilingualism I should study law, and I thought, if that's really what it takes, then, whatever.

Programmers aren't born good. When I started working on OSS projects I wasn't. I had a knack for it, but I wasn't an impressive coder. But after getting involved in open source and working with people better than me, surprise, I got pretty good.

"What you'll wish you'd known" has hit the front page again, and is my favorite of Paul's essays because of the bits about how it's a lot of work to become good.

Now, I don't know Lars, the guy that wrote this engine, but I am old friends with Harri, the guy who wrote the one he was replacing (KJS, original KHTML / WebKit JS engine) and he's smart, but not intimidatingly smart.

Open source developers tend to be some of the best hackers; I know since I've worked with them and I've worked many years full time as a commercial software developer. But the open source hackers don't join the projects as great hackers; they start as mediocre hackers that want to do something cool, and with enough cojones to take getting flamed when they screw up in stride and learn from it. Give that process a couple years, and poof, way above average programming ability.

I was just rereading this and thought of some more interesting context:

This was the KDE project. Harri got in and first wrote ... a modem dialer. Non-trivial, but not exactly mind blowing. A couple years later and much learned, as HTML / JS support was being added, he wrote the JS engine.

I came in and wrote a crappy little flash card application since I was learning German at the time, then an MP3 tagger. The tagger went on to become a full-fledged music jukebox, and I rewrote the ID3v2 and meta-data layer to become TagLib, which has now become more or less the standard ID3v2 implementation (used by most OSS software, Last.fm and a handful of proprietary apps).

In both cases we started small, bumped up our skills and then wrote something with some staying power. When people have done hard projects, it's easy to think it's because they were just born that way, but most of the time, they just kept learning, kept getting better, and eventually had some significant hacker mojo.

I don't think you have to be really really good - I know plenty of people who are do similar work (myself included). Maybe very very lucky? (I wouldn't consider myself very very good).
"Companies don’t really make money out of web browsers – the Explorers, Safaris and Firefoxes of the internet. So why is a new one so important to Google? Why invest time and effort in a free product that generates no income for the company behind it?""

That sounds false to me. AFAIK, Firefox makes a lot of money for Mozilla via the search field (via adsense), and other browsers certainly do the same.

How does Opera make money? Paid by Google?
That (search engines) and licensing their mobile browser among a few ways.
I thought this was kind of funny:

What does annoy him is people misunderstanding his work - or "the technology", as he puts it. One example he gives is an article about him in which the journalist confuses Java and JavaScript (the former is a stand-alone program which can be accessed online, the latter is a browser-dependent scripting language)

I'd say that distinction between Java and Javascript is pretty wrong too ...

That is funny. "Browser-dependent scripting language" isn't too bad for JavaScript. But "stand-alone program" for Java? That's kind of like calling English a "stand-alone dictionary".

Sure, I'm a programmer. But why is it so easy for a journalist to get a definition this wrong? Wikipedia immediately tells one that "Java is a programming language" -- http://en.wikipedia.org/wiki/Java_(programming_language)

Journalists are paid to promote and spin, not to get things right.
Nit pick: JavaScript certainly isn't browser dependent, that just happens to be where it originated and the vast majority of usage takes place.
I can't stand reading articles about some technology I'm familiar with that are written for the average person, even if they're factually correct. It reminds me of this: http://xkcd.com/547/
Sometimes an "average person", like me, is in the early stages of their study of your chosen field Mr. Robinson. As such, articles such as this are very helpful.

Why the disdain and distrust of a novice trying to educate themselves?

No disdain or distrust, I just personally can't stand reading them.
The difficulty is that such articles are often written by people who don't have a deep understanding, either. For this reason, their characterizations have subtle errors.
"Why the disdain and distrust of a novice trying to educate themselves?"

Accepting something that is wrong and dumbed down for "average users" is a disservice to yourself. The entire idea of "average users" and the infantilization that goes along with it is a big problem in the computing industry today. Read Ellen Rose's "User Error," and then when you need to learn something next time, go straight to the best available source for it. Frequently these will be technical reports or refereed papers. You don't need some hack being paid by the word to summarize and misinterpret these for you.

There's a question in the article if he has spent more than 10.000 hours - - I think he has. First, he holds a masters in CS (5 years at Aarhus Uni at minimum). He got his MSc in 1988 and has worked with VM's since then - that's 21 years of experience in implementing VM's. So really, there isn't an easy way to become really, really good at something ;-)
The 10k figure is a nice rule of thumb, but it's not very informative if you're counting them. "10 years to an expert" is also a good rule of thumb (which comes to 10k hours, for 3 hours a day), but it's also uninformative to count years.

For the average person who diligently hacks away, 10 years seems about right. But some people are ferociously quick at improving and that's just how they are.

I liked the part about long hours, in my experience the long hours crowed are only wasting time.

You come to work, you code, you leave that's as simple as that!

Me too, I certainly appreciate the work/life balance this guy is talking about. That's the kind of spirit I'm following and I'm glad some people aren't emphasizing the developer's myth of all nighters.
There is another less known but worth to mention project. There is a man, who wrote highly optimized (literally - he had counted every system call, every buffer) web server with proxy functionality - http://nginx.net/

It is another example how one fanatical (and a little paranoid, of course) person could change the world. It is a brilliant work! If you will take a look at its source code - it is like poetry to those who understands.

This server is being used mostly on extremely high loaded adult or dating sites around the world.

It is also good example of how to do optimizations in general - modify a weakest (a slowest) component, test and measure, change the next one.

(comment deleted)
What does annoy him is people misunderstanding his work – or “the technology”, as he puts it. One example he gives is an article about him in which the journalist confuses Java and JavaScript (the former is a stand-alone program which can be accessed online, the latter is a browser-dependent scripting language). We both laugh at the mistake, and for a moment I feel like Bak and I have clicked.

Is technology that hard, or are journalists that lazy? both?