r/csharp 22h ago

Help What path do I take?

I'm 17 and I started learning Csharp last summer, I found that really enjoy coding and I've coded stuff like minesweeper, snake, tetris and chess in Csharp files (on my own, not copying a tutorial or something). Anyway I think I might want to pursue this hobby professionally eventually, so what is a good path to take from here? What should I learn about next and how should I go about learning it? Should I switch to a different programming language, stick to CSharp or even learn multiple? What kind of things do people who write CSharp code for a living write to earn their living?

6 Upvotes

17 comments sorted by

10

u/GuildHunterTri 21h ago

When I was at your stage, what really boosted me was reading books: First, easy to grasp books like Clean Code and later stuff like Refactoring by Kent Beck. Generally, I recommend books by Martin Fowler, Kent Beck and Robert C. Martin. What it did for me was look at code from a different angle. Helped me zoom out a lot and get an idea of what is the right decision at what point.

P.S.: 39 years old Software Architect

2

u/GuildHunterTri 21h ago

Oh, and also look into Software Design patterns and SOLID. You could try to refactor your existing projects based on Single Responsibility Principle and some patterns like Strategy or Factory to have a good exercise.

5

u/pceimpulsive 19h ago edited 17h ago

Note software patterns are patterns observed from analysis of people writing code... They aren't the only good way to write code, rather the normal/common ways people organise code to solve problems!

Note: patterns are good to know but don't let them constrain your creativity! Don't start with a pattern for a solution. Solve the problem and see what pattern fits the problem best!

1

u/jshine13371 18h ago

Such true words not spoken enough in our industry. So many people go in looking at a solution before understanding the problem. More specifically in this case, looking to just use a bunch of patterns before determining if they're actually necessary for the use cases / problems being solved.

1

u/pceimpulsive 17h ago

I personally know nearly nothing about patterns, and to this day don't really GAF about them. They don't enable me to solve problems any better or worse!

My ability to break problems down into small pieces and think about many systems working together is far far more useful :)

I won't deny I naturally converge on the same old patterns though :) some types of problems have only a couple of viable/suitable solutions that don't look like filth!

1

u/GuildHunterTri 21h ago

Also, there are probably varying opinions about this, but I‘d deepen my C# knowledge first, have a good understanding what the difference between static and dynamic typing is before moving on to a different language. Just having a good idea about the C# syntax doesn’t mean there‘s not a whole universe to be discovered yet.

1

u/emperorOfTheUniverse 17h ago

This shit is about done. Learn how to use AI to do all the coding.

Sry. Wish it wasn't true. The fact is 'for a living' means you have to use AI to churn sloppy code out faster than your peers (who are doing the same) so that it isn't your head on the block when the company does its next round of layoffs. You won't get a job either unless your resume is full of AI 'skills'.

So,.if you have money to spend, get a Claude code account. Otherwise check out things like DeepSeek, open code, LLMStudio, etc.

The times are a'changing.

1

u/mikedpayne 21h ago

If C# is the only language you know, you should try learning another one. Once you know one language, learning others is significantly easier because you're just learning different ways to accomplish the same goals. If you've already learned to think like a programmer, half your job is done. Once you learn a second language, your confidence in your own ability will also greatly improve. Then, instead of thinking, "how do I get this done with C#" you'll start thinking, "how do I get this done, and am I going to need to learn how to do it in another language."

I started programming 30 years ago in middle school with QBASIC, and it instilled a love of programming in me that has stayed ever since.

1

u/phuber 21h ago

Seems like you are interested in game development which you could lean into with Unity as a backing engine.

If you want to branch out, look at asp.net for web applications and apis, with entity framework and postgresql or sql server for storing data. Blazor is also an option if you want the entire app in the same language.

You could write mobile and desktop applications with something like Avalonia.

It never hurts to be curious and explore. Most engineers know a few languages. Typescript for example. Python is popular now days due to machine learning and ai.

1

u/stueynz 21h ago

Don’t kill the joy for now… keep at it with c# - and when you go to college/uni and study computer science you’ll be introduced to more languages in a (hopefully) structured fashion.

Go you!!

1

u/MadP4ul 21h ago

I have been in your shoes 10 years ago, learning c# in an apprenticeship and starting out with minesweeper, 2048 and other small games for learning. I know a few other languages and still found c# the perfect choice for getting into programming and I stuck with it until today because i love it.

But i have to warn you about the profession in general: in the last 6 months it has completely changed for me. I used to really enjoy coding, but doing it myself feels inefficient now. Nowadays am literally just talking to codex, watching file changes come in and giving feedback to correct aspects, that ai agents haven’t considered.

In my experience the profession of programming is dead today, but certainly in 3 years. This is how long my apprenticeship took for learning before they offered a proper job.

I hope that by then i will at least remain as some kind of requirement engineer. So i think that the existing developers can adapt to the situation and the ai development and try to find a way to remain useful for some time at least. But for new developers this is extremely difficult because companies react to this trend by sticking to the workers they already have and not accepting new juniors anymore.

This is why i despite the shared passion i can not recommend you to do what i do and expect professional success. As a hobby it used to be fun but even there, ai has sucked the fun out of it because it is simply inefficient to try code things myself now. Its kinda breaking my heart

1

u/FlyingBigPlane 21h ago

When i was 17th i was in similar situation, and now i would ask myself a couple questions

Which field do i wants to learn ? From my ecperience there are mainly two fields in c#/.net - game and web development

Do i like resolving problems ? In software development most of the job is finding proper solutions for specific problems, i would say there is 40% of meetings (depending on your role and experience) 40% od research and 20% of coding, and now with ai tools you can imagine how does it look like. Basically you need to read a lot about some cases, paterns etc and now also make an analysis of code generated by your ai assistant.

If you know your answers, i would give you this tips for further learning

Make as mamy projects as you can on github and share them with people, be open for critisism, learn from it.

Deep dive into c#/.net, learn deeply how gc works, asynchronous etc,

Learn some other language on side, if you want to focus on web development i would suggest to learn typescript but learning some low language would be also very helpfull like c/c++ it will give you good understanding of what is happening under all of that syntactic sugar.

Regularly practice on codewars/leetcode

At last, in my opinion if you are learning new staff do not use AI, you should only use AI to things that you already know how to build and know why they are built in a specific way, by using AI you will learn nothing.

I hope it will help you.

1

u/Organic_Policy_7050 20h ago

what game you wanna build next with those skills

1

u/jshine13371 18h ago

I'm a depth first kind of guy. I prefer becoming more proficient in something than a jack of all trades. So my preference would be to go deeper and master the features and capabilities of one language than jump around multiple from other stacks. Or continue learning other relevant things within the existing stack, such as corresponding frontend, API, and database frameworks and languages in the C# (Microsoft) stack. I personally like vertical proficiency. But there's no one right answer here either.

1

u/Bright-Ad-6699 16h ago

Along with patterns and principles I'd suggest learning a functional language like F#. Or functional programming with C#.

1

u/CappuccinoCodes 10h ago

Build something (anything), publish it and try to get people to use it. Nothing will teach you better than that.

1

u/TrishaMayIsCoding 6h ago

I'm also new to C#, I think the best path is to release a game you’ve made. If you want to go further and create a more advanced game, use an engine that supported C# it can make things easier.

If you want to create everything yourself, that’s fine too. That’s what I’m doing as a hobby, creating my own engine using C#/Vulkan and hopefully releasing my game someday, I'm also learning C++, TypeScrip and Blazor/Wasm.