C# in depth

In the last post I referred to an entry at Girl Developer. Reading the recent comments I noticed that Jon Skeet, the author of C# in depth, had chimed in when I mentioned I’ve recently read the book.

This has got to be the definition of awesome. You read a really cool book about a subject close to your heart, and you get to talk to the author! How cool is that? What did we have when we didn’t have blogs?

Obligatory endorsement: if you call yourself a C# programmer, go read the book. It focuses on the language, not the framework, and that’s what makes it special. C# is a great language, every C# dev owes it to themselves to learn its ins and outs.


  • Between this post and your comments on Girl Developer, there are two bits I wanted to pick up on:

    1) The book organises your existing knowledge.
    2) It’s good to be able to discuss things with the author.

    These don’t sound particularly related, but they are. They’re both things which are important to publishers when it comes to distinguishing books from free content online.

    Almost everything in the book is freely available online – often in more detail if you look at Eric Lippert’s blog, for example. Heck, it’s almost all available in the C# spec to start with. However, online material isn’t usually organised appropriately for learning about C# as a whole. It’s often good for one topic, or one piece of one topic, but it doesn’t give much in the way of a big picture, or an ordered sequence in which to learn things. I *hope* my book does precisely that 🙂

    On the community side, as it happens I picked up on Sara’s post (and then this one) because I do a daily Google search for pages mentioning the book which have shown up just in the past 24 hours. It’s a good way of finding new reviews etc. It’s also a good way of communicating with readers, which I think is important for two reasons: it means I can correct any misinterpretations of what I’ve written, and I can learn what people do and don’t like about the book. I hope to write another book at some point, so I really want to learn how to improve.

    Online content is a mixed bag when it comes to authors. Many authors of online content (myself included) will always respond to questions and comments, but sometimes things are just “out there” with no sign of who wrote them or how to get in touch with them.(One other point about online content is that there’s often little evidence of its accuracy. While books can also be inaccurate (and are harder to update, of course) I would expect any technical book from a reputable publisher to at least go through a technical review process. If you’re lucky with the reviewer (as I was) and diligent about correcting mistakes, you should get a pretty accurate book. But that’s aside from your comments…)

    I’m afraid you’d probably find me wildly disappointing in real life though. The truth is that authors are just ordinary people really. Obviously I’m still hugely excited about having “done” a solo book, especially one where I was pretty much able to write what I wanted, but I still have huge amounts to learn. Having said all that, I’ll still willingly take the ego boosts from comments like yours 🙂

    If ever you (or any other reader) has any comments on the book, or wants to discuss it in any way, please feel free to mail me directly at skeet@pobox.com, or post on the C# newsgroup (microsoft.public.dotnet.languages.csharp) where I’m pretty much always around.

  • I’ve long ago recognized that difference between online content and a good book — emphasis on the good, because not all books accomplish the goal of organizing knowledge, particularly if they try to cover an overly broad range of topics. This is where C# in depth hits the mark: it’s concise yet thorough and well organized.

    The part where I said I wasn’t sure how other developers would react to it was because I’ve noticed a disturbing trend of people relying on their tools to do the thinking for them. Enjoying a book on a programming language kind of requires that you’re interested in the workings of said language.

    I prefer books that focus on languages rather than tools or frameworks. The latter two tend to become obsolete rather fast, and I like my time investments to be worth something years later. (I am considering buying a book or two on WCF though, because it seems likely I’ll encounter it in my new job.)

    I’m always thrilled to have a discussion with an author I’ve read, be it a popular blog or a book I’ve read. It kind of means that the author is not some high and mighty coding deity far above me, so being wildly disappointing in real life is actually not entirely bad. 🙂

  • Well, you sound like the perfect reader (for my kind of book, anyway). If only more developers were like you 🙂

    Your point about books about tools/frameworks is well made in terms of their long term value. I still sometimes get them though, for reasons similar to the ones you’ve given. Basically I hate writing to an API without really understanding it. I find I often get burned by things like RPC and GUI APIs, simply because I don’t understand them properly at a fundamental level. There always seem to be gotchas all over the place. I’m pretty confident in my knowledge of core APIs (System.IO, System.Text etc) but a lot of the more peripheral ones are a mystery 🙁

  • I know the feeling — when I was learning .NET, I did a lot of silly things because I didn’t understand the APIs I was working with. That’s often true for anyone learning a new platform, especially one as huge as .NET, so a lot of the mistakes I made were to the tune of poorly reinventing a wheel that was already there, I just didn’t know where to look. Luckily these days my google-fu makes up for some of that. 🙂

  • Er, that was supposed to be “did a lot of silly things” or “made a lot of silly mistakes”, but there you go. In my defense, I just woke up! 😛

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.