4 ms·
Ask HN: Do most CS graduates lose interest in CS after they become programmers?
Libraries take care of so much that requires CS knowledge nowadays that one might expect this.
- palata 3y agoMy opinion is that most CS graduates end up in a position of software engineering, which is a subset of computer science. That's just what companies are willing to pay for. On top of that, companies are driven by profit (often short-term), which does not require to make good software (on the contrary). For many companies, it is deemed more valuable to quickly come up with a mediocre solution than to actually study the problem and engineer a good solution. Quickly assemble some libraries into a prototype that will go in production, then either get a promotion or change company. That is how I feel it works most of the time. Therefore developers don't really get/need to study how the system works: they won't be judged on how good they are in computer science, but rather on how fast they build the next prototype that will be shipped to customers. Those who want to keep learning about actual computer science have to do it in their free time. Which is fine for a while, but at some point they grow older and have other priorities in their free time, which probably makes it look like they lose interest in CS. I don't think it means that libraries replace computer scientists in making good software. Libraries enable developers to quickly assemble mediocre software, and they get paid for that. One still needs computer scientists to make good software, but most companies don't want that (because that is not what will increase their short-term profit). Again, just my opinion :-).
- AnimalMuppet 3y ago> My opinion is that most CS graduates end up in a position of software engineering... I think you're right. > ... which is a subset of computer science. Here I disagree. It's not a subset. It's a different set, with some overlap. Think of it like chemistry and chemical engineering. Chemistry cares about where the outer-shell electrons go. Chemical engineering cares about making the stuff in multi-ton quantities without blowing up the city. There's some overlap, but they are very much not the same. That's why many universities have different departments for chemistry and chemical engineering. CS is about the theory of computation, the analysis of algorithms, and the design of programming languages. Software engineering is about the efficient production of larger-scale programs that adequately meet the need, whatever that need is. Those are not the same thing. In particular, software engineering deals with scale. You can't deal with a 20-million-line codebase like a 20-line algorithm. It takes a different approach and different tools.
- palata 3y agoWell I would think that the normal thing to do is to hire a chemist to do chemical engineering... isn't that how it works? You're right, though, that most people doing software engineering today have not studied computer science. Not sure if it is always a good thing to not have at least one computer scientist in a software engineering team :-).
- AnimalMuppet 3y ago> Well I would think that the normal thing to do is to hire a chemist to do chemical engineering... isn't that how it works? No. That's why chemical engineering is a degree. People with chemistry degrees should know the chemistry, but they probably don't know all that much about pipe bursting strength, or disposal of multi-ton quantities of waste products.
- palata 3y agoOk, I was not aware of that. Well, I don't know of any Software Engineering degrees. IMO software engineering requires basics of computer science (which you acquire by graduating in computer science). Then it requires a lot of experience (which is why I find it ridiculous when people become architects after 3 years in the industry). I see many "software engineers" who did not study computer science, and honestly many times they lack computer science knowledge, which makes their intuition a bit less valuable than a CS intuition (given the same amount of experience).
- codingdave 3y agoThat sounds like a CS-driven perspective on what "good" means when it comes to software. For CS, "good" means the quality of the code/engineering. For business, it means the efficient solution to a customer's problem. And you are right - those drive different methods for delivering software. Where they meet is in the long-term. Once the "good for business" software hits a market, its "good for CS" level needs to go up so that it can be maintained easily and affordably and expanded. Hence, mature products need CS skills more than startup projects. If you like the business side, do startups and greenfield work. If you like CS, look for "boring" jobs making established software better.
- palata 3y ago> Where they meet is in the long-term. But those projects survive long enough to reach long-term only if the CS side managed to control a bit the vision of the business side. In my experience, the business side in startups tends to be a bit technical (just enough to believe they know) and to dismiss the concerns of the CS side as "this is gold plating" / "this is an artistic performance" / "we are not Google". It results in a shitty codebase that CS people hate. Then one of two things happen: either the startup is successful (even though the codebase sucks), and the business people will think they were right. Or it isn't, and the business side will write blog posts explaining why the market was not ready. In any case, the business side always wins, the CS side always loses. Or almost always, but you get my point. So yeah, being on the CS (loser) side tends to suck.
- al2o3cr 3y agoLibraries take care of so much Are these libraries written by magical code gnomes?
- Quinzel 3y agoYour comment made me laugh.
- cpach 3y agoI think so!? On a serious note though: We can probably expect that the number of library consumers is vastly higher than the number of library producers. Anything else would be quite surprising.
- meiraleal 3y agoEven the library producers are library consumers much more often.
- MattGaiser 3y agoI would be surprised to learn that more than 20% of people in CS cared at all about computer science as more than just writing code. I studied computer engineering to learn to build stuff. Any theory I learn about today is mostly for interview prep.
- Alifatisk 3y agoI study Computer Engineering at the moment, any advice?
- sircastor 3y agoI think most university students are not actually interested in research. They are interested in computing, and they do find some of the experimental nature in the field interesting, but I think (and this exposes my personal bias) most people are more interested in telling a computer to do something than understanding how to make it do it efficiently. I think folks get degrees in CS because university degrees are a path to a decent salary, and it’s a subject they like.
- mattbrewsbytes 3y agoCS is more of a precursor to people getting MS or PhD in it but the tech industry uses it as a barometer to assess candidates. I actually like solving business problems with software so advanced topics where core CS is crucial (writing RDBMS software or OSes) aren’t of interest to me other than foundational knowledge. CS is sorta useful in writing business systems but really for CS level problems, you’re mostly using installed software, not writing your own RDBMS, or your own sorting algorithm. The foundational knowledge is helpful, makes picking up new tech somewhat easier but I’m using libraries and installed software that provides proven solutions. There is still complex software involved but it’s complexity is business complexity. If your path is to write business software, a CS degree can be a good entry point but day to day work isn’t typically writing advanced CS stuff. All analogies are bad, so here’s one comparing software to healthcare: a software engineer is more like your primary care doc (there are lots and they use proven solutions) and a CS PhD writing code for an OS on how to use CPU cores is more like a brain surgeon (there are few and they may have to find/create solutions).
- RetroTechie 3y ago> CS is sorta useful in writing business systems but really for CS level problems, you’re mostly using installed software, not writing your own RDBMS, or your own sorting algorithm. There are many jobs for which CS is absolutely useless. Or mostly useless. But I'm sure there are also many jobs, where having a foundation in CS could be very helpful in weighing the merits of different solutions to a problem. Big O (scaling), understanding existing implementations, their performance on particular hardware, the difficulty (or non-) of implementing a new technique that doesn't exist as ready-to-use library, language issues, etc, etc. Sure maybe one can do well without diving into CS. But that doesn't take away its value.
- joshxyz 3y agoopposite for me. the libraries lets me do more, it saves me time, it lets me avoid repeating and doing what other people can do better than me. it opens me up to intersections of cs across other industries too.
- hnaccountme 3y agoMost CS graduates probably didn't understand what they were getting into and never had an interest in CS.
- jjice 3y agoI'll read a bit here and there but CS was always more of the traditional pathway to software engineering for me. I do still love to read language theory (what I can understand, at least). It's a very neat glimpse at what we can hope to see in our compilers in the upcoming decades.