Share via


Programming Languages and the Free Throw

Choosing a programming language tends to involve an interesting intersection of what you need (i.e., requirements), what you know (i.e., past experience), and what you believe (i.e., bias and flexibility).  It's kind of funny to note that these are pretty much the same crieria one might apply to choosing a religion, but that's a topic for another day.  One holy war at a time.  Choice of programming language should depend on the project(s) at hand, the team(s) doing the work, and the business interests of those who will own the intellectual property.  There is no "best" programming language; the suitability of a language depends on the problem domain to which is it being applied and the people doing the appying.

Too often, however, developers go with what's cool or what they know.  Developers gravitate toward what is cool, with coolness being determined by what the alpha geeks are using or what the press is saying or simply what everyone else is doing.  And, once brought into a language fold, developers kind of stick there, trying to apply the same bag of tricks to whatever problem comes down the line.  There are also more practical reasons for language-lock, as it's easier for an organization to manage a code base that uses fewer languages, it's easier to get a job when one is good at the most popular languages, and learning new languages can involves a significant investment in (non-productive) time.  Despite this, I would argue that there is way more polarization around languages than there needs to be.

Rick Barry, the basketball Hall of Famer, famously used the "granny" style of underhand free throw shooting.  His argument was (and remains today) that the underhand shot is a mechanically superior approach to the problem of the free throw.  His lifetime 90% record of free throw success (#2 in NBA history) tends to give his argument some weight.  However, nobody uses that technique today, despite the fact that it may be mechanically superior.  Why not? For one, it's not cool.  Nobody wants to look like Granny Clampett on the court.  Secondly, it would be yet another type of shot that has to be learned and practiced, whereas the overhand free throw shooting technique makes use of the same mechanics as the jump shot.

Sometimes it's worth the investment in time to choose and learn the right tool for the job, whether you're writing software or shooting free throws.