“What language should I learn next?” is an exceedingly frequently-asked question among programmers, sysads, and devops. Any active online forum will entertain the subject eventually, and many return to it repeatedly.
My own current favorite answer is one others rarely mention: SQL. Here’s why:
Conventions and assumptions
This exchange is typical of the genre. Nearly everyone involved assumes that knowing more languages benefits ones career and is personally satisfying. “The next language” should lie outside the span of those already known, but perhaps not too far. It should have “good peripherals”, including a congenial community of practitioners, reliable references, and demonstrated usefulness. Participants often cite the effect on ones own thinking as one of the principal gains of learning specific languages.
On my own behalf, I’ve suggested Forth, Lisp, ML, Smalltalk, and even more obscure languages in the past. More recently, I’ve often advised students who have only been using Java, Python, C#, or similar languages for barely a year or two. The first thing I tell them is that HTML is the most practical language they can acquire next. While not particularly uplifting as an abstract definition, it’s used in billions of documents, and practice with HTML helps gain familiarity with the concepts necessary for XML and SVG, both of which are sure to pay off. HTML is the language of expression on the Web, and thus essential to daily business.
PowerShell and bash
, for those focused more on Windows or Unix, respectively, are also useful. The syntax and semantics of these workhorses have little to recommend them, though, for those already familiar with a classroom language.
SQL provides a more interesting combination of features. Tim O’Reilly is only the most prominent of several commentators to preach that the “Center of Value [is] Shifting from Software to Data …” SQL, of course, is nearly indispensable for getting at existing datastores. This makes SQL supremely practical.
At the same time, SQL is a nice stretch for computing students. As a declarative language, it nicely contrasts with conventional procedural languages, and introduces ideas that functional and logic programming exploit more deeply.
When I urge near-beginners to “learn SQL”, I of course am abbreviating, “learn a part of SQL”. Standard SQL has grown beyond the comprehension of all but a few specialists, and vendor-specific variations make comprehension of all of SQL infeasible for any mortal. To learn the basics, however, is easier and quicker than it’s ever been, if only because all the necessary resources are now freely available on the Web. For deeper reading, see any of the books written by C. J. Date or Joe Celko.
J D Eisenberg says
I’m not sure I’d classify HTML as a computing language; it doesn’t have variables, conditional statements, or loops. As the acronym says, it’s a markup language.
The Coders Lexicon says
I typically answer the question by recommending a language similar to one they have already been working with. If they have done C# I suggest VB.NET, if they do Java I recommend C++. The reason for this is simple, sharing the similarities in two languages a person can quickly get up and running with the new language and learn the parts they simply haven’t seen before using the parts they have.
Sure it may not be that amazing for expanding the mind, but you would be surprised at what you do learn by doing this. You will typically run into HTML or SQL at some point. If you haven’t run into SQL while doing something like C# then you are probably missing a large piece of knowledge that you should go back to.
Nice article and good advice too.
Greg Brown says
Great advice. I love Java and C# and use them on a regular basis. But I also use SQL quite heavily – I’d guess that I have used it in at least some capacity on 75% or more of all projects I’ve worked on over the past 15 years.
Valdis says
Although I agree, that data analysis will be next big thing, I’d better recommend R instead of SQL.
Cameron Laird says
I certainly am fond of R, Valdis, and promote it often. R is more like other conventional programming languages in its procedural orientation, and less broady used than SQL, so I recommend SQL more broadly. Also, R has more obvious close competitors in IPython, Octave, …