C# In Depth

Good morning, we interrupt our irregular and unscheduled ramblings with this breaking news bulletin: I am pleased to pass on news of the availability of Jon Skeet's new book "C# in Depth".


I had the privilege of being the technical editor of this book. But I've gotta tell you, when I unzipped the files sent from the publisher, the flattery began immediately. The "front matter" placeholder page read:

FOREWORD: To be written by someone really prominent, hopefully – Eric Lippert, perhaps?

Hah! Don't think I went easy on the book because you buttered me up, Jon.

In all seriousness, I was very pleased and honoured to be asked to write the foreword to Jon's excellent book. This was by far the least work and most fun I've had doing technical editing, and the foreword practically wrote itself. Here's what I whipped up:

There are two kinds of pianists.

There are some pianists who play not because they enjoy it, but because their parents force them to take lessons. Then there are those who play the piano because it pleases them to create music. They don’t need to be forced; on the contrary, they sometimes don’t know when to stop.

Of the latter kind, there are some who play the piano as a hobby. Then there are those who play for a living. That requires a whole new level of dedication, skill and talent. They may have some degree of freedom about what genre of music they play and the stylistic choices they make in playing it, but fundamentally those choices are driven by the needs of the employer or the tastes of the audience.

Of the latter kind, there are some who do it primarily for the money.  Then there are those professionals who would want to play the piano in public even if they weren’t being paid. They enjoy using their skills and talents to make music for others. That they can have fun and get paid for it is so much the better.

Of the latter kind, there are some who are self-taught, who “play by ear”, who might have great talent and ability but cannot really communicate that intuitive understanding to others except through the music itself. Then there are those who have formal training in both theory and practice. They can explain what techniques the composer used to achieve the intended emotional effect, and use that knowledge to shape their interpretation of the piece.

Of the latter kind, there are some who have never looked inside their pianos. Then there are those who are fascinated by the clever escapements that lift the damper felts a fraction of a second before the hammers strike the strings. They own key levelers and capstan wrenches. They take delight and pride in being able to understand the mechanisms of an instrument that has five to ten thousand moving parts.

Of the latter kind, there are some who are content to master their craft and exercise their talents for the pleasure and profit it brings. Then there are those who are not just artists, theorists and technicians; somehow they find the time to pass that knowledge on to others as mentors.

I have no idea if Jon Skeet is any kind of pianist. But from my email conversations with him as one of the C# team’s Most Valuable Professionals over the years, from reading his blog and from reading every word of this book at least three times, it has become clear to me that Jon is that latter kind of software developer: enthusiastic, knowledgeable, talented, curious and analytical; a teacher of others.

C# is a highly pragmatic and rapidly evolving language. Through the addition of query comprehensions, richer type inference, a compact syntax for anonymous functions, and so on, I hope that we have enabled a whole new style of programming while still staying true to the statically typed, component-oriented approach that has made C# a success.

Many of these new stylistic elements have the paradoxical quality of feeling very old (lambda expressions go back to the very foundations of computer science in the first half of the twentieth century) and yet at the same time feeling new and unfamiliar to developers used to a more modern object-oriented approach.

Jon gets all that. This book is ideal for professional developers who have a need to understand the “what” and “how” of the latest revision to C#. But it is also for those developers whose understanding is enriched by exploring the “why” of the language's design principles.

Being able to take advantage of all that new power will require some new ways of thinking about data, functions, and the relationship between them. It’s not unlike trying to play jazz after years of classical training – or, perhaps, vice versa. Either way, I am looking forward to finding out what sorts of functional compositions the next generation of C# programmers come up with. Happy composing, and thanks for choosing the key of C# to do it in.

Eric Lippert
Seattle, Washington
February 2008

Comments (9)
  1. jonskeet says:

    I’m sure I asked Mike to remove that bit of the foreword before sending it to you. Ah well… I’m sure it didn’t hurt 😉

    (For any readers who are also authors in a relevant field, do anything you can to browbeat your publishers into persuading Eric to be a tech reviewer. Without wishing to sound too much of a fan-boy, he’s fabulous. I now look back at the time I was the tech reviewer for an Ant book ages ago, and feel somewhat sheepish…)

  2. It’s a shame that Jon has been gobbled up by Google and will be spending less time in the world of C#. I think MS missed an opportunity with Jon.

    I pre-ordered the book a week or so ago and am anxiously waiting for it to arrive on my doorstep. Definitely looking forward to more of Jon’s writing… he has the style of writing that presents a clear understanding and is very easy to follow.

  3. mike says:

    Is it fair to say that a deeply nested foreword like this could only have been created by a C-style developer? 🙂

    Anyway, if I ever write a book (again), and if it is actually about something technical, and if it is deemed to need reviewers, and if they ask me who should review it, and if it doesn’t seem like it would be a waste of your time, and if you actually had the time, I would put you as #1 on my list. And probably everyone now feels that way, so, um, be prepared, heh.

  4. Bahador says:

    That was a masterpiece! 😀

    I read it twice; and it was an enjoyment both times!


  5. Jon Skeet says:

    Mike: It’s deeply nested, but tail recursive. This is a good thing, as it’s ugly to make a reader throw a StackOverflowException so early in a book. (Larger books may cause OutOfMemoryExceptions, logical fallacies can cause ArgumentExceptions, and of course an editing failure can cause an IndexOutOfRangeException.)

  6. arun.philip says:

    I’m quite honest when I say that this is the first foreword for a book that has sold me on the book itself! It doesn’t hurt that Amazon’s user ratings for this is all 5 stars!

    I’ve ordered this book, but it’s going to take 16 days to deliver here in India (I think they’re importing it from the US). Tick tock, tick tock.

  7. Rather than place the links to the most recent C# team content directly in Community Convergence , I

  8. Michel Desangles says:

    Jon, Eric, the book is absolutely brilliant (I don’t have VS2008 yet, but I’m trying to learn Linq beforehand). It even has a quality that’s very rare in technical books : it’s well written. I cannot recommend it enough to anyone who’s serious about c#.

    Disclaimer : I don’t know Jon or Eric, I live on a different continent, and I have never even talked to either of them, even though Jon’s posts on usenet have helped me an inumerable<number of times>… So this is a real heartfelt recommendation. Buy it.

  9. Doug.Rubino says:

    "C# in Depth" not only made me fall in love with the C# language, but also brought me to this blog, which I read frequently, thoroughly and share with the other members of my team. Jon's love of the language shines through on every page, and has instilled an interest in me about the inner workings of my tools. Thank you Jon, and thank you Eric.

Comments are closed.

Skip to main content