Search This Blog


Friday, November 14, 2008

Software Developers In a Rush

Peter Norvig , the director of research at Google, wrote an article Teach Yourself Programming in Ten Years . He asked why everyone was in such a rush to learn programming languages in a hurry, resulting in an endless offering of books, websites, blogs that promised to teach programming in 24 hours or 7 days.

Peter Norvig did a good job explaining why good programmers took years to refine their crafts. I could agree with him. But maybe there is a plethora of reasons why developers are always in a rush, and why they must. I used to think that learning one language, taking the time to fully understand it was much more important than trying to catch the next silver tools. But now I realize that this is a completely non sensible strategy.

Developers are not coding robots; they have family to feed, bills to pay and peers to compare. They are smart, well, at least smarter than the average population, and maybe no less smarter than doctors, lawyers and bankers. But their earning is never as high as doctors and lawyers, and certainly cannot compare to the bankers'.

Now, if the developers stay in a field for a long time, there is a real danger that they will lose their marketability. Once that particular skills are no longer available, the developers have no way to go.

This is a real world, my friend. No one really cares how good you are with the so called dinosaur languages unless they are also doing those languages. Even though design patterns and unit testing are important , but headhunters and HR are more interested in skills and languages , thank you very much. Tell them that you are very good in GOF in C++ but know nothing about database design... I think you will be the first one to be filter out.

So yup, even though no one has the time to learn everything,  but they have to learn as much as possible. It was like buying insurance to cover as much cases of accidents as possible, just in case. In other words, the developers have to pick up as many technologies and skills as possible just to remain marketable and stay competitive.

We are in a rush to jump into the latest bandwagon, even though we know it's more important to just learn the fundamentals. But we have no choice. Without doing so we will become dinosaurs and at the mercy of our current job.


jespern said...

You're missing the point. Norvig speaks of the fundamentals of programming, not one specific language that you specialize in. There are a couple of paradigms in modern programming, and some of them are very recent. Functional programming has gotten a lot of attention lately, and it makes a lot more sense doing that on multicore computers than imperative programming do.

My point is that if you learned a couple of imperative programming languages 15 years ago, and you knew them damn well, then you could pick up any language today and get up to speed.

Soon Hui said...

My point is that if you learned a couple of imperative programming languages 15 years ago, and you knew them damn well, then you could pick up any language today and get up to speed.

This I can agree, but as far as marketability is concerned, this is absolutely not important.

What the headhunters and HR care is whether you have the relevant experience in a particular language, not whether you are sound in your foundation.

And that's why software developers are always in a rush to learn the latest technologies, even at the expense of the fundamentals.

Anonymous said...

Programmers are way smarter than doctors, lawyers and bankers. That's why they write AI medical diagnostic programs for instance. It's just that you need people skills (ugh) for these professions, something most programmers don't have. That's why they don't get paid as much.

Dantelope said...

If I ever get you on an interview call, I will know within the first 3 minutes of talking to you whether you are the person who learned their craft in 7 days or the person who has learned their craft over 7 years, no resume needed.

The people that are attracted to the quick-learn books are exactly the kind of person I tell my recruiter to filter out.

The people that actually can solve problems in a thoughtful, effective manner and can pick up language specifics on their own are exactly the kind of people we hire.

The former group is what I call "a junior developer"

The latter group is what I call "a senior developer" -- regardless of how many years of experience this person may or may not have.

The only reason junior developers get jobs, IMHO, is because the senior ones are so scarce that their prices are higher and you can never get enough of them to power a project.

Soon Hui said...


The benefits of the so called "junior developers" are that they have the immediate skills at hand and therefore you don't need to train them.

OTOH if you have a senior developer who needs the time to learn the language, the HR would think that he is a liability because he can't contribute immediately.

Which is why when you take a look at the job board you will see a lot of positions asking specifically for a certain skills instead of general programming aptitude. The ones who post on the job board assume that knowing the right language is more important than having a smart brain.

I'm glad that you think that way but I can assure you that many, many more out there who don't think like you.