One of my favourite things about the month of December is participating in the Advent of Code daily coding challenges. I've completed these most years, and in many cases blogged about how I solved them, often with a LINQ or Functional Programming focus to my answers.
This year, I am solving the challenges again, but using the opportunity to teach one of my children a few programming tips and techniques (he's solving them in Python and I'm showing him how I'd tackle the problem in C#).
What I love about the Advent of Code challenges is that they are very accessible (at least early on in the month). A beginner can solve the problems, and more advanced programmers can still enjoy them by looking for ways to optimise the performance or conciseness of their answers, or using it as a chance to learn a new language.
I'd recommend any programmer who wants to improve their craft to try their hand at solving these coding puzzles. I also like learning from how others have solved the same problems, although I make it a rule never to look at other people's solutions until I've done mine.
If you want to see my C# code answers, you can follow along with at this GitHub repo. I've included some notes in the readme about the programming techniques each day's puzzle highlighted. I can't promise I'll complete the whole year - time doesn't always permit to solve the harder challenges.
Don't worry about missing the start of the challenge. Sign up at Advent of Code and invest 15-30 minutes a day at improving your coding skills.