Technical books are a topic that interest me a lot. From book sale figures and trends we can attempt to better understand where developers are putting their money, not only their mouths. For this article I decided to perform a small experiment, by collecting some interesting data. I considered 23 fairly well known programming languages, and searched for the top selling book (according to Amazon) for each of them. The Amazon sales rank allows us to compare the success of books representative of each language, and indirectly compare the popularity of the languages themselves.
Below is the resulting table with all the data organized by sales rank:
Despite the limitations of the methodology employed (see disclaimer for details), I think this table gives us a nice picture of the status of our industry. I’ll let the data speak for itself, and allow you to speculate in the comments, but I’d like to point out a few interesting aspects of the resulting data.
According to the table above, it is clear that the once widely adopted Delphi is now much less prominent (consider that there are more recent books on Delphi, and that they have even worst sales ranks). This of course, does not take into consideration the fact that Delphi may have great documentation online, but I doubt that this would end up penalizing Delphi books that are on the market to this extent. Java and .NET on the other hand are doing very well. No surprise there. Also it doesn’t come as a surprise that Javascript is, thanks to Ajax, so widely popular on Amazon. Notice how developers seem to be embracing the study of dynamically typed languages, even though statically typed ones are still predominating. C, despite its age, still keeps our industry going. What I found surprising was the sales rank of the Groovy book, I honestly thought Groovy was a much more limited phenomenon. Regarding the functional paradigm, functional languages are slowly becoming more adopted, but it’s clear to me that the paradigm is being accepted by most when incorporated within existing Objected Oriented languages rather than in its pure form as seen in languages like Haskell for example. Speaking of Haskell, I’m sure the data will change a lot when the new book Real World Haskell hits the shelves. And that’s what the Haskell world really needs, because Haskell is often presented in an academic way which is hard for a wide audience to digest, and it is considered too theoretical by many.. It’s no wonder that 150 of us, fired off an email in reply to a request for reviewers.
You may notice that the fourth most popular book on the list is a “10 minute” type of book for SQL. This is ironic but it doesn’t contradict the anecdotal evidence, as real world experience suggests that many developers don’t really know SQL, and they resort to quick guides as a remedy while working on a given project. It’s a shame, because database and SQL understanding are essential skills needed to be successful programmers in many areas. To conclude, by looking at the table, it is apparent that the Pragmatic Programmers are definitively influential. Let’s face it, they contributed a great deal to the growth of the Ruby community and are now helping edge forward Erlang’s popularity. According to other data available on the web, Erlang should have been somewhere at the bottom of this list along with Haskell, but the Pragmatic Programmer’s book on this language has already presold many, many copies (it will be published in mid-July). It is clear that this book is going to be a best seller and that it will do a lot to promote the language itself. This is absolutely a good thing, because Erlang deserves the spotlight. By looking at the column of publishers, one can’t help but notice that O’Reilly truly successfully markets its books, and they are generally highly regarded by us developers.
Disclaimer (Or… wait a second, dude!)
- The method that I used didn’t account for books related to frameworks (Django, Rails, Seaside, etc…). The Agile Web Development with Rails book for example, has an incredible Amazon Sales Rank and it’s one of the best sellers of all time in our field;
- This methodology favors languages that have a book which has been widely adopted within the community, as opposed to languages where sales are split relavitely equally amongst a few titles;
- Not all languages are represented here of course. I just picked a reasonable selection;
- Amazon is not the only place on Earth where books are sold. But I think it’s still a fairly accurate indication of the US market;
- The Pragmatic Programmers sell many of their books directly, the sales ranks shown here don’t take this into consideration, so chances are they are underrepresented;
- The links to Amazon have my referrer id. This won’t cost you a cent more, and will help support this site.
Get more stuff like this
Subscribe to my mailing list to receive similar updates about programming.
Thank you for subscribing. Please check your email to confirm your subscription.
Something went wrong.
Though this is a somewhat silly way to compare languages, it is interesting. As an added data point:
Actionscript would rank even higher than JavaScript, since the book “Essential ActionScript 3.0” by Colin Moock currently is at sales rank #346.
Book sales are the model for the long tail; top sellers outsell competing titles by a huge margin. Although this pattern is true in general, you seem to be assuming that each top selling book outsells the second best selling book by a near constant factor.
The data is certainly more complex; if you were to look at the recent sales for the top 3 titles in Java vs. Ruby (for example), you might conclude that Ruby is much more important, even though the top selling Java book outsells the top selling Ruby book. Put differently, this ranking seems to indicate that JavaScript is only slightly more important than Java at the moment, but that doesn’t seem right.
On the other hand, this analysis ignores the fact that there’s a huge contingent of people who have already learned Java and don’t need to buy introductory books on Java; they’re busy buying the books in libraries and frameworks.
This data is certainly interesting, and offers a reasonable correlation with what’s going on in the industry. The O’Reilly State of the Computer Book Market series offers a deeper view into similar data, with more meaningful indicators.
While this list is a nice view and it can be discussed and thought about, I do think that some languages do take a penalization for available online documentation… but it depends on the quality of it.
As an example, the full first edition of Programming in Lua is available online. Not only this is the ‘official’ Lua book, but also there aren’t a lot of printed books on Lua. This pretty much reduces the options to reading the book online or buying that same book on print.
I’m also sure a lot of Pythonistas get Dive into Python on PDF and are happy with that. Some of the good Lisp books can be also found complete online in PDF.
“practical common lisp” : sales rank 30581
Interesting analysis of things. Got me looking into where some of the languages I work with are in comparison…
Actionscript, 347, Rank #1
Flex, 8,655, Rank #11
ColdFusion, 12,793, Rank #14
I’d expect book numbers to be more in line “what’s hot” than “how many jobs are there for this topic” to some extent. But then again it could be a look at where things will be in the job market a few years down the line.
If SQL is a language, then HTML is too. Which would put “Head First HTML with CSS & XHTML” at #1133 ahead of JavaScript.
@rahul
I missed that one, when I have some time I’ll amend the article to include it.
@Kirill
HTML is a markup language not a programming language, and as such it is not included in the list. Also, remember that the list is not complete by any means, so several languages will be missing.
A way to eliminate the single, accepted reference vs. many acceptable books problem can be borrowed from cross-country scoring. Add the ranks of the first three (or five or whatever) books. Popular languages should have multiple good books out.
And what makes SQL a programming language? Is it Turing-complete? If not, then it’s not a programming language to me. Would you call regular expressions a programming language as well?
It is also interesting that there is an increasing interest in design patterns.
Head First Design Patterns and – as always since it came out – the book of GoF have a very high rank.
Very interesting post, Antonio, and great blog: continue with your nice work 😉
i think this is a great way to track the open market voltage/ pressure to learn a particular language. this also breaks down for overall pressure as a metric because some communities are better at documenting than others, this means that books are not as necessary in those situations. i think java, and .net have EXTREMELY strong existing communities that act as a cache mechanism and lower the pressure to buy a book. it would be great to somehow get a life time book sales for each topic to get an idea about the amount of “energy” spent consuming books of a given topic.
I agree.
SQL should in no way be part of this.
I dont see whole desktops written in it whereas you can even use python to write up a full desktop GUI
Another thing that distorts the list is price. I wonder whether the “10 minutes” book being popular for SQL really reflects developers not learning SQL… or if it reflects the price tag ($11.55) in comparison to other books on the list.
So the best scoring languages here will be those with: (1) lots of interest, (2) no “canonical” online sources, and (3) cheap books.
Still, popular languages certainly do figure in there.
Regarding Kirill’s comment, I have the feeling that there will be a lot of widely used “not quite” Turing-complete languages in the near to mid future. If they do what you need, the lack of Turing completeness is not a drawback at all. Non-Turing-complete languages can overcome Rice’s theorem, and so can sometimes be analyzed, and possibly transformed, more easily by software. More sophisticated compilers can make this a big advantage.
This is fun, except that unfortunately it’s ultimately meaningless.
Amazon rankings have some general meaning, but only in a vague sense. The rank is only for today, not as a reflection of “since the beginning of time.” So if 50 people rushed out to buy a copy of Down to Earth REXX (which I think is a fine idea, since it’s my husband’s book), overnight it would shoot up in the Amazon rankings by… well, maybe it would move into the top million. Or, more to the point, if 50 people bought Head First Java today it would knock the JavaScript book out of the top spot. That’s not an unlikely scenario; JavaOne can shift sales, for example, as can a local Java user group meeting where the author speaks.
The other issue is exactly what is being measured. One might argue that the need for an explanatory book is representative of a combination of: (a) a language’s complexity (i.e. if it’s easier to use it doesn’t require a lot of training), (b) a language’s online documentation and communities, (c) its age, (d) its current fandom (some people do buy computer books just to learn about something, the way I buy cookbooks from which I’ll never use a single recipe), (e) the “bibleness” of one given title for a particular language, causing a huge percentage to buy THAT book at the expense of others (the C book being a perfect example), and several other criteria that I haven’t thought of.
Incidentally, I’ve continued to be fascinated by the assumption that @C++@’s age means that it’s dusty and irrelevant. Anytime in the past five years that I’ve published an article about @C++@ (at any pub for whom I worked) it has always been immensely popular.
–Esther
senior online editor, CIO.com
and currently Amazon Reviewer #580
Not really part of the discussion, but there are many SQL implementations that are turing complete. Kirill needs to stop bashing on such an article that brought noticed to another way of looking at things, albeit incomplete and far from comprehensive. Nice article.
Anyone in the programming world, should not find this mind blowing. Java has been the top language used in IT and has been for some time. Not surprised by Java Script sales either, since regardless of what back end you use, JavaScript is essential for Browser based development.
Ruby has generated quite a bit of excitement and after looking at it, I can understand why. Plus it is kind of the new kid on the block.
C# is a little bit of surprise, beating out C/C++ but this is probably due to the fact it is new. Although the pure MS shops are in to it, not much excitement outside the pure MS camp.
Unfortunately, not many new developers are bothering to learn C and C++, except game developers. Sad, since these languages are essential for low level work.
As far as Delphi, it is on its last legs and has been for some time. This language has the problem of being totally proprietary and unfortunately, offers zero outside of Windows fat client type development. Who is really doing fat client development these days? Very few.
Smalltalk number is surprising for me.
This mean that Ruby is more complex language than python. To be smart and start developing on python you need only one book.
Nice work