I made a mild college CS alarmist post today on /leftypol/ and was asked by a student for advice on what to avoid in school. I'm well aware of how contentious programming can get, often with people disagreeing on what even constitutes fact vs. opinion, so feel free to argue against anything I say or provide your own advice to any potential CS students.
Disclaimer: If you want to be a web-dev, none of what follows is applicable.
Offer up your soul to the mad gods of JavaScript and prepare to live out your days in unspeakable agony.Here is my generalized advice in terms of CS: take any class that is focused on implementation rather than theory. Theory is also very important but it is absolutely useless unless it relates to your actual programming experience. If you are not being assigned large or challenging projects, make your own.
Things to avoid or be skeptical of:
- You are primarily being tested on pen-and-paper. The only time programmers have to write algorithms without a debugger or at least a console to print to is in job interviews. You can fail every single test in algorithms class and still be a boss programmer. Tests like these are more akin to Math exams where you must provide proofs.
- You are being force-fed OOP (Object Oriented Programming), either by an academic ideologue or simply by virtue of using Java which basically forces it. OOP in programming epitomizes "ideology" in Zizek sense, it's an abstract model adored by academics who don't write code for actual users because of its perceived elegance and simplicity. However, real-world code ALWAYS has to deal with reality's messy edge cases, which renders any OOP code into a nightmare. There are about a million other reasons it's bad, there are many good lectures on YT.
- Dynamic languages. If you have never programmed you might not even know what this means. Some examples include Python, JavaScript, Lua, etc. These are good for very small applications, like scripts, support tools, toy programs, hobby use, etc. The problem is that they can often be slow, and generally let you make fatal mistakes that you won't even know about until you actually hit the bug in testing. Compiled languages (C, C++), on the other hand, have a huge amount of rules that the programmer must obey before they even run the program. If all the rules are satisfied, the compiler translates your code to a fast, efficient format that gets
directly exePost too long. Click here to view the full text.