Saturday, August 11, 2012

Programming Language Choice is Secondary

Programming language arguments are probably just as frequent in geek online communities as wars about which program of a certain kind is best. Which made it even more eye-opening when a while back, I read a great quote about programming languages out in the real world—and how language choice actually does not matter all that much.

The quote was from Peter Norvig, and it was embedded within a comment on one of those language arguments:

In terms of programming-in-the-large, at Google and elsewhere, I think that language choice is not as important as all the other choices: if you have the right overall architecture, the right team of programmers, the right development process that allows for rapid development with continuous improvement, then many languages will work for you; if you don’t have those things you’re in trouble regardless of your language choice.

Peter Norvig

For me, when I read this, I had to pause for a moment to stomach this, but when I got the chance to think even for one second, I had to admit: Yes, he’s absolutely right.

Take PHP. As far as programming languages go, PHP is atrociously bad, so bad indeed that one of the channels I hang out on has a standard response from a bot for programming language wars that says “[c]an’t we just all agree to hate PHP, and get along.” Still, there is a huge quantity of large programs in PHP out there, from WordPress to Facebook, that work and get the job done. Do those programs mean that PHP is a good programming language? Hell, no. Would those programs and sites be much more awesome if they had been written in another language? Unlikely. Are the programmers working on them somehow incredibly smart and better than other programmers? I don’t think so.

And PHP is, indeed, atrociously bad. Now consider the more usual situation where you face the decision between programming languages that are all pretty good, with only minor differences between them. Why would minimal improvements in expressiveness matter all that much?

Prior exposure of the team members to a given language, existing infrastructure and know-how within the company regarding that language, availability of replacement programmers in case a team member drops out (illness, change of job, etc.), and library support for the task at hand will be much more important for the language choice than any expressiveness or conciseness a language can offer.

And for the project as a whole, a project leader with a good grasp of project management, programmers with experience, and good, established workflows will be much more important for the success of the project than whether you picked your favorite language over another.

So if you ever wondered why your favorite programming language doesn’t catch on—it’s most likely not a global conspiracy of inept managers with no clue, but more likely this simple but profound truth.