|
|
|
|
|
by xhkkffbf
2250 days ago
|
|
I hate to be super-negative, but I'm not even sure a bachelors in CS is a good idea. Oh sure, you learn a few good things along the way, but then the professors start dragging you down their favorite theoretical paths. I'm all for philosophizing and navel gazing, but there's not much practical in things like lambda calculus, NP-completeness and some of the other topics. To make matters worse, these pursuits can confuse the brain. I know one fancy CS major who dismissed a problem as unsolveable because it was NP-complete. He missed the fact that the dimensions of the problem were such that a quick heuristic did perfectly fine. The sad thing is that large parts of the curriculum aren't that valuable. Data structures used to be my favorite, but today it's not that important because we stick everything in hash tables or database tables. We rarely use LISTS! The same goes for compilers. No one writes a compiler any more. Apple just repurposed LLVM when they made Swift. But all of the undergraduates have to pull their hair out making toy compilers and for what end? Most of the CS curriculum is pretty extraneous. This is why many companies are deliberately hiring technically competent people from tech fields like physics or chemistry. They learn practical skills to analyze their data-- the kind of practical skills needed by corporations not theory heads. |
|
I heard someone else say 30+ years ago you were more likely to be implementing a sorting algorithm or other things often studied in your day-to-day job. Most people's job have changed to integrating predefined APIs--a completely different skillset.
However, as a counterpoint I wish I had pursued a degree. I've looked over friends' notes from their undergrad and graduate classes and wished I had the time to do what they did. Not just as a personal interest, but to give you a practical understanding of what those magic APIs are doing.
Similar to a "hello world" of a framework, in practice things get messier. You often end up having to compare frameworks to pick one. Or play around with a few to judge which is best to continue with. Having a rough idea of how it was implemented and knowing the pros and cons of those choices are hugely beneficial. After choosing, you only write the code once, but spend the rest of the time rewriting, debugging, and optimizing. Having those CS fundamentals not only helps you identify when the built-in solution is insufficient, but what better options might be.
Ignoring all of this, I'm sure you could fill a career with writing one-and-done CRUD apps.