this post was submitted on 02 Mar 2024
61 points (90.7% liked)
Technology
59534 readers
3199 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Things are much simpler now. Even little things. For instance error messages. They used to be cryptic as hell, but these days there is more of an emphasis on communication.
The only thing more complex is the volume of choice. There are just soooo many ways to do something that picking a way can be daunting. Its led to a situation where you have to hire based on ability to learn rather than ability with a specific toolchain.
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.
I don't know. I worked with old IDEs like Turbo C, Turbo Pascal or some of the earliest versions of Visual Studio and I was able to know from the output where the error occurred from the error message and could work with a debugger to find the true source.
That's true though. And also how IT evolved into different other fields, line DevOps for example. Now there's an *Ops for almost everything. The latest bring machine learning. And each have their own million ways to do things with so many certifications.