Pains

204 pains collected

Severity:

Competition from faster emerging languages (Mojo, Julia, Zig, Rust)

7

Mojo offers Python interoperability with C-level speed; Julia dominates scientific computing; Rust leads systems programming; Zig and WebAssembly-centric languages dominate edge/IoT. Python loses use-case ownership across domains.

ecosystemPythonMojoJulia+3

Job market oversaturation and salary stagnation for Python developers

7

Python's accessibility flooded the market with junior developers, creating intense competition for entry-level roles. Companies migrate to Go or Kotlin for performance/type safety, and AI startups prefer Julia/Rust, leaving Python devs maintaining legacy models.

ecosystemPythonGoKotlin+3

No built-in monitoring and logging observability

7

Standard Kubernetes lacks native observability features for monitoring cluster utilization, application errors, and performance data. Teams must deploy additional observability stacks like Prometheus to gain visibility into spiking memory, Pod evictions, and container crashes.

monitoringKubernetesPrometheus

Turbopack unreliability with TypeScript and CSS modules

7

Turbopack, Next.js's replacement bundler, complains about valid TypeScript code and struggles to understand `:global` in CSS modules. Despite these issues, it remains unstable and not production-ready.

buildNext.jsTurbopackTypeScript

Persistent Storage and Stateful Application Limitations

7

Docker's native volume management lacks comprehensive enterprise-grade stateful operations. Data integrity guarantees, backups, encryption at rest, and cross-host replication cannot be reliably accomplished using only Docker volume commands. Organizations must adopt complex external orchestration systems like Kubernetes to meet production stateful workload requirements.

storageDockerKubernetes

Image bloat and unused dependencies increasing attack surface

7

In-use vulnerabilities dropped below 6% in 2025, but image bloat has quintupled. Heavier, less-optimized container images increase attack surfaces despite fewer known CVEs, creating a security paradox.

securityKubernetescontainer images

Security vulnerabilities in base Docker images

7

Outdated packages and CVEs in Docker images are not automatically detected. Requires manual scanning and image updates, with no built-in vulnerability management.

securityDocker

Migration complexity when converting large JavaScript codebases to TypeScript

7

Migrating large JavaScript projects to TypeScript requires careful planning and resources. Attempting 100% perfect types from day one causes delays, while the overhead of compilation time, build steps, and complex configurations frustrates teams transitioning from pure JavaScript.

migrationTypeScriptJavaScript

Persistent volume provisioning failures with cryptic errors

7

PersistentVolumes fail to provision correctly leaving stateful applications in pending state. Error messages are cryptic and debugging is difficult, blocking deployments.

storageKubernetesPersistentVolume

Premature adoption of advanced networking solutions

7

Teams implement service meshes, custom CNI plugins, or multi-cluster communication before mastering Kubernetes' native networking primitives (Pod-to-Pod communication, ClusterIP Services, DNS, ingress). This introduces additional abstractions and failure points making troubleshooting extremely difficult.

networkingKubernetesservice mesh

Data quality and preparation for AI/ML applications

7

26% of AI builders lack confidence in dataset preparation and trustworthiness of their data. This upstream bottleneck cascades into time-to-delivery delays, poor model performance, and suboptimal user experience.

dataAI/MLmachine learning

Data fetching in useEffect creates cascading round-trip delays

7

Fetching data in useEffect causes a waterfall effect where component renders trigger data fetches, and nested child components wait for parents before making their own requests. This creates 3+ steps before data even starts moving, resulting in users seeing loading spinners for 3-5 seconds instead of immediate content.

performanceNext.jsReact

Skills shortage in Kubernetes and SRE expertise

7

Managing Kubernetes add-ons, cluster operations, and platform engineering requires cross-disciplinary talent (SRE, security, developers) that is in short supply. Teams struggle to staff and retain experienced Kubernetes operators and SREs, delaying critical work.

dxKubernetes

Library incompatibility issues with Next.js and Three.js

7

Integrating Three.js with Next.js creates compatibility issues that are difficult to resolve, breaking expected library functionality and causing significant frustration during development.

compatibilityNext.jsThree.js

Accumulation of orphaned and unused Kubernetes resources

6

Unused or outdated resources like Deployments, Services, ConfigMaps, and PersistentVolumeClaims accumulate over time since Kubernetes doesn't automatically remove resources. This consumes cluster resources, increases costs, and creates operational confusion.

architectureKubernetes

Tooling Conflicts and File Watching Issues in Strict Mode

6

TypeScript tooling occasionally fails to watch files or has conflicts between the TS compiler running in the terminal and linting happening in the editor. Since strict mode requires everything to compile, these issues cause significant frustration.

dxTypeScript

Non-local development environment complexity

6

64% of developers now use non-local cloud environments as primary setup, but this introduces coordination and debugging challenges that weren't present in local-only workflows, requiring new tooling and practices.

dxDocker

Slow test execution within Docker containers

6

Running tests from within Docker containers takes excruciatingly long to complete, adding significant overhead to the development and testing workflow.

performanceDocker

Slow Docker build times in CI/CD pipelines

6

Docker builds are slow on CI/CD pipelines, delaying deployment. Requires manual optimization (reordering Dockerfile, enabling BuildKit) that isn't default behavior.

buildDocker

Steep Learning Curve for Docker Adoption

6

Developers transitioning from other infrastructure approaches find Docker difficult to master despite initial ease of use. The steep learning curve is compounded by Docker extensions and additional tools that increase platform complexity, and rapid updates that make it hard to maintain proficiency.

dxDocker

PID1 Signal Semantics and Zombie Process Management

6

Docker inherits UNIX process management design issues where special init processes must be run to handle zombie process reaping. The PID1 signal semantics differ from other processes, causing compatibility problems with applications that don't account for these differences, though this can be mitigated with the --init flag.

compatibilityDocker

Lack of standard API for inter-process data sharing

6

Python lacks a standard, well-designed API for sharing data between processes. The multiprocessing.Queues are limited and third-party libraries implement parallelism in inconsistent ways, forcing developers to build custom RPC solutions or choose between incompatible approaches.

architecturePythonmultiprocessing

TypeScript compiler rewrite creates breaking changes and toolchain friction

6

Microsoft is rewriting the TypeScript compiler in Go with breaking changes planned for TypeScript 7, plus new Node.js native TypeScript support that only strips types without type-checking. This creates ecosystem fragmentation where tools have different capabilities and developers must understand multiple execution paths.

migrationTypeScriptNode.jsGo

Over-engineering and excessive abstraction layers in codebases

6

Developers create unnecessarily complex inheritance chains and abstraction layers that make code difficult to understand. Following a single business logic path requires jumping between ten or more different definitions, making the codebase hard to maintain and reason about.

architectureTypeScript