How much CS theory should I learn for my first entry level software job?

7 points by jobhdez ↗ HN
Hello guys and ladies,

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 ] thread
Dont worry about CS theory for your first entry level software job. It's nice yes, but in order of importance it is very low for your first software job.

Try 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.

Thanks for your response.
Do companies care if you know CS theory?
No.

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.

I would focus more on the complexity of each project in your portfolio rather than the quantity. If you have been maintaining a single app for a while, especially one used by others, it looks better than a dozen weekend projects IMO. Ideally projects should be related to the position you are applying for, but having a variety of things can demonstrate an ability to adapt.

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.

Thanks. Is a linear algebra system complex? I’ve written some systems that compute linear algebra operations.
> I would make sure your CS fundamentals are solid as a lot of companies are using leetcode/hackerrank problems as a filter.

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.

A good GitHub repo will speak for itself and being able to explain what you claim you know on your resume will land you a job.
The one time I wanted my code to speak for itself, I was also willing to speak on behalf of my code. I brought my whole project (laptop) to an interview and was prepared to walk some interviewers through a full-stack app I built.

They wanted FizzBuzz.

If you can build things with code and talk about them, you have the applicable skillsets. Lean into that! For application development, CS is definitely a relevant background discipline but not the only background discipline.
I studied CS. It actually depends on where you want to go. For web dev, I offer the following advice.

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.

A typical first job will need you to prove the axiom of choice and be able to build a quantum turing machine.
> So as you can see I have studied almost the core of a CS degree.

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.