Hacker News new | ask | show | jobs
by ams6110 2971 days ago
I have a degree but honestly can't say I've ever really used anything from algorithms or compilers courses on the job. Nobody (meaning, very few people doing mainstream startup/SaaS development) writes fundamental algorithms, you use libraries and classes from the language you're working in. Most people don't work in compiled languages anymore, and if they do, they don't write their own compilers.

Maybe understanding the concepts from these courses helps. But despite having a degree I often feel that I am (to quote TFA) not really “clever enough” or “good enough” or “well-rounded enough” or “deep enough” in their discipline. Almost everything I do day-to-day I did not learn in school, I learned by flailing around for a while, reading documentation, and gradually working things out.

Yet I don't feel anxiety over it, because I get my work done, and can see that I accomplish more (in some case a lot more) than many of my peers. Yes, there are also some others who are clearly better than me, but that's life.

4 comments

> Nobody [...] writes fundamental algorithms, you use libraries and classes from the language you're working in. Most people don't work in compiled languages anymore, and if they do, they don't write their own compilers.

This is sad thing to say. I'm a sysadmin, and I'm regularly using the knowledge about algorithms to assess which data structure to use in my programs, I've written recently a binary search function (if we're talking about fundamentals), more than once I needed to write a priority queue that allows fast(er than O(n)) updates to random elements, and I assure you that I'm very happy that I took the compilers course, because I've written several parsers (one more interesting was a translator from a simple query language to SQL, to easily extract data from inventory database). And I am a sysadmin, I'm not supposed to write that much. What went wrong?

> I have a degree but honestly can't say I've ever really used anything from algorithms or compilers courses on the job.

I've found knowledge of the fundamentals (compilers, operating systems, algorithms, etc.) useful in interviews and arguments. That's about it.

I really want to change that. It's a waste of time to be asking people about those things in interviews for application development (and similar) positions. There is a whole other set of skills we should be asking that we don't. Problem solving, distributed systems, failure states, etc. Things that understanding algorithms, compilers, and operating systems have no bearing on. It doesn't hurt to know those things but it is essentially wasted time/space.
Don’t most career fields come with important knowledge you learn as a junior, but don’t actually use on a daily basis? I assume doctors learn a huge variety of things in school, but practically don’t use more more than 50% of that knowledge on the job. But having this knowledge makes you better at your job overall.

I never got a CS degree, but I wish I did. There are times I run into obscure issues where deeper knowledge of the compiler, os, etc would help me understand the problem better, or how to design my code better.

There's nothing in a CS degree that you can't brush up in a self-study.

For example, I have a hard time believing my compilers class at UT serves me better than someone taking one of the compiler MOOCs I've seen people mention on HN from time to time. Especially since it was 10 years ago. The class cost me over $2,800 too.

It might be tempting to think a CS degree would help you know more about things you don't, but I think it can be an excuse to not just dig into it yourself. It's not like CS majors graduate with an understanding of OS and compilers in the wild they'd have to actually debug.

My favorite technique is asking “what’s a great undergraduate program / course(s) in this field?”

And then getting the syllabi. (A lot of professors just host their syllabi on their publicly accessible site, not through a portal. If one instructor needs you to go to a portal, try another instructor. Try searching for the syllable PDF or .Doc via Google)

And then learning the topics on the syllabi.

You might be able to learn stuff on your own but you'll probably do it at a much slower pace. I consider myself an autodidact but when I started taking in-person classes at my local CC I got access to an almost custom level of guidance. "You get out what you put in": If you're expecting professors to just upload all this karate to your brain, you won't get as much out of it as the guy practicing at home and bringing his questions in.
> I have a degree but honestly can't say I've ever really used anything from algorithms or compilers courses on the job

I ended up having a job writing programming language tools for a bit. Then there was some graph stuff one time in 10 years. It can come up occasionally. I still find it's something nice to know.

A more realistic example might be understanding the limits of regular expressions/languages and what they can/can't do well. Like the bus conversation I overheard glorifying some "smart" guy parsing XML in a stored procedure using regexes.