Summary: The cloudy layers of modern-day programming by Vicki Boykis
“The actual logic of our program becomes almost invisible, buried among services and APIs.”
Original article: The cloudy layers of modern-day programming by Vicki Boykis
Motivation: much of what we do in modern software development is not true software engineering but rather gluing together a bunch of third-party services and APIs.
A new layer of hell
To a certain degree, modern software development can be summarized as VendorOps:
“putting together jigsaw puzzles with hammers, scissors, and tape, instead of having finely-crafted pieces that are designed to fit together“.
Instead of focusing on the performance of self-contained apps, your time is spent manually puzzling together hundreds of various APIs and libraries built on top of libraries, all of which need permissioning and network configuration in the cloud. Programming is no longer art nor high engineering but layers of glue code mapping your business logic into vendor-provided abstractions. Engineers get bored because they don’t get the chance to do anything new or stimulating. The applications are often tied to the cloud vendor’s specific implementation and networking:
“Technology moves in cycles, and today, the cloud, is essentially, a big timeshare mainframe partitioned for millions of users.“
Developing in the cloud era brings its own challenges. When your compute service, such as Google Colab notebook, crashes with an out-of-memory error, there’s little you can do besides renting a bigger instance with more RAM. The typical tools for troubleshooting system performance, such as memory profiling, are hidden behind additional layers, including your browser and cloud service APIs:
“As we transitioned to the age of programs [..] that are further away from the bottom of the stack and closer to making web requests, we lose some of that ability to create larger, more meaningful programs.“
A larger problem than memory
Programming in the VedorOps world is hard to develop locally and deploy. Once your project is in production, you have to abstract everything away through networking and layers and layers of service accounts, through which cloud vendors are looking out for their own best interests instead of facilitating development workflow. “The actual logic of our program becomes almost invisible, buried among services and APIs.”
Is it all that bad? No. We gain benefits such as the ability to spin up enormous on-demand compute clusters, being able to try out stable diffusion, etc. But we also give up a lot.
Core message & CTA
“We don’t need to go back to the mainframe or writing assembly. We just need to step back from the cloud insanity ledge a little bit. The pros that we get when we program in this way are outweighed by what we give up, and it is this heart of engineering that I find myself missing the most.”