▲ | stego-tech 3 hours ago | |
Phenomenal post that reads like a developer’s version of my IT rant on the same issue: stop needlessly overcomplicating things for the sake of complexity alone. The difference being that, at least in my side of the technical sandbox, it’s often along the lines of dissuading someone from propping up a K8s cluster for what’s better suited to a single VM, or stop shoehorning multiple overlapping agents onto endpoints instead of properly utilizing what you already paid for elsewhere, or stop carving out exceptions to policies and procedures that make support and maintenance exponentially more complex. Complexity is a bug, not a feature, at least for 99% of use cases. The problem is that everyone seemingly thinks they’re the 1% that justifies said complexity. | ||
▲ | vbezhenar 3 hours ago | parent [-] | |
Managed Kubernetes is easier than VM. It provides high-level concepts, allowing you to deploy programs with less friction. It does it at a cost of complicated programs running below, but you won't find simple things. Modern CPU alone is insanely complicated machine. You can achieve simplicity by building your product on complicated foundations and Kubernetes is one of these foundations. Another example of complexity is compiler. Even assembly compiler brings a lot of complexity for modern software. Yesterday I wrote dumb empty program with 3 assembly instructions to syscall exit. To link that program, I had to deal with the following sections: .rela.dyn, .rela.plt, .plt, .text, .note.gnu.property, .got, .got.plt, .data, .bss. Of those sections, only .text contained useful data, but GNU software generates them all and wanted my linker script to handle them all. I spent few days researching about it and I still have very little idea what's happening there. And that's the lowest layer possible: x86_64 assembly. For something as simple as C language, it'll be magnitudes more complex, with plethora of C standards, GNU extensions, compiler optimisations, hundreds of compiler flags. IT is complicated and there's nowhere to run. You can only choose some building blocks, pretend that they're fundamental and simple, and build upon them. Most C programmers probably ignore all those sections, have no idea what they do and just let default linker scripts do their work. But the sections are there and complexity is there, it's just hidden below layer you usually look at. |