New book: Software Mistakes and Tradeoffs

I’m delighted to announce that I’ve been hard at work contributing to a new book.

The book is called “Software Mistakes and Tradeoffs: How to make good programming decisions” and the principal author is Tomasz Lelek. The book was Tomasz’s idea, and he’s written the vast majority of the material, but I’ve contributed a chapter on handling date/time information, and another one around versioning (for libraries, network APIs and storage).

The aim of the book isn’t to provide answers: it’s to help you think carefully in your specific context, and ask the right questions. Tomasz and I have both made plenty of mistakes over the course of our careers – or been adjacent to other engineers making those mistakes. The choices that have been mistakes for us might not be a mistake for you – but it’s better to go into those choices with your eyes open to the trade-offs involved, and where they can lead in different situations.

This isn’t a book about a specific technology, although of course it demonstrates the ideas using examples which are specific. Almost all of the examples are in Java, but if you’re not a Java developer that really shouldn’t put you off: the ideas are easily transferrable to other environments. (In particular, if you understand C# it’s very unlikely that Java syntax will faze you.)

We’ve just launched the book into MEAP (Manning Early Access Program), with an estimated publication date of “fall 2021” (which means I really need to get on with polishing up my versioning chapter). The first seven chapters are available in the MEAP right now, which includes my date/time chapter.

What about C# in Depth?

You may be wondering where that leaves C# in Depth. The 4th edition of C# in Depth covers C# up to version 7, with a chapter looking ahead to C# 8 (which wasn’t finalized at the time of publication). That means I’m already two versions behind. So, what am I going to do about that?

The short answer is: nothing just yet. I haven’t started a 5th edition.

The longer answer is: yes, I definitely want to write a new edition at some point. However, I suspect the structure will need to change entirely (from version-based to topic-based) and I expect it to take a long time to write. Additionally, I have an idea around a diagnostics book which has morphed several times, but which I’m still keen on… and if I can get traction for that, it will probably take priority over C# in Depth, at least for a while.

So yes, one day… but probably sufficiently far in the future that it’s not worth asking any more until I announce something.

7 thoughts on “New book: Software Mistakes and Tradeoffs”

  1. Hello and thanks for the discount code. It’s great news to see also a chapter on handling date/time information. As far as I know, there is unfortunately no “NodaTime in Depth” book, that would elaborate on your date/time-related articles and NodaTime’s documentation. By the way, we have recently switched from the BCL “DateTime” classes to NodaTime and so far the transition has been without any difficulties, also thanks to Npgsql and NewtonsoftJson’s “UseNodaTime()” extensions. Good job and keep it up!


  2. Dear Mr. Jon Skeet, I wish to propose an idea for technical programming book authors and publishers. Because these books become out of date so fast in the world of software development.
    I propose that instead of having to purchase an eBook for every iteration of edition that comes out. That they allow us to purchase an initial book and pay an annual fee for access to latest updated version. As stated in Amazon site “Update Your Kindle Book Version. Receive the most updated version available for your Kindle books including corrections and improvements. ”
    Wouldn’t this be nice for all of use that has interest in this idea.
    The problem is that I am only a user and not a professional programmer and have no way of bringing this to the folks that we wish to bend one’s ear:-) Could you write an article in a publication about this concept?
    William Higinbotham, Seminole, FL, USA


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s