I've wanted to move into software engineering for a while, but I'm unsure how to begin. What fundamentals should I learn first, which programming languages are good starting points, and what beginner mistakes should I avoid? I'd also appreciate suggestions for practical projects, study materials, videos, and ways to practice consistently.
4 Answers
A formal computer science degree or master’s is one possible route, especially if you want a structured education and access to traditional recruiting. It isn’t the only route, but the core topics—programming, data structures, algorithms, operating systems, databases, and networking—are worth learning either way.
Be prepared for this to take a while. Learn consistently, practice by building increasingly useful projects, and don’t expect a job immediately after finishing a few tutorials. The software job market can be difficult, and experienced developers are competing for roles too, so developing solid fundamentals and a portfolio is more valuable than chasing every new tool.
I’d avoid relying on AI tools at the beginning and spend time understanding the fundamentals yourself. Python is a friendly first language, while C can teach you more about memory, pointers, and how computers work under the hood. Stick with a small number of languages until you’re comfortable solving problems, then branch out based on the kind of work you want to pursue.
If you want a free, structured curriculum, take a look at OSSU’s computer science program. It organizes publicly available courses into something close to a full computer science degree. Alongside the theory, build small projects based on things you actually care about. Even a silly script, such as a recommendation tool, can make the learning process much more motivating.

Thanks, I’ll look into that. Building something personal sounds like a good way to stay motivated.