Hello guys and ladies,<p>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.<p>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.<p>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
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.<p>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.
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.<p>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.<p>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.
I studied CS. It actually depends on where you want to go. For web dev, I offer the following advice.<p>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 ;-)<p>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).<p>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?<p>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.
> <i>So as you can see I have studied almost the core of a CS degree.</i><p>Just not crammed for the long exams, or pulled all nighters to get assignments handed in on time and such.<p>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.
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.