Forgetting fundamentals is not normal, at least that is what I thought. Responses in this post is changing my perception. No wonder, recruiting is hard. I have found a knowlge of OS, computer organizaton, digital logic, networking, compiler design are crucial. If you are into datascience or ML, math is absolutely essential. I don't know why so many people think forgetting fundamental is normal.
Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
111–120 of 167 posts
Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#112It just means you've been doing jobs where CS is (apparently) unimportant. If you're ok with that type of job then by all means, continue, it pays the bills. The downside is that it might get mind-numbingly boring in the future. Pushing bits between API calls isn't exactly computer science.
Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#113That matches my experience. In all honesty, as a programmer working on enterprise software development, I feel more like a mechanic than an engineer who designs machines. To stretch an analogy, I spent time learning all of the ins-and-outs of how a transmission works and how to make one from scratch. But in the real world the transmission was already made by someone decades ago and my job is to maintain it and swap o…
Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#114Earlier quoted context omitted.
Then why do we not study debugging, naming, maintenance, reading code etc... specifically?
Professors are not good software engineers
Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#115Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#116Normal, yes. The nice thing about forgotten knowledge is that it's much easier to jog the memory and get it back than to learn it from nothing. You likely still use a lot of the fundamental concepts without realizing it. I am someone who came from a non-traditional, self-taught path ~25 years ago. I did get some formal schooling in electronics, which you'd think was useless, but I can think of a few times solid digit…
But you don't know what you are studying is important or not until you are confronted with a real world problem
Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#117Earlier quoted context omitted.
I think in every decent university you get to choose most of the courses, so you can fit it to your interests. Now it can be that somebody did the wrong choice, and now does not find a job where what he learned is useful. I think the university’s curriculum is not bad as it is. More specifically, you do not need to be a CS graduate to be a programmer.
I have a CS bachelor + masters and the only actually real-world useful courses were on the masters levels (and only 3 courses out of many, the rest were time wasters), 99% of the other stuff before it was a total waste of my time.
1. CS 101 - I mean, duh? Intro to programming, basic algorithms and data structures. By the end you can at least write a simple program, and if you weren't a nerd like me (started programming at 8 because the computer was there) this would be essential. Which was the case for the majority of my classmates in college, most hadn't done any programming beyond maybe "hello world" before college.
2. CS 102 - Data structures focus, don't recall its name, may have just been "Data Structures". Choosing the right data structure for the job (though many of the particulars aren't necessarily relevant, but how to choose what, that part is critical for embedded systems).
3. Compilers - Parsing, mostly, not the translation part. This was an introductory course, 200-level.
4. CS theory - Main takeaway was choosing between regular and context free languages and understanding the limits of both. Again, parsing but not translation has been more common in my work. The proofs side has been less useful in my professional work, but informal proofs are still very useful.
5. Systems 101 - Baby operating systems, especially working "close to the metal" in embedded, even on a host OS.
6. Computer graphics - Less the graphics part, more the structure of programs to operate at high throughput on large data.
7. Calculus through Linear algebra - (required by the CS degree, 4 courses) highly applicable to some of my work. Especially the recent stuff, touching on orbital mechanics.
8. AI - In the "good old fashioned" sense, not the deep learning/machine learning sense. Turns out it's highly applicable to making expert systems. Probably because that's what it excelled at, and those can be applied to some interesting situations. I'll place this as "indirect" though, like graphics.
9. Computer architecture - Direct and indirect. On the indirect side, it really taught me to work with boolean algebra which turns out to be very useful for studying real programs and their logic (and simplifying them). On the direct side, ever done VHDL/Verilog? Good luck being successful at that without studying computer architecture (self-study or in school)
10. Another computer systems course - Had a big assembly emphasis. Means that I don't "fear" it like many of my colleagues. I can read disassembled code without much trouble, and write it with reference material (because I don't do it often, it's like Fortran to me - I can read it, but writing is slow since I'm unpracticed).
11. Parallel programming - Actually very applicable to some embedded work if you have multiple processors involved or a multi-tasking OS available.
That's 14 courses right there that I've used in my career or am presently using. And that's not counting the math courses I took when I tacked on a math degree. At least I didn't waste 99% of my time. Maybe 10%? But, honestly, I cannot think of a technical course that has not, at some point, come up in my professional work. Even my abstract algebra class from the math degree saved us a lot of time and money a couple times when I proved a requirement was actually impossible.
I can imagine some of my colleagues feeling the way you do, the lack of utility of their degrees. But they all jumped into management roles early on, their technical degrees are useful only for the lingo.
EDIT: I finally thought of a time-waster class. It was our software engineering class. In theory, that should've been one of the more practical classes. Taking requirements, developing solutions, changing requirements, changing the system, etc. In practice, it was all theory. Useless. My AI class was actually a better software engineering class since it was team-project based.
Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff
#118I had an interview the other day and they asked a question on Big O notation to which I didn't really know the answer so guessed it. In 10 years of web dev, backend engineering work I've never needed to use it.
You have, you just don’t call it that. You probably know that accessing an array list is faster than a linked list, and a binary tree search is faster than an array list search. What you may not remember is the specific big O notation for those, but that’s not the important thing anyways. The important thing is being able to reason over relative complexities of various operations. When I interview people, I ask the q…