12 ms·
Ask HN: CS grad who barely knows any CS
I (m, 23) will be graduating from a university in Kenya with a CS degree at the end of the year. However, I feel like I barely know anything. I hardly attended classes in my first and second year. I upped my grades in my third year and was even among the top in the class (anecdotally). To be honest, I’ve always felt like our CS course was inferior. For example, I did a Computer Graphics course, but we didn’t even implement line drawing algorithms. My favorite courses were compiler construction (we actually built a compiler) and distributed systems.
I started checking the sources of web pages in high school, and even learnt rudimentary JavaScript and PHP. After high school, I was hoping to join a good uni in the US. I got a relatively decent 1490 in my SATs then bungled up the rest of the application process. I hesitantly joined my current uni. I’ve been coding on and off since then. For school, I wrote introductory assembly, C, and C++: most of which I can’t recall now. Outside of school I learnt Node.JS, Python and Go. I haven’t built any large project: my biggest code base is probably my FYP React Native app or the Vue/Flask web app for my internship.
On paper, it appears I know quite a few technologies. But contrary to that, most of it has been surface level knowledge. To use a friend’s words, I’ve been turning buttons from red to green (doing CRUD). I don't know how databases work, I don't know what exactly ray tracing is, et al. I started applying for jobs last week. To my surprise (or not), I do not fit cleanly into the requirements of any of the junior listings. I can't solve the "easy" problems on LeetCode and my score for the AngelList Fullstack assessment [1] was 18/30. I rather objectively believe I have some gaps in my CS knowledge. I am even considering a boot camp—if one exists for people who already know what a variable is. My tentative plan is to get a part time job, and then spend 6 months reading books, learning tech I’ve always wanted to learn, and hacking on at least one build-your-own [2] type project.
So, how can one effectively fill gaps in their CS knowledge? It’s worth noting that I am overwhelmed, and even procrastinate when I don't have an overarching framework (like school). So it’s not as simple as just sitting alone and studying/coding. I am the "smart" kid who didn’t have to study throughout most of school, but who's "discovered" you have to sit long hours now to be competitive. Is my situation more common than I suppose? Should I suck it up, get a technical support role and build up from there?
[1] https://angel.co/assessments/full-stack-web
[2] https://github.com/codecrafters-io/build-your-own-x
- tibbydudeza 4y agoSome of the ridiculous tech interviews these days expect you do be able to write a Twitter clone in an hour
- LasEspuelas 4y agoAs a professor of none-software engineering, I can tell you that most engineering students that graduate have similar feelings. You have just been exposed to a bunch of topics in CS at various depths. You now know what you know (not much) and what you don't. You are well prepared to learn.
- FabHK 4y agoFor some perspective, check the CodingHorror blog on how many programmers apparently can't do FizzBuzz: https://blog.codinghorror.com/why-cant-programmers-program/ https://blog.codinghorror.com/why-cant-programmers-program/
- jonnycomputer 4y agoComputer science and programming are two different things. Job ads always have unrealistic expectations. Learning is a lifelong journey. Boldly ride forth youngling and seek Eldorado.
- maliker 4y agoDon't worry! I worked with a couple people right out of top 10 CS programs in the USA. One of them was way faster at writing good code than the rest, even people who went through the same program he did. I asked him how he got so good, and he told me he had to take a year off after school to care for a relative, and in his spare time he built web apps for fun. It gave him a great knowledge of operating systems, databases, networking, etc. And he said even more importantly it taught him how to just get into the code and build things. I don't think you have to take time off to hack more. Grab a job, get paid to build things, and soon you'll see your skills getting better and better. You're already thinking hard about how to improve, and that's a critical first step that a lot of people never take.
- msluyter 4y agoMy bachelors was in music and I was midway through a masters in music when I decided to switch to CS. Needless to say it was a huge paradigm shift, and having had very little experience prior to that, and also as a result of a program that was highly theoretical, I came out with a MS in CS but with some massive gaps. I wasn't that comfortable with basic tools, like the unix command line, vi, or even DOS (it was a while ago), for example. So, feeling somewhat unconfident, I took a job in software testing -- SDET, doing test automation mostly in Perl. I figured it'd be a gentler learning curve during which I'd beef up my skills, and after which I'd move over to software development. It worked out fairly well for me, though due to a variety of factors, I stayed in the testing/QA side longer than planned. I think that's not a bad path, and better than starting in tech support imho because you'll be directly involved in the development process. Just make sure that it's a technically focused role with opportunities for writing code, and not just button pushing. And don't stay there too long, or you'll find yourself in the unfortunate niche of the rare and highly sought after testing/QA person who can also code.