I'm in my third year of an IT-focused high school and recently realized that my classes aren't giving me all the practical skills I'll need for a development career. I understand C# syntax and have experimented with a small TCX-file parser, but I haven't completed a substantial project from start to finish yet. I also have some basic Linux experience and recently set up a mostly unused Proxmox home server, which I'd like to use for learning backend development or DevOps.
I'm interested in Rust, but there don't seem to be many junior Rust jobs near me. C# appears to be the more practical choice, so I'm wondering whether I should focus on becoming strong in .NET first and explore Rust later.
I'm also unsure whether pursuing a computer science degree after high school is worthwhile. Is a degree still important, or would real-world experience and a strong portfolio be enough? With roughly a year and a half left in school, what should I prioritize now? Should I focus on algorithms and data structures, follow a structured developer roadmap, build practical projects, contribute to open source, or something else? I'd also like advice on whether AI coding tools should be part of my learning process or avoided until I have stronger fundamentals.
5 Answers
If you can reasonably afford it, a computer science degree is still a strong option, especially for your first job. The entry-level market is competitive, and many applicants have degrees or significant experience. College can provide structured study in algorithms, operating systems, databases, networking, and software design, while also giving you access to classmates, professors, internships, career services, and professional connections.
That doesn’t mean you should wait until college to build things. Work on personal projects now, and treat college assignments, internships, and group projects as additional portfolio material. A degree and practical experience complement each other better than either one alone.
The most important thing is to start projects and actually finish them. Pick useful, manageable ideas that force you to work with several parts of development: file parsing, APIs, a database, authentication, testing, logging, and deployment. Your Proxmox server could host a small web service, monitoring dashboard, personal inventory system, or automated backup tool. A finished, documented project teaches much more than a pile of half-built tutorials.
Also remember that software work isn’t only writing code. Talk to people, understand what they actually need, explain tradeoffs, and learn how to deliver something usable. Communication and requirements gathering are major parts of becoming a capable developer.
Use a roadmap as a checklist, not as a command to study everything in order. Prioritize programming fundamentals, data structures and algorithms, Git, SQL, HTTP, Linux basics, networking, testing, and deployment. You don’t need to master every cloud platform or framework before building anything.
Reading other people’s code and contributing small fixes to open-source projects can also help. Start with documentation improvements, tests, bug fixes, or narrowly scoped features. That teaches you how to understand an existing codebase and collaborate, which is different from working alone on a personal project. Keep your repositories organized and explain what each project does; reviewers usually won’t inspect every line.
AI tools can be useful, but don’t let them replace the thinking. Try solving a problem yourself first, then use AI to explain an error, suggest tests, compare approaches, or point out weaknesses in your design. Avoid pasting in code you can’t explain or debug. A good rule is that you should be able to recreate the important parts and describe why they work.
For the next year, spend most of your time building and finishing projects, with regular practice on algorithms and data structures rather than making them your entire focus. Keep notes about what you learned, revise old code, and gradually make your applications more reliable and easier to deploy.
Since you already enjoy C#, go deep on it for now. Learn the .NET ecosystem, object-oriented design, async programming, testing, web APIs with ASP.NET Core, databases, authentication, regular expressions, and deployment. Build a few complete applications rather than constantly switching languages. Once you have solid fundamentals and a year or so of practical experience, moving to Rust or another language will be much easier.
A good portfolio could include a deployed API with a database, a small background worker, a tool that processes large files, and a project running on your home server. Include clear documentation, setup instructions, design decisions, and tests so people can understand how you work.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically