I had no other option in 2009 other than an online degree because I needed to work full time.
A failing of society. Around here, non-trad students with no degrees get paid to go to a State University. I first found out about this when a 30 year old father of two children was going to class full time and working part-time told me the state was paying him just enough to keep going to school and keep his home.
I wandered into my professor's room one day to ask him about his thoughts about World of Wacraft's database. He told me one of his students helped design that custom database and he started going over a lot of the kinds of issues huge high transaction databases can have. He was used to teaching graduate students who specialized in databases.
Over all, I probably learned more out of class talking with my teachers about what we learned in class.
So what about all the devices that are not upgradeable? Well, the first thing is not to expose them to insecure networks....
The second thing is to replace them or get upgradable devices. but but but but... excuses.
The thing is, doing them WELL requires the equivalent of multiple PhD's"
Or being interested in them. The GP was arguing that netmasks are not something CS may know. I was getting after that CS should know a lot of everything, including routing. How could someone who understands how routing works not understand netmasks?
CS != IT. This makes as much sense as complaining that your car mechanic knows nothing about engines.
The mechanic may not know how to build an engine, but he damn better understand the ideas behind how they work and be able to do basic maintenence.
He came from a Uni that is a world leader in Bio Engineering, and CS was considered a harder subject because CS is very hard. If it's not hard, you're not doing CS.
we've entered an age in which demanding that every programmer has a degree is like asking every architectural engineering to have a background in structural engineering
Keep in mind that human beings are pretty good at creating a shared mental context of their conversation
You also assume a certain amount standard knowledge and understanding among the peers in order to have a "shared mental context". Depending with whom I am talking, I may need to dumb down my vocabulary or complexity of ideas. If I toss out the phrase "scalable lockless eventually-consistent datastructure", it is going to WHOOSH over 99% of the people I talk to. Now I need to spend several days trying to get someone up to speed with the concept, but they probably won't fully understand a lot of what I'm talking about for months or ever. They're not less smart than me, they just don't have the obsession required to maintain the attention to detail required to understand some advanced topics.
I know 1, maybe 2, people at work I can talk with at full capacity, and we can tear through ideas quickly. We don't "brogram", but we do go to each other with a well thought out issues and present pros, cons, and random thoughts. I work with many bright programmers who do a great job, but most of them are "normal" intelligent people. Not nearly as obsessed as a small handful of us. There is a huge gap between an intelligent person who can program and a probably equally intelligent person who has been programming since a young child and can tell you almost exactly what is going on under the hood networks, CPUs, thread schedulers, memory allocators, garbage collectors.
I've done my fair share of nonintuitive optimizations that result in slower micro-benchmarks, but faster macro-benchmarks. Maybe using a struct instead of an object shows as being slower in a micro-benchmark because you're copying around more data, but the macro-benchmark shows up faster because the random memory access caused by objects is thrashing the cache and the struct has better locality with fewer evictions.
Maybe your simple lock looks to be faster, but has horrible scaling under high contention.
Maybe allocating objects looks plenty fast, but putting pressure on the garbage collector is invoking many stop worlds which is hampering your thread scaling
Maybe your SQL query optimizer is showing you that a column is causing a scan, so you want to index it, but if you rearranged your query, you could do without the index all together.
Of course most of their programs work just fine and don't need these levels of understanding, but there is a reason why my programs seem to just work so well. They're quite thought out, from top to bottom.