I'm a student in Germany who is close to finishing a bachelor's degree. I've studied several programming languages, including Java, Scala, and Python, but I've recently realized that my practical skills are weaker than I thought. I don't feel confident building a complete application independently, especially without relying heavily on AI.
I'm not particularly interested in web development, and I stopped studying Scala because there seem to be few relevant job opportunities. I started CS50P in June, paused during the summer, and recently completed its sixth lecture. However, I still don't feel ready for the job market. I need to find work or an internship to fulfill the practical experience requirement for my degree in Germany.
What would be the fastest realistic way to improve? I don't just want to complete tiny exercises—I want to build projects substantial enough to include in a portfolio. Should I follow a Python roadmap or a broader computer science and software development roadmap? I'm unsure whether watching lessons and solving small exercises will be enough, so I'd appreciate advice on choosing and developing practical projects. Would an internship or working-student position be the best next step?
4 Answers
A useful general path would be: finish the Python fundamentals, learn Git and basic testing, build two or three progressively larger projects, and then apply for internships or working-student roles. You don’t need mastery of every language or framework first. Employers will get a better sense of your potential from a finished project and your ability to discuss its design, trade-offs, and bugs than from a long list of technologies.
There isn’t really a way to speedrun this. People become capable of building larger applications by practicing with many smaller ones and gradually increasing the scope and complexity. Tutorials can introduce concepts, but you need to write the code yourself, make mistakes, debug it, and keep improving it.
Start with a small command-line tool that solves a real problem for you—perhaps organizing files, processing data, or using an API. Don’t wait for the first project to be portfolio-perfect. A messy project that you finish and improve will teach you more than another collection of tutorials. A roadmap site can help you identify missing fundamentals, but it shouldn’t replace building things.
You also don’t need to know everything before applying. An internship or working-student role is specifically meant to give you practical experience, and employers generally expect students to learn on the job.
Yes, a working-student role can be just as valuable if you’re doing real development work. The important part is getting experience with a team, an existing codebase, version control, reviews, testing, and debugging—not just the title of the position.
Using AI as a learning aid isn’t automatically harmful. You can ask it to explain an unfamiliar concept, compare approaches, or help you understand an error, but avoid pasting in large generated solutions that you cannot explain. Try solving the problem first, then use documentation and other tools to check your reasoning. The goal is to become capable of making decisions and debugging, not to avoid every tool.
Pick one manageable project and start coding it before you feel ready. Your first version can be poorly designed; that’s normal. Once it works, add features, refactor it, write tests, document it, and put it under version control. That progression is how a simple exercise becomes a portfolio project.
Since you don’t enjoy web development, begin with a command-line application, desktop utility, automation script, data-analysis project, or small game. Choose something you genuinely want to use, because motivation makes it easier to keep going when the project becomes difficult.

For fulfilling the practical requirement, would a working-student position teach me roughly the same things as an internship?