4 ms·
> 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 progra
by Kalium 7y 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 7y 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 7y 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 7y 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 7y 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.
- vehementi 7y agoCould basically say the same thing about half of your post: theory that won't come up in practice so why should it be on my certification?
- jart 7y agoFor much of the 20th century programming was believed to be what they called back then women's work. Academy didn't feel comfortable teaching it since they knew things like yearly JS fads would happen and probably wasn't until Knuth that folks believed courses could be taught that would offer students lifelong benefit.