Introductory programming language book sales indicate the amount of interest in adoption. Note that I have stressed the word interest. Comparing the introductory level books for Php, Perl, Python and Ruby will tell us how well the advocacy efforts of each language is doing to generate interest in that language.
Intermediate to Advanced level book sales indicates the retention of that interest.
Tracking book sales as an indicator of the market, has been used by Mike Hendrickson of O'Reilly in State of the Computer Book Market.
My interest in comparing book sales is to compare the adoption and retention interest of each language. You can check Antonio's Comparison of programming languages for more languages and how they fare in terms of book sales.
Unlike, O'Reilly, I do not have access to BookScan data, so I went with Amazon.com's sales rank. Amazon also has the feature to list books by programming language and by levels (Introductory, Intermediate-Advanced). Since Amazon.com's Sales Rank is not linear but a log scale, I used an estimator function to translate the sales rank to predict volumes sold. (This function holds well but at very low ranks, less than 10, this function over predicts. We wont have a problem as no programming language book will have a sales rank that high.)
Predicted Sales Volume per Year = 10080 * EXP(-2.4629 * LOG10(Amazon Sales Rank))*365
NOTE TO READERS: The Methodology I used to Predict is inherently flawed as I had captured the sales rank at one point of time and tried extrapolating it to annual sales. Authors like brian (Learning Perl) pointed out this flaw as they had the actual book sales data. So until I track sales ranks over a longer period of time and check to make sure that the predicted volume approximates actual sales, I am removing the estimated book sales data and the sales rank. I am leaving behind the list of books that were the top 5 in Amazon in each category.
Php Introductory Book Sales
| Perl Introductory Book Sales
|
| Name | Beginning Php and Mysql5
| Php5/Mysql Programming
|
| | Name | Learning Perl 4ed
| Beginning Perl 2ed
|
|
Python Introductory Book Sales
| Ruby Introductory Book Sales
|
| Name | Python Programming: Intro to CS
| Python Programming for Absolute Beginner
|
| | Name | Ruby Programming for Absolute Beginner
|
|
I used the same methodology for Intermediate to Advanced level. Here, there was a better choice of books for all the languages.
PHP Intermediate/Advanced Book Sales
| Perl Intermediate/Advanced Book Sales
|
| Name | Programming PHP
| | PHP and MySQL for Dynamic Web Sites: | | PHP Solutions: Dynamic Web Design Made Easy | PHP 5 Objects, Patterns, and Practice
| PHP Cookbook
|
| | Name | Learning Perl 4ed
| Programming Perl 3ed
| Perl Cookbook
|
|
Python Intermediate/Advanced Book Sales
| Ruby Intermediate/Advanced Book Sales
|
| Name | Learning Python
| | Python in a Nutshell | Programming Python
| Python Cookbook
| Core Python Programming
|
| | Name | Agile Web Development with Rails
| Programming Ruby: Pragmatic Programmmer Guide
| Railspace: Building a Social Network
| Ruby Cookbook
| Ajax on Rails
|
|
This is part of the "What Makes a Programming Language Popular" series where we compare Perl, PHP, Python and Ruby. See
Ruby guys use online material rather thank plonking good money on books.
Posted by Andy on December 12, 2007 at 04:36 PM CST #
The Amazon Sales Rank has little to do with actual sales. You can jump ahead in the Sales rank in a single day by selling a handful of books. Since it's time period is too short, it says nothing useful about yearly sales. It only measures sales for the hour you looked at it (and less frequently for the slow sellers), and the difference in rankings can be a single copy.
As one of the authors of Learning Perl, I have the real sales numbers, and 469 a year isn't even close.
Posted by brian d foy on December 14, 2007 at 11:25 AM CST #
brian,
I completely agree with you that it is not that accurate when you take one snapshot, which is what I did. I needed a rough number to compare relative sales and assuming the same error is built into all four (perl, python, ruby and php) then the relative positions in terms of saes will make sense.
I will however take the numbers on a weekly basis and at the end of say 6 months, I will re-publish the sales comparison.
Posted by Naveen Bala on December 20, 2007 at 05:32 PM CST #