HACKER Q&A
📣 jacksonsix

How do I fix what I didn't learn during undergrad?


Hey everyone,

I'm a 31 year-old back-end developer. I've worked as this job for about 6 years and I learned everything on the job. I got my bachelor's in Software Engineering at 22 but I started working as a developer way later (at 25).

After moving to a new country I realized that going to a terrible college and not learning anything during my undergrad was a huge mistake.

I know a lot about complex, data-intensive systems because I was lucky enough to work at a start-up that hit it big. My resume is impressive in the eyes of the recruiters but goddamn, I am literally clueless about algorithms, data structures, and everything else they teach you about during undergrad so I cannot pass any coding interviews.

Nobody cares about real-world skills and they're all asking me to implement data structures that are just names to me at this point.

How do I unscrew this situation? Get a masters and possibly a specialization? Go to coding bootcamps? Pivot into another job?

I'm pretty good with systems administration too but I feel like I won't have many career options after that.

I'm not looking for a magic fix. I wanna fix this once and for all.

Any help or suggestion is appreciated.

Thanks in advance.


  👤 armchairhacker Accepted Answer ✓
Tbh nowadays you can learn CS concepts online just as easily. College is not for learning anymore, it's for getting a degree and networking.

So the question becomes: how do I learn this stuff? In your case you want to learn specific data-structures for cookie-cutter interviews, you can probably just research and do HackerRank.

If you want to learn more interesting CS concepts (or you're getting bored doing HackerRank stuff, or you want to learn actually practical skills), I recommend building a side project. Side projects are how I learned most of the CS stuff I know, and I learned way more from side projects than from college. Alternatively you can look at existing open-source projects and try to learn / contribute to them.

The side project can be whatever you want. I made side projects to try and fix problems that I encountered. For example a toy HTML builder.


👤 otras
Are you worried specifically about algorithms and data structures for interviewing, or are you interested in a more general CS foundation?

If the former, it may be worthwhile to take an algorithms class or two (or even just work through the free MIT OCW Intro to Algorithms class), then focus on improving your interviewing skills. I’ve found classes to be very helpful for building the foundation of general understanding, then if you’re practicing algorithm questions it’s less memorization and more understanding.

If the latter, then a general masters may be of good use to you. Maybe something like Georgia Tech’s online program, where tuition is more reasonable (vs some of the $45k masters) and the focus is on taking a wide variety of classes (as opposed to a thesis).

I definitely wouldn’t recommend a boot camp, since those are geared towards absolute beginners and probably wouldn’t give you the depth to learn deeply.

I’m hardly an expert, but I’ve been pursuing a masters while working full time to help flesh out my CS foundation (after not doing my undergrad in CS). I’ve found the classes to be very helpful.


👤 Turing_Machine
If you're looking for a text on algorithms, Sedgewick is probably the friendliest one to someone studying on his own.

CLRS and Knuth can be tough sledding, particularly without a knowledgeable mentor or instructor.


👤 0xfaded
I've been going through MITs open courseware maths courses since they're better than what I had at university. If you get through 18.0[123] and linalg you'll be able to talk shop with anyone (not to mention apply the tools). I used Steven Boydes Linear Dynamical Systems for linalg. He's very entertaining and clearly incredibly sharp.

Btw I'm also 31


👤 karmakaze
There can't be that many datastructures + algorithms that are asked about, since even those who did learn them forget most but the core ones. Linked-list, hash table (closed/extensible), binary tree, balanced tree (of some kind unlikely remembered), traversals, priority-queue, maybe a graph representation and algorithm on it, some sorts, and big-O/complexity <-> algorithm's loops/recursion.

The most basic knowledge is knowing when to make something into a Set/Hash vs searching an array/list (or sort the array to binary search).

As for all the leetcode tricks, I've never practiced them or worked at a company that required passing such an interview.


👤 diatone
https://teachyourselfcs.com/

edit: worked for me. Went from working as a Mech Eng with degrees in mechanical engineering & econometrics to software engineering. Also very similar to yourself re: startup experience.

Good luck!