3 ms·
If it's any reassurance, I believe CS degrees do make us better programmers than those without them. At the least, we picked up concepts that "just programmers"
by otachack 6y ago
If it's any reassurance, I believe CS degrees do make us better programmers than those without them. At the least, we picked up concepts that "just programmers" would have had to learn on the side.
As for the whole school cost, that's a different story, but we landed in a lucrative field where we can pay off the debt, compared to a ton of others that have no hope to without a career pivot.
- coldpie 6y ago> I believe CS degrees do make us better programmers than those without them Maybe, but I can't really think of much that I learned in college that I have ever used since then. Everything a typical programmer does can be learned with just a textbook and/or the Internet. Beyond that, it's just years of practice and continual improvement, which you won't get in school. All the CS classes I took (DFAs, state machines, Turing machines, programming language theory) were a complete waste of time for a programmer, and the actual useful stuff (programming courses, systems architecture, networking) I picked up in my free time in middle/high school. I'm sure it's all great stuff if you want to be a computer scientist, but I didn't and don't. I think the only classes I took in school that I consider useful and that would have been challenging to pick up on my own were the coding theory[1] and intro to crypto classes. That's pretty poor showing for four years and a ton of cash. [1] Not programming, but number theory stuff, basis for cryptography https://en.wikipedia.org/wiki/Coding_theory https://en.wikipedia.org/wiki/Coding_theory
- IdiocyInAction 6y agoI personally think the most relevant courses I took were an OS course (I don't write operating systems, but knowing how they work can be very important) and algorithms come up rarely, but still sometimes. I also had a networking course that I definitely benefited from. Generally, I am quite pleased with my education.
- Kalium 6y ago> Everything a typical programmer does can be learned with just a textbook and/or the Internet. You are absolutely right. Literally every single thing a programmer does, every bit of information they use, and every other thing they might use or need to know can be found beyond the ivory tower. It's all there. In fact, often the problem is less getting information and more figuring out what information is relevant. Is it possible that some people may find value in a structured educational process? One that has already organized and worked out how to teach the fundamentals? I suspect that many people, pointed at the internet in general, may experience some difficulty in figuring out what to study and in what order. As for material, I've personally found DFAs, FSMs, algorithmic analysis, and an understanding of computer architecture to be valuable to my career. I found a lot of basic theory useless, until I encountered cryptography that required me to understand a lot of theory to grasp fully. Obviously, personal mileage can, does, and will vary greatly.
- coldpie 6y agoI think we largely agree. Perhaps what's needed is for employers to stop requesting CS degrees for programming jobs, and instead have some kind of programming certification process, and accompanying courses to prep one for that certification. Then we can dispense with the theory that is useless for 90% of programmers, and stop making CS lecturers teach C++.
- Kalium 6y agoWhat specific skills do you think should be tested for in this certification process that you imagine? It's been my experience that a CS degree is used as a certification for a broad array of fundamental skills. A lot of theory is, as you say, useless most of the time. But sometimes it can be important to have a grasp of how hash algorithms work under the hood. Though how well this degree-as-certification idea actually works is open to debate. I've definitely seen it fail. It's been my experience that it's rarely obvious to people operating in ignorance when a grasp of theory would make a big difference. This can make it challenging to fall back on the model of looking up information as needed.
- coldpie 6y agoIt's an interesting question and I'm definitely not qualified to answer it in a few minutes! But some ideas... For a course, I'd start with how a computer works, something simple like a 6502 CPU with a memory mapping; how assembly represents those operations; how higher level languages abstract that; how computers represent different types of data; then move into some overview of languages in common use today; algorithms and complexity analysis; good code hygiene and development practices; common tools in the Unix and Windows worlds. Once you've got all those basics you can move into focuses like graphics, security, web apps, data storage, operating systems.
- Kalium 6y agoMost of what you've described was the core material in my undergraduate program. It's certainly enough to cover several years of study. This is enough to make me wonder if my undergrad experience was, in essence, the certification process you're thinking about.