.NET Puzzles, Gotchas and Cautionary Tales

My new Pluralsight video – .NET Puzzles, Gotchas and Cautionary Tales is here.

What do I know from over ten years teaching .NET?

I know you’re smart, I know you’re busy, and I know you sometimes feel overwhelmed.

What do I know about the nature of .NET?

It’s big. Really big. .NET, Visual Studio, and the surrounding landscape change crazy fast!

What do I know about the arc, the history of .NET?

It’s more than a dozen year’s old. There are programmers that weren’t born at its release and senior programmers that never worked without generics.

Why this course?

I’ve observed that almost everyone has holes in their .NET knowledge (OK, in my experience it’s everyone, but I know the world is a big place). They either never heard or forgot key points about .NET.

This isn’t trivia, many of the puzzles in the course are about program flow. Others are about the outcome of calculations. A couple are about potentially massive performance issues.

You’re successful at your job because you get these things right almost all the time – you understand most of the .NET framework. Or you have an effective mythos (Drew the Guru said…). But sometimes you get it wrong. You spend a day chasing a bug that was a framework misunderstanding or you put code in place that will cause problems later.

This course is about upping your game, making you more robust.

Why Puzzles?

Putting an issue out in the form of code and asking “What will happen here?” let’s you interact with the puzzles in the same manner you’ll interact with the problem in your own code. Well, almost the same. I was doing a puzzles seminar once, and a very smart programmer expressed the sentiment of his user group “it has to be x, but if it were x, you wouldn’t be asking whether x.” I also simplify the code to spotlight single issues – these will always be more subtle when they pop up in your own code.

To get the most from this course, think about the questions. The course is a plate of food, not an IV drip. Up to a point, the more you think, the more you’ll learn. Stop the video, get out your knife and fork, or pencil and Visual Studio, and mentally chew up the questions before jumping on to the answer video.

It’s not a beginner’s course. If you’re new, I’d suggest watching courses like Scott Allen’s C# Fundamentals courses first. But whether you’ve just got a toe hold in the basics, or you’ve been in .NET since the early betas – there’s something here to surprise you!

Why bonus clips?

Where the material was long and didn’t fit the puzzle format, I used a bonus clip. Maybe you already know that Contains() is faster than Any() which is faster than Where() when you’re just checking existence. Maybe it doesn’t matter because you aren’t using an enormous collection. That kind of stuff is in a bonus clip.

Working together

Now, if you really want to learn a lot from this course, watch it with a buddy. “I think because…” and “wow, that isn’t consistent with…” and even better “how does this affect this aspect of our app…” fundamentally change how your brain processes and make retention more likely. It’s a great course for a study group. Plan time to explore – “well, if that is true, what would happen if…“

No judgment and no scores. Programmers you really respect have gotten these wrong. Have fun!


I’ve really enjoyed using this format in User Groups and I use puzzles in workshops to set the stage for deeper dives into .NET. I’ve talked about some of these puzzles for years, but I’ve never put together a video. I’d really like to hear how the puzzle format works for you, and of course I’m always happy to hear about your favorite .NET quirk.

2 thoughts on “.NET Puzzles, Gotchas and Cautionary Tales”

  1. .Net is indeed huge, I remember attending its introductory seminar about 10 years back. At that time there was lots of enthusiasm and lots of wonderful things being lined up for the future. Though it has lived up a lot to its promise. But we had expectations, a lot of it was misplaced I guess, that it would evolve to become Java like platform independence, there was this talk of preparation of .Net layer for even Linux! But it has turned out good, infact a lot better and more suited to the world of internet than heavily cooked and leading to no where VB6.

Leave a Reply

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