I've been learning ASP.NET Core during my gap year, along with a little React, and I can build basic CRUD applications independently. However, I'm starting to feel that web development mostly involves connecting APIs, choosing libraries, and designing application architecture, with less of the mathematical, algorithmic, or low-level problem-solving that I enjoy. I participated in competitive programming in high school and prefer data structures, algorithms, mathematics, and systems-oriented programming. Should I keep web development as a backup skill while exploring other areas, or focus on switching fields? Would areas like machine learning, embedded development, operating systems, graphics, or compiler engineering be worth exploring? I still have three years before graduating, so I have time to experiment.
4 Answers
If you enjoyed competitive programming and prefer C or C++, low-level programming may be worth trying first. Embedded systems, operating systems, compilers, and performance-focused software tend to involve more of the algorithms and resource constraints you seem to enjoy. Machine learning can also be a good option if you like linear algebra, probability, optimization, and experimentation, but it’s worth testing those subjects before committing to it.
You have plenty of time before graduation, so experimenting is the best approach. Try systems programming, embedded development, graphics, compilers, operating systems, and machine learning through small projects or relevant courses. You don’t have to abandon web development completely; maintaining your current ability gives you a practical fallback while you find a better fit.
Basic CRUD projects only show the most repetitive part of web development. Real-world work can involve plenty of difficult problems involving performance, distributed systems, security, reliability, and complicated product requirements. That said, if the kind of problem-solving you enjoy is mainly mathematical or algorithmic, you don’t need to force yourself to like web development. Keep your existing skills as a useful backup, but spend time exploring other areas and see what genuinely holds your interest.
That’s fair. I realized I probably judged the entire field based on its beginner-level surface. I’ll keep web development as a small hobby while exploring other areas before deciding where to specialize.
Don’t choose a field solely based on what sounds intellectually impressive or what you think pays the most. Try several areas, notice which projects you keep returning to, and consider both the work itself and the available career paths. Web development is still useful experience, even if it eventually becomes your backup rather than your main direction.

The important thing is to get beyond tutorials and build something substantial in each area. A small compiler, emulator, graphics demo, or embedded project will tell you much more than simply reading about the field.