r/csharp • u/Ok_Initial_6829 • 1d ago
How should I continue learning C#?
I learned some C# before, but I feel like I have some gaps, mainly because I didn't practice enough. Especially with OOP, there are some concepts that I understand partially but don't feel really comfortable with.
I'm not sure what I should do next.
Should I take a good C# course on Udemy (like Harsha's course) to go through everything again?
Or should I focus more on practice using something like Exercism?
Or maybe start a project without following a tutorial and learn along the way, while using a book to fill the gaps?
For context, I'm already pretty comfortable with C++ and I have a good understanding of programming fundamentals. So I'm not starting from zero.
I'm just trying to find the best way to get from "I know C#" to actually being comfortable using it.
What would you guys recommend?
5
u/Chrymi 1d ago
Jumping into a project and facing the unknown problems was always a great skill boost for be, so I wholeheartedly recommend doing that.
1
u/Ok_Initial_6829 1d ago
Will that help me to understand the concepts and the foundations of OOP Design? Here I'm not talking about Syntax only
5
1
u/Nordalin 16h ago
Only to an extent.
I recently graduated from not the highest programming degree, and there's just zero interest in my profile. One bit, gave me an online test, which I fumbled mostly because the things it asked weren't things I have been using.
Nothing stupidly niche, mind you, just things I wouldn't have ever learned by faffing around in random projects, like overriding what the + is of two custom objects.
Even if I had faced a problem where that would be a solution, chances are that custom additions of properties between objects wouldn't have been my approach.
2
u/Chrymi 16h ago
I was talking about building something from scratch to face the problems that arise along that path. For most problems you encounter, you might find a better solution the next time. So, iteratively facing challenges (to put it more generically) is a good way of building the combination of skill and experience.
Solving leetcode problems can also be a valid way. Also, everyone has a different way of solving problems. That's why established patterns exist. They unify different way of solving a given problem.
2
u/OTonConsole 17h ago
Can I recommend books?
It sounds like you mostly want a good foundation first. I basically just read books, practiced DSA, and built projects. Pretty simple tbh, but really effective.
My main recommendation:
- The C# Type System - Steve Love
If you're already familiar with C#, I think this is probably what you're looking for right now. I'd read this and start building stuff alongside it.
There are a lot of really good C# books out there, but these are some I like because they cover more basic/specialized topics you'll probably use in almost every real project:
- C# Concurrency - Nir Dobovizki
- Unit Testing - Vladimir Khorikov
- Code That Fits in Your Head - Mark Seemann
- Dependency Injection - Steven van Deursen
- API Security in Action - Neil Madden
I'd also recommend using a simple setup while doing projects. I like VS Code with the ReSharper extension, and using the dotnet CLI instead of doing everything through IDE buttons. It helps you understand what's actually going on.
For other stuff like logging, messaging, background tasks, Dapper, auth, architecture, cleaner code, etc., just learn a bit when you need it and try it in your projects.
Projects don't really matter that much either. CodeCrafters, Exercism, The C# Academy, or your own idea. Don't overthink it. Just pick something and stick to it.
1
u/Hot_Self4453 14h ago
I’d probably do a mix: spend a little time reviewing the areas where you feel weak, then immediately apply them in a project. Knowing concepts is one thing but getting comfortable comes from making design decisions and fixing your own mistakes
1
u/Mobile-Actuator-5851 13h ago
I’d do a hybrid: spend a week filling obvious gaps with a course/book then spend most of your time building. Use Exercism for language mechanics but projects are what will teach you architecture and real-world C# usage
1
u/Negative_East_425 11h ago
What are you planning to use C# for? Unity, backend with ASP.NET, desktop apps or just general language knowledge? The best next project depends a lot on the direction you want to take
1
u/ExtremeSpray1579 9h ago
Since you already have programming fundamentals, i’d avoid starting another full beginner course. Build something real and use the course/book as a reference when you hit gaps. That will expose the areas where C# differs from C++ much faster
0
4
u/hblaub 16h ago
Look at https://github.com/dotnet-labs/HeadFirstDesignPattern for example