4 ms·
Some of my personal experience with non-CS majors can be summed up with three words: Hardware Ex Machina. Perhaps I'm biased, but I suspect a smart person fro
by edgyswingset 11y ago
Some of my personal experience with non-CS majors can be summed up with three words:
Hardware Ex Machina.
Perhaps I'm biased, but I suspect a smart person from a CS degree background will probably think about performance more than a smart person who never learned about "irrelevant" things (to quote the author this post is addressing) like Operating Systems.
Someone without a CS degree can learn about how to write code which is memory and CPU-efficient and scales well. But if it's never a problem they have to come across, they may never even think about it. CS students are forced to think about things like that in their degree.
- spamizbad 11y agoI've worked as a developer for 10 years. My anecdotal experience is that 4 years of undergraduate Computer Science does not impart any special skills regarding performance. I found myself routinely refactoring code written by CS-degreed programmers who would do silly things like put a database query inside 2 nested for-loops. I even had one case where a degreed dev looked at perfectly fine code and said "Oh there's a faster way to do this..." then proceeded to implement a solution that was literally 500x slower, but checked it in anyway, not bothering with any before/after performance benchmarks, just assumed his stuff was magically faster. The culprit: His solution was very greedy with network traffic (but was arguably more computationally efficient). Didn't matter tho, it was slow as dog. Undergraduate Computer science will teach you how to measure how much arbitrary work it takes to complete something but AFIAK it does not seen to teach you a very good job of how to actually look at a specific problem and optimize the work, memory, or external latency-intensive resources... that must be learned by critical analysis of actual code.
- MichaelGG 11y agoIt's probably prefixed with "good CS" and also filtering candidates. I've interviewed several folks, some with masters in comp sci, and they were utterly oblivious to even basic algorithms.
- edgyswingset 11y ago> that must be learned by critical analysis of actual code I agree fully, and won't ever deny that many students simply either never do this or never do it effectively. There are courses which teach this however (such as OS), and many of them are required for a degree. I feel that the likelihood that someone with a CS degree has had these good practices ingrained in them is higher than someone with no background in CS. In other words, it's a safer bet.
- jasonjei 11y agoI concur. Courses like Operating Systems, Computer Organization, Automata and the like may not seem immediately applicable, but I've had a ton of moments where I've been so happy to have had a formal CS education. Even if you're never going to work on an Operating System, knowing how Operating Systems work can help you design your software to work better--especially with respect to using API calls responsibly.