Interview with the man who built Google's V8 engine from scratch
ft.com
ft.com
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 ...
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)
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.
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"
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.)
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...
Or, are you only talking about "foreigners" (who look foreign) who speak the host language?
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.
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.
"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.
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.
Wow. I wonder how many 10x programmers got their start in college.
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.
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.
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.
[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)
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.
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.
You come to work, you code, you leave that's as simple as that!
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.
Is technology that hard, or are journalists that lazy? both?