BradA’s Top 10 .NET books [in Beta]


I get asked frequently what .NET books I recommend on a given topic.  Although I love reading .NET books, I don’t think I have read enough to give an informed opinion. So I was thinking about how to provide a community ranking system on .NET books.  But then I thought we already have a lot of that community information available via web services.  

 

With some creative use of the Amazon Web Services I can get a list of the .NET related books and their Amazon sales ranking and other information about the book.  But that doesn’t really give me the full picture… It tells me what books people are buying, but it doesn’t tell me what books people are finding value in.   

 

So, from the Google web service I am able to get an idea for the amount of chatter or buzz there is out there on a particular topic.  That coupled with the number of comments a given book has on Amazon allows me to come up with a buzz rating for a given title. 

 

The program is very hacky, but it was fun to write and tweak the algorithm.  If you have ideas for how to improve the algorithm, maybe with the addition of yet another web service, I’d love to hear it. 

 

A couple of bits of feedback for the Amazon and google folks (or their competitors ;-)):

1. Properties that return null are real pain…  Several times I would write code like this:

Console.Error.WriteLine(d.ProductName + “,” + d.Reviews.TotalCustomerReviews);

 

And would get a NullReferenceException that would force me to change to change it to this:

string totalReviews = “0”;

if (d.Reviews != null) totalReviews = d.Reviews.TotalCustomerReviews;

Console.Error.WriteLine(d.ProductName + “,” + totalReviews);

Life would be lot more simple if TotalCustomerReviews just retuned “0” in this case.  

 

2. Google’s max calls per day of 1,000 is a really limitation in development.  Plus it doesn’t really seem to reset at midnight 😉

 

3. I’d love to get google’s page rank to weight the buzz rating better.

 

 

Ok, without further ado, here is my take at the top 10 .NET books.  Remember, this is not my personal recommendation; I am just giving you the data:

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. Programming C#, Third Edition (ISBN:0596004893) 2,941 21,501,420
2. Windows Forms Programming in C# (ISBN:0321116208) 2,846 2,740,530
3. ASP.NET Unleashed, Second Edition (ISBN:067232542X) 6,274 15,901,130
4. Applied Microsoft .NET Framework Programming (ISBN:0735614229) 6,626 2,990,770
5. Essential ASP.NET With Examples in C# (ISBN:0201760401) 3,226 2,090,300
6. MCAD/MCSD Self-Paced Training Kit: Developing Windows-Based Applications with Microsoft Visual Basic.NET and Microsoft Visual C#.NET, Second Edition (ISBN:0735619263) 11,971 5,720,100
7. Microsoft Visual C# .NET Step by Step–Version 2003 (ISBN:0735619093) 7,579 2,680,100
8. Murach’s VB.NET Database Programming with ADO.NET (ISBN:1890774197) 16,344 3,200,170
9. OOP with Microsoft Visual Basic .NET and Microsoft Visual C# .NET Step by Step (ISBN:0735615683) 22,066 4,180,220
10. Programming ASP.NET, 2nd Edition (ISBN:0596004877) 12,670 1,820,570

 

 

And the top book per category:

Windows Forms (BradA’s Top)

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. Windows Forms Programming in C# (ISBN:0321116208) 2,846 2,740,530

CLI (BradA’s Top)

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. Shared Source CLI Essentials (ISBN:059600351X) 195,730 92,430

VB.NET (BradA’s Top)

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. Murach’s VB.NET Database Programming with ADO.NET (ISBN:1890774197) 16,344 3,200,170

ADO.NET (BradA’s Top)

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. Murach’s VB.NET Database Programming with ADO.NET (ISBN:1890774197) 16,344 3,200,170

ASP.NET (BradA’s Top)

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. ASP.NET Unleashed, Second Edition (ISBN:067232542X) 6,274 15,901,130

.NET Framework (BradA’s Top)

Rank(All) Cover Title Sales Rank (lower is better) Buzz (higher is better)
1. Applied Microsoft .NET Framework Programming (ISBN:0735614229) 6,626 2,990,770

 

 

 

And here is the full run..

 

What do you think?  Does my automated system pick winners? What did a I miss?

 

Comments (27)

  1. Andrew Webb says:

    My oh-so-subjective list:-

    #1 Jeffrey Richter. .NET is best learned bottom-up, and this is THE BEST book to start on that journey.

    #2 Chris Sells for Windows Forms.

    #3 Jeff Prosise for ASP.NET and an overview of ADO.NET, the XML stack, and other bits and bobs.

    #4 Don Box for a different take on the CLR from Jeffrey Richter.

    Any book that teaches .NET from a language perspective (i.e. top-down) turns me off.

    But like you, I love reading .NET books. Roll on .NET 2.0 and accompanying books.

  2. SBC says:

    There were other books which were significantly good but unfortunately, fell under the popularity radar –

    Pradeep Tapadiya’s .NET Programming

    Stan Lippman’s C# Primer

    Richard Grimes’ Developing Apps with VS.NET

    Ted Faison’s Component development with C#

    I hope the above authors update their books for the upcoming .NETv2.

  3. SBC says:

    Add to the above –

    Dino Esposito’s Applied XML programming for .NET

  4. Jeffrey Richter’s book demoted below ASP.NET Unleashed?? Now, that’s not cool! :)

    With Amazon I noticed they have a lot of trolls who leave commens like "The best book ever!" or "Buy now!" and leave it at that. I always go for those comments where reviewers actually explained *why* a book was good. If Amazon policed the quality of submissions and not just expletive words it woulda been a whole different story.

    The funniest reviews are the ones where newbs go "I love this book!" or "The best book ever", and then someone raises his head from the trenches and says, "Wtf is wrong with you, folks? Stop trolling. This is the worst book money can buy." LOL!

  5. David Hayden says:

    Brad,

    A number of these I have personally read and would definitely recommend myself. In fact, Applied Microsoft .NET Framework Programming by Jeffrey Richter and Essential ASP.NET With Examples in C# by Fritz Onion on your list are must reads.

    A book I would add to the list is Expert C# Business Objects by Rockford Lhotka. There is a VB.NET version that I am sure is just as good, but I have not read it. I did a chapter by chapter summary of it on my personal blog:

    http://davidhayden.com/blog/dave/archive/2004/09/11/471.aspx

    Another book, which is not .NET specific, but I consider my favorite book of 2004 is Applying UML and Patterns by Craig Larman. Man is it a good book. I also have several posts about it on my personal blog:

    http://davidhayden.com/blog/dave/category/33.aspx

    And yet another book, which I just finished and will be posting a review of in the near future, is Effective C# by Bill Wagner. The book is filled with 50 specific ways to improve your c#, and I can’t recommend it enough. I had planned to post a review of the book tomorrow (let you know more then).

    I could keep going, but one last .NET book which I think is excellent is Developing Microsoft ASP.NET Server Controls and Components by Nikhil Kothari and Vandana Datye. The books teaches one so much more than developing server controls and components.

    I’ll shut up now :) By the way, the Designing .NET Libraries presentations are excellent.

  6. marko says:

    Then of course there is .NET Framework Standard Library, Annoted Ref. by BradA! 😉

    There is also Expert .NET 1.1 Programming by Simon Robinson, great book.

  7. kiran says:

    Juval Lowy’s "Programming .net Cpmponents" is also one of the best.

  8. Aaron Weiker says:

    It seems that this list is generated more by noise than by real value. It looks like the higher ranking books are mainly learning .NET books, not the real hard core books like Essential .NET or Applied .NET Framework. This is because more people want to get in than want to get in and really know it. To have the reverse would mean that we all skip the first part. So to make up for this you would need to weight the books and give the entry books a lower weight and the more advanced books a higher weight.

    Also you should have topics such as WSE and architecture.

    It would also be interesting to see a per publisher and see which ones are turning out the better content.

  9. SBC –

    you can see most of those on the full list:

    http://blogs.msdn.com/brada/articles/377610.aspx

    Milan –

    Amazon has a rating system for comments, I could leave out comments that are not rating above a certain level.

    David –

    Expert C# Business Objects is 69

    Effective C# is 106

    Kiran –

    You are right about missing Juval’s book.. let me think about how to get that added..

    Aaron –

    You have a good point.. it was my hope that the "buzz" factor would help highlight the deeper books.

    I publisher view would be good idea..

  10. I’m glad to see that the buzz factor selected Jeffrey Richter’s book. That book was the very first .Net book that I read, and I can affirm that .Net development is best learned by being thrown in the fire!

  11. blalab says:

    Amazon gives the data on which books haven been bought by people who bought this book, or something like that. This could be used by limiting the subject area in the data set and then give a starting point of which books are definetely beginner/definetely "hardcore", and look what books were interesting/bought by the people who liked the beginner book and then use this to determine what are more close to beginner and more close to advanced subjects. It might be also be possible to use the comments and most people found helpful as the basis for buzz and give more weight on reviews by reviewers that have reviewed more of the advanced type of books..

  12. Brad, how are you computing the "buzz" for a book? You say you are using the Google API, but I’m unclear what the buzz represents. If I search on "Programming C#," or Programming C#, or "Programming C#, Third Edition," in none of those do I get Google telling me there are 21,501,420 results, so I assume the number is generated some other way. I couldn’t find the code for your algorithm – is it available online?

    One of my concerns – which I blogged about over at http://scottonwriting.net/sowblog/posts/3269.aspx – is that if you are basing the "buzz" on results returned by Google that a book’s title may unfairly have more results. For example, the book "Programming C#" is probably more likely to result in false positives on Google (i.e., pages that use those words or that phrase that aren’t talking about the book) than, say, "Teach Yourself C# in 24 Hours."

  13. Blalab – I like the thinking!

    Scott – the buzz is roughly speaking a google search for the full title and the term "book" to avoid the problem you point out. I also add in a factor for the number of reviews on Amazon. But I did notice that the answer I get back from the google web service don’t always match the results from the web page..

  14. Matt says:

    Do not under-estimate the power of the Shared Source CLI Essentials text. I have "programmed" in .NET since the beta, but it wasn’t until I read this book did I really begin to understand conceptually why the framework is designed the way it is. Very well written by a couple of gurus. Even if you don’t bother installing Rotor it is worth a read.

  15. J B Kramer says:

    Well I think I’d add Riordan’s "Designing Effective Database Systems" which I saw recommended on Coding Horror. I’ve read a lot of db design books but this one brings forth the information is a very coder friendly way. I concentrates on Access and SQL Server.

  16. Sai says:

    Brad, does the Google API expose the page rank?

    If each result you get from the search exceeds a page rank, you could include it in your buzzworthiness? Just my 2c. Great list by the way :)

  17. I wish it did! See my #3 above…

  18. kh says:

    Shame Don’s book isn’t there – its my favourite .NET tome by a significant margin. And +1 to most of the other recommendations made in these comments, most of which I have at least partially read. I had not realised quite how many .NET related books I have digested over the last few of years.

    Brad, are MS employees not ‘encouraged’ to use MSN Search rather than Google these days!?

    kh

  19. Interesting, yea, Don’s book should be there, but what happened when I ran the program Amazon didn’t have a Sales Rank so I left the book out… That seems to happen periodically, I am not sure what to do in that case.

    As far as using MSN Search, yea, I’d certainly love to use it, but it doesn’t have web services (yet) that I am aware of…

  20. James M says:

    Brad,

    You seem to be missing Gough’s excellent Compiling for the .NET Common Language Runtime, one of the best books for getting a feel of how higher level language constructs map onto the CLR and also how to do it yourself,

    James

  21. Yes — same issue, at the time I ran this, Amazon’s sales rank for the Gough’s book didn’t show… clearly a need a better plan… that is why this is still in beta