Lately, I was going through the blog of a math professor I took at a community college back when I was in high school. Having gone the path I did in life, I took a look at what his credentials were, and found that he completed a computer science degree back sometime in the 1970s. He had a curmudgeonly and standoffish personality, and his IT skills were nonexistent back when I took him.
It’s fascinating to see the perspectives on computing and how many of the things I learned in my undergraduate were still being taught way back to the 1950s. It also seems like the computer science degree was more intertwined with its electrical engineering fraternal twin.
Although the title of this post is inherently provocative, I’m curious to hear from those of you who did computer science, electrical engineering, or similar technical degrees in decades past. Are there topics or subjects that have phased out over the years that you think leave younger programmers/engineers ill-equipped in the modern day? What common practices were you happy to see thrown in the dumpster and kicked away forever?
The community also seems like it was significantly smaller back then and more interconnected. Was nepotism as prevalent in the technology industry then as it is today?
This is just the start of a discussion, please feel free to share your thoughts!
I wouldn’t say that.
Software today, in the real business world, is extremely complex, simply because of all the layers you have to understand.
Today I have to know about Kubernetes, Helm, CI/CD, security/policy scanners, Docker, Maven, Spring, hibernate ,200 libraries, Java itself, JVM details, databases , and a bit of JavaScript, Typescript, npm, and while we’re at it, react. And then of course the business logic.
I’d argue, in today’s world, nobody actually understands their software completely. I’m not sure, when exactly the shift from raw dogging assembler and counting cycles to the mess of today happened, but I’d argue, software today is much much more complex and complicated.
It seems from history that things nobody actually understands eventually implode and are rebuilt from scratch, Samsara wheel and all that.
I’m waiting with anticipation for Kubernetes and the Web (as it exists) to die, die, die.
There are concepts of layering and modularity. At some point the humanity in general has mixed them up. One can treat a module like a black box in design. One can’t treat layers as if they were completely independent, because errors and life cases cross layers. I mean, the combinatorics of errors in module separation and layer separation are different.
Ah, many words to try to say a simple thing.
I thinke leaky abstraction is the word you’re looking for, and I agree.
My goto comparison is file systems. I can call open() on a file without being bothered about almost anything behind the file descriptor. I don’t care whether it’s a ramdisk, an SSD, a regular hard, SMB mount over Tokenring or whatever. There is a well defined interface for me to work on and the error cases are also well defined. The complexity is hidden almost completely.
But if I want to do anything in k8s, the interface is usually exposing me to anything that goes wrong under the hood and doesn’t hide anything at all.
The absolute worst example of the is Helm. It adds almost nothing for 99% of the use cases except complexity, actively stands in your way many times and the entire functionality actually used in most cases is Bash-style Variable expansion.
More or less yes.
+1 for Helm hate.