It's dangerous to code alone! Take this.

Another Sixth Edition Update

Published on 14 Mar 2025.

We’re way overdue for an update on the Sixth Edition, but here it is: The Sixth Edition will arrive no earlier than November of 2025.

However, I don’t expect the release date to slip any further than that, because I’ve changed strategy.

There are a few approaches you can take to projects. You can either lock down the scope–the work you want to do–and let the release date vary, or you can lock down the release date and let the scope vary. In software development, the second approach is often preferred. You don’t know what will make it into any given release, but you know there will be a release every so often. Anything that doesn’t make it into the release can simply wait until the release after.

I’ve essentially been operating under the first strategy, with a flexible release date and a locked down scope. The problem is that the scope keeps changing on me. Two years ago, when I announced the Sixth Edition, I thought I had the scope figured out:

  • Add content for C# 11.
  • Fix some issues with the Simula and Vin Fletcher challenges.
  • Try to flatten out the learning curve even more in the first half of Part 2, and help people better understand the purpose of objects and object-oriented programming.

It was early November of 2022, and I was basically “there.” But I had made enough significant changes that I wanted feedback, so I launched the Early Access version and got a group of readers (most who had struggled with the beginning of Part 2), and had them work through about nine chapters in a three week “mini-course.”

I got a lot of fantastic feedback from that mini-course, and felt the need to spend more time on the challenges throughout the book. There were a few things I felt about the challenges that deserved attention, and the mini-course participants confirmed my thoughts. So the scope shifted on me:

  • I wanted the challenges to contribute better to the main storyline.
  • I wanted the challenges to have a cohesive view of how the in-book universe works. For example, from a storyline standpoint, there really aren’t skilled programmers around. Yet, there’s a variable shop? What’s going on there? So there’s a world-building aspect here.

And then the scope creeped more as I thought through things. I got a better feel for what I want from the book. For example, at one point, I felt like the book should be fairly comprehensive about the C# language itself. I had an expectation that readers would never look at C# code and say, “I’ve never once seen that feature before.” For example, there’s the global:: thing you can do that is kind of a this equivalent, but instead of starting at the object you’re in, you force the search from the very top. The book didn’t cover that, and I felt it maybe ought to, to be completionist. But the more I thought about it, the more I felt that wasn’t a great goal. I don’t need to shine a light on the darkest, strangest corners of C#. Rather, readers would be better off leaving some of those weirdo things out and covering more of, say, the Base Class Library, or a bit more about object-oriented design instead. So the book itself was changing shape as I was working on it.

And, of course, when you write a book and then work with the readers on Discord to answer their questions, you learn better ways to teach things, and want that to go into the next edition of the book.

All of these shifting goals have led to me not really knowing when I’ll be done, with just a lot of work left to do, and a lot of the Sixth Edition content in a half-finished, disordered state.

It came to a head a couple of weeks ago after I had spent a couple of hours revising. I looked at where I was at and said to myself, “I’m now farther from finishing than I was when I started.”

That’s problematic.

When it feels like I’m not really even moving closer to the goal when I sit down and do hours of work, it is really easy for your brain to check out and give up. It is really easy to lose momentum, which becomes very fragile.

My brain no longer trusted my long-term plan.

And I had a waking nightmare: I’m already three versions of C# behind (though I’ve covered those with expansions). What if November of 2025 rolls around and C# 14 is released and I still haven’t gotten an update out? What if I feel even farther from the finish line in a year? I can’t convince myself that this can’t happen.

I needed to make a massive change.

So I shelved everything I’ve done with the sixth edition, went back to what I had for the fifth edition, and started over.

That seems extreme. It is.

But the main thing is that I’ve changed strategy. My goal is to keep the book in a “potentially shippable” state at all times. I’m convinced that virtually anything can be done this way. I don’t think it is that common for technical books, but I think it can be done, especially when we’re talking about something past the first edition.

In short, I’m now operating in a mode where I’m going to prioritize the changes I’m making and always work on them in a way that puts the book back into a shippable state every hour or so. If I can’t achieve that, I back up a bit and try it a different way. Perhaps I’ll encounter something that requires a longer time frame, but I don’t think that’s going to be true. I think everything I have in mind can be done incrementally.

Which means the sixth edition is virtually guaranteed to be finished in November, because anything else will just wait until the seventh edition.

This change in strategy has been liberating. I feel excited to work on the book again. It’s nice to not have everything torn apart, and to see, every hour (or less) that the book is back into a good state that I could ship if necessary. Momentum and satisfaction have been easier to come by. Earlier today, after finishing work (my day job), I thought about playing Minecraft for a bit, but then thought, “Actually, no, I’d rather work on the book right now.” That hasn’t happened in a long time. (Though I’m confident I’ll play some Minecraft tonight.)

As far as progress goes, I’ve got all of the C# 11, 12, and 13 features added directly into the book, fixed the Simula and Vin Fletcher challenges (the steepest part of the learning curve), and spent some time getting the challenge solutions for the sixth edition ready to go. If I were forced to release the sixth edition today, I actually wouldn’t feel bad about it.

With that said, I expect to make a lot more changes in the coming months. From all of my work over the last few years, I know of a million things I’d like to improve. I won’t get through a million things, but I might get through several hundred of the most important ones. And that’s what matters the most.

The question a lot of soon-to-be readers have at the end of a post like this is always, “So should I wait to get the book then?” This finally has a more intersting answer than I’ve been able to give before. First, November is a long time away. You will almost certainly be done or nearly done with the book by the time the next edition arrives. For most people, I recommend just going with the fifth edition still. The fifth edition is stable. I might release a “patch” update to fix a typo or small mistake, but it isn’t changing in any significant way. In contrast, the early access sixth edition should stay “potentially releasable,” meaning each early access release will be a complete self-consistent book, but expect the updates to come often (hopefully weekly) and have some substantial changes (chapters added/removed, challenges reworked, etc.). If you want to see how the sausage is made and be involved in shaping it, perhaps the sixth edition is right for you. But the sixth edition is on the bleeding edge, so expect to bleed a little.

As a reminder, I’ve committed to the idea that anybody who paid money for the fifth edition (on Gumroad or Amazon) will get the sixth edition for free once it becomes available (on Gumroad as a PDF, because I can’t afford to ship printed copies to everyone for obvious reasons). So if you’re debating whether you should wait, don’t. Just get the fifth edition now. When the sixth edition is ready, you’ll be able to get that for free.