How much CS theory should I learn for my first entry level software job?
I’m a self taught programmer who has been getting software engineering interviews. I’m applying to Software Engineering jobs that require little to no experience. I’ve studied SICP and HtDP. I have also studied Proofs and CLRS. So as you can see I have studied almost the core of a CS degree.
I have build some math systems in Lisp and Python but nothing great. 600 lines of code or less. Lately I’ve been doing web dev with Django and react. I have built a full stack web with these. So I’ve built a rest api and a frontend to consume this api.
Should I keep applying and just practice leetcode type of problems? Or should I study OS and Software construction from ocw mit? I am also interested in compilers. Should I do these first or can I keep applying to roles? That’s my debate right now. Thanks
14 comments
[ 0.22 ms ] story [ 44.0 ms ] threadTry to build as much as possible and land your first job. You will feel overwhelmed for 1-2 years probably. Whenever that ends, start studying CS theory.
It's always better to be well rounded.
They just don't pay you or expect you to know theory (or allow you to use your knowledge as it's very unproven) in your first job.
As far as interviewing, since you are self taught I would make sure your CS fundamentals are solid as a lot of companies are using leetcode/hackerrank problems as a filter. Dynamic programming, data structures, time/space complexity, algorithms. If you grind enough problems you should have a good understanding of these things but it's important to be able to explain them too, at least in an interview.
You can join any number of CS dev communities and you'll hear the same thing. Getting your first job at least is a massive grind, just keep applying non-stop, don't get discouraged. And DONT burn yourself out in a single day by applying for 100 jobs thinking it will help. Best of luck to you.
Is this a thing in silicon valley or something? I've never seen this done in practice and would hate it if I had to do this in an interview. Mostly because it doesn't seem like it tells you how good of a programmer someone is, but how much they cared to study for your job interview (how desperate) they are.
I have to say, I mostly disagree with the notion that CS skills are deeply important for a first job. That isn't to say that they aren't important more broadly, but I actually had a very wrong idea about programming due to my comp sci major. My first job (internship) I had to learn some tough lessons about pair programming, code review, clean code, messy code, _overly_ clean code, unit testing, etc. Almost none of my computer science skills were useful. That didn't come until about 8 years later in my career.
They wanted FizzBuzz.
It's much more important to be able to handle big old-ish codebases than it is to be able to handle all CS theory. Though, I'm sure it's different with FAANG. With FAANG, all that matters is passing the interview ;-)
I have almost never needed my CS theory. It's nice to know but not really applicable when you need to extend an ACL (security permissions for users) or refactor the i18n export function. What is needed is understanding how to quickly navigate in a codebase while touching few to many files (depending on the task).
How to get this experience? I don't know, I studied computer science. I think an internship is best? Perhaps contributing to an open-source project? Perhaps creating your own side project?
I'd think along those lines. Though it could be that other HN'ers have a totally different perspective. I'm curious what they have to say.
Just not crammed for the long exams, or pulled all nighters to get assignments handed in on time and such.
SICP covers a few topics from computer science, just not items in a CS curriculum like, oh, operating systems, networking and distributed systems, databases, computer graphics, software engineering, computer architectures, machine learning. Plus CS degrees require non-CS courses, such as math: advanced calculus, linear algebra, statistics. Electives in the humanities can be no picnic. Philosophy, yikes.