Frustrations of Modern Development

Sep 12, 2021

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