rbwhitaker / CSharpPlayersGuideEarlyAccess

A place to track issues with the C# Player's Guide for patches and future editions
18 stars 0 forks source link

Improve the inadvertent plateau at the end #684

Open rbwhitaker opened 1 year ago

rbwhitaker commented 1 year ago

One thing I have disliked about the book as it currently stands is that the book builds to a climax, but right before hitting it, lets off the gas to cover a set of random miscellaneous topics. Most of Part 3 is reasonable, right up until the "Other Language Features" chapter.

Other Language Features. I don't know what, if anything to do about this one. I don't love the "and the rest" nature of it, but some of these things just... don't naturally come up anywhere else, and don't deserve their own chapters. A good example: checked contexts. This could be moved to Level 6 when overflow is discussed, but it uses exceptions. It could be discussed in the Exceptions chapter, but its usage of exceptions is incidental. I'd like to reduce this as much as practical, but plan on keeping it in. It is probably okay in that sense.

Beyond a Single Project. This chapter deals with inter-project dependencies and NuGet packages. It is not specifically about the C# language, and could arguably be removed from the book. One possibility would be to make it a blog post or YouTube video. I think it is useful information and wouldn't want to completely eliminate the content, but it is debatable if this is the right way to handle it. Furthermore, this is one of those few chapters that focuses heavily on how to do things in Visual Studio.

Compiling in Depth. I like the depth provided by this chapter, but I don't love the placement. Why should it be covered here, and this point in the book? A summarized version is covered earlier in the book. It could arguably be made a bonus level, but I'm also tempted to pull it out of the book entirely and make it into website content instead.

.NET. This level, as it stands, accomplishes two major things. First, it gives a detailed overview of what is covered in .NET. But the book has a section in Level 1 about .NET. Why isn't the detailed overview included there? Second, this gives people some information about the different app models and where to go next with them. I'm strongly considering chopping this chapter into two, and moving the overview of .NET into Level 1 and the nuanced details about the app models to the Into Lands Uncharted, when people are most primed to pick one of them up and do something with them.

Publishing: Some options here. It could be okay to leave it where it's at. This is a reasonable culmination of Part 3. It could also be migrated to Part 4, after the Final Battle and before the Into Lands Uncharted, as part of the resolution. After all, the Final Battle is the challenge you're most likely to want to publish anyway. It could also be moved to a Bonus Level in Part 5, though I'm leaning toward getting rid of all of those and making them only web content. The publishing thing also relies heavily on Visual Studio, and that makes it well-suited to similar treatment.

The Final Battle and Into Lands Uncharted. These are the climax and resolution of the book. I think they're great where they're at.

Bonus Levels: Visual Studio, Compiler Errors, and Debugging Your Code. The 6th edition is going to end up adding quite a few pages to the book with additional challenge content and examples. I'm interested in cutting out material that is less useful. I do think people use the bonus levels, but I think people also have a hard time understanding when and how to use them. Plus, two of these chapters are probably best done in video form. For some content, including the new Minesweeper example, I intend on doing both a written form and video form. I could do that for Visual Studio and Debugging Your Code. But given the bonus-level nature, I wonder about going to only a video/web form.

For the bonus levels, one possibility is this. Early in the book (Level 2 or 3) you meet a character that helps you get your journey started right. There is a character you meet early, named Ritlin. This would be Ritlin 2.0. Before you part ways with him, he leaves you with multiple gifts for when the time is right, each with a note about when to open them. For example, "Open when you first have trouble getting your code to compile." And it is a link to the web content that discusses that (currently, Bonus Level B).

I think this approach gives people clearer direction on when to use it, along with building up the notion that there's bonus content on the website that they can access when they want.

This might be too much for the sixth edition, but it might be interesting to present these as inventory items, and collecting inventory, a la Legend of Zelda "item collect" events.