Frustrations of Modern Development
Here's something different for a Sunday post. Software has changed, but with it, so have our frustrations. 13 pain points that developers run into today.
Setting up a new developer environment. Even the most declarative and reproducible environments have leaky abstractions.
Writing Dynamic SQL or using an ORM (Object-Relational Mapping) library. Both are bad solutions to a necessary problem.
Compiling frontend code. Nowadays, even interpreted languages need a compilation step: TypeScript to JavaScript, Sass to CSS, JavaScript modules, minification, uglification, polyfills, and more. It doesn't help that JavaScript tooling doesn't have the most obvious documentation either.
Debugging anything that's cached. Now, we have multiple layers of caching – Cloudfront, S3, and web servers have their own caching rules.
Adding or updating a new dependency. See Nine Circles of Dependency Hell.
Managing changes across multiple repositories.
On the flip side, making tools work with a monorepo.
Tracing requests across microservices.
Sharing a development database.
Running your code through CI/CD and diagnosing real errors vs. flakes.
Managing differences between development and production. (Development/Production parity).
Learning differences across clouds – Identity, APIs, and products.
We've always had to wait for our code to compile. Now we need to wait for the Docker container to be built, pushed to a registry, pulled down by Kubernetes, and everything else too.
What else did I miss? Tweet the most annoying thing about programming @mattrickard