I've been learning web development during my gap year, mainly using ASP.NET Core with some React. I can build simple CRUD applications independently, but so far the work has felt like combining APIs and libraries and designing application architecture rather than doing the kind of problem-solving I enjoy.
In high school I participated in competitive programming, and I'm more interested in algorithms, data structures, mathematics, and lower-level programming. Should I continue maintaining my web development skills as a backup while exploring other areas, or would it be better to switch my focus? Possible alternatives I'm considering include machine learning, deep learning, systems programming, embedded development, graphics, and compiler engineering. I still have about three years before graduating, so I have time to experiment.
4 Answers
If you consistently enjoy data structures, algorithms, mathematics, and lower-level concepts more than building CRUD applications, it's worth exploring fields such as operating systems, embedded programming, compilers, graphics, or systems engineering. You don't need to choose one immediately. Three years is plenty of time to try projects in several areas and discover which one feels most engaging.
Changing direction is reasonable, especially since you have several years before graduation. Try making a few focused projects: a small compiler or interpreter, an emulator, an embedded program, a graphics demo, or a machine-learning project. Practical experiments will tell you much more than choosing a field based only on its reputation.
The CRUD projects you're building are mostly the beginner-friendly surface of web development. Real-world web work can involve plenty of difficult, novel problems, including performance, scalability, distributed systems, security, and complicated domain logic. That said, the problem-solving style is different from mathematical or competitive-programming problems, so it may simply not match what motivates you.
You don't have to throw away the web skills you've gained. Keep them as a useful fallback or hobby, while spending the next few years trying areas that interest you more. Build small projects outside your coursework and use them to see what actually holds your attention.
That makes sense. I realized I haven't explored web development deeply enough to judge the entire field, and its problem-solving style is different from the algorithmic problems I enjoy. I'll keep web development as a smaller skill while experimenting with other areas before I graduate.
Machine learning and deep learning could be a good fit if you genuinely enjoy mathematics, statistics, and experimentation. They are not simply a more algorithm-heavy version of web development, though. Start with linear algebra, probability, calculus, and basic machine-learning algorithms before jumping into large frameworks. Compare that experience with a small C or C++ systems project and see which kind of work you prefer.

The important thing is not to force yourself to stay with web development just because you've already invested time in it. Keeping it as a backup while exploring systems, graphics, or compilers is a sensible middle ground.