Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Hmm, re-reading your post and thinking more about the specifics, I think the next steps vary a lot depending on your personal experience and resources.

You can basically break a "software engineering" degree down to three components - writing code, "core theory", and "specialist knowledge".

You may already have "writing code" down well enough for entry level gigs; if not, side projects are a fine way to get you there. Look over job postings that interest you, see what languages they ask for, try writing some code in that language.

For "core theory", there are three basic classes you'd ordinarily take: algorithms/data structures, an introduction to compilers, and an introduction to operating systems.

If you've taken these courses already while in your current degree program, great, you're done. Don't worry about all of the extra specialist knowledge, you can pick it up later if you need or want it. You'll know as much as any other entry level generic software engineer.

Algorithms/data structures tells you why some code is fast and why some is slow, and the theory of fast code. Compilers teaches you how programs work under the hood, how the computer actually interprets and executes your programs. Operating systems teach you how the computer as a whole works what happens when you write to a file or a socket or a screen.

You don't need to be able to write a compiler or am operating system from scratch to be a good generic software engineer, but having a rough overview of how the entire system works is one of the things that elevates you past being "just" a self-taught coder. It helps you understand what your code is doing as well as how to write it.

If you haven't been exposed to the "core theory", you're probably best off just trying to pick up books or (free) online courses on the subject. Unless you have just fantastic financial resources you shouldn't try to change your degree or get extra formal schooling in the subject. As long as you can write code, there will be people happy to hire you as a SWE, so you don't even have to wait to master the core theory to start applying to jobs.

Start with algorithms/data structures. It's the most useful and a good opportunity to get more practice writing code in, especially in new languages.



For a basic intro to compilers/OS I'd recommend the Nand2Tetris course.

It's the best course I've ever done tbh, and is actually interesting. I never felt like I was forcing my way through it.


Thank you for this amazing comment. It has helped me reorganize my understanding of the relationship between computer science and software engineering.


> algorithms/data structures

Certainly someone can recommend a good resource here?

The Wizard Book maybe?




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: