I'm a third-year computer science student trying to use my free time to improve, but I'm unsure what to learn next. I'm interested in backend development and machine learning, and I've already covered the basics and completed a few small projects. Should I focus on building more advanced applications, studying specific topics, or specializing in one area? I'd appreciate a practical direction for progressing beyond beginner-level work.
4 Answers
The best next step is to pick one project and make it substantially more complex instead of starting several more basic ones. Add multiple-user support, authentication and authorization, a database, third-party integrations, automated tests, logging, auditing, billing, or other features that force you to think about architecture and maintainability. You’ll learn a lot by measuring performance, debugging real failures, and improving the design as the project grows.
If you want to combine backend development with machine learning, build a practical AI system rather than another generic model. For example, create a knowledge assistant using Python and FastAPI that processes messy documents, uses embeddings and retrieval, connects to a vector database, and includes evaluation, guardrails, tool calling, monitoring, and deployment. Test it with incomplete data, timeouts, bad inputs, and high traffic so you can practice making it reliable in production.
You can also benchmark one of your existing projects and use the results to guide your learning. Find slow queries, inefficient code, or bottlenecks with profiling and load testing, then fix them. This gives you a concrete reason to learn caching, indexing, concurrency, observability, and deployment rather than studying those topics in isolation.
Focus on moving from beginner to intermediate fundamentals: data structures and algorithms, databases, design patterns, system architecture, testing, and performance. A useful way to choose topics is to outline the skills expected for a backend or machine-learning engineer, then select a small number to study while applying them in one ongoing project. Building something deeper will be more valuable than collecting lots of unrelated tutorials.

That sounds like a useful direction. I like that it combines the backend skills I want to improve with applied machine learning instead of treating them as completely separate paths.