Pains

726 pains collected

Severity:

Embedded systems face dependency bloat and debug complexity

7

Embedded developers cannot control what gets pulled in with dependencies, leading to bloat. Debug builds become too large for small controllers, forcing developers into optimized builds that complicate debugging and violate typical embedded workflows.

dependencyRust

Docker Desktop Licensing Model and Commercial Cost

7

Docker Desktop is no longer free for commercial use in larger organizations. Paid subscriptions (Pro, Team, or Business) are mandatory for organizations exceeding either of two thresholds, forcing significant OPEX increases. This licensing shift has driven developer evaluation of alternative solutions like Podman and Finch.

configDocker

Unpredictable behavior from uncontrolled state modifications

7

When application state can be modified from multiple places without clear patterns, developers cannot easily reason about code execution. Bugs manifest in unexpected components, making debugging extremely difficult and technical debt accumulates through duplicated and stale state.

architectureTypeScript

Provider versioning lock file inconsistency and reproducibility failures

7

Even with version constraints in code, if the .terraform.lock.hcl file is not committed and consistently used across environments, teams experience "works on my machine" drift where different environments use different provider versions despite identical configuration.

dependencyTerraformproviders

Async Rust complexity creates a separate, difficult programming model

7

Async functionality feels like a completely different programming model from synchronous Rust, causing many developers to avoid it entirely. The complexity is cited even by non-beginners as a major pain point affecting framework choices and code architecture.

dxRust

Inefficient write architecture compared to other databases

7

PostgreSQL has an inefficient architecture for write operations compared to alternatives like MySQL. This limitation was significant enough for organizations like Uber to switch database systems.

performancePostgreSQL

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

Inefficient incremental compilation caching

7

The Rust compiler's incremental engine has gaps where certain compilation parts are not incremental or not cached optimally. For example, expansion of derive proc macros is not currently cached, causing unnecessary recompilation.

buildRustprocedural macros

Build performance issues despite being a core framework promise

7

Build performance remains a major concern with 8,511 GitHub issues. Despite being a core Next.js promise, developers struggle with Turbopack, Babel, and webpack optimization. Experimental features often break existing setups, and slow builds cascade to affect all feature delivery timelines.

buildNext.jsTurbopackwebpack+1

Go lacks modern language features like generics, enums, and pattern matching

7

28% of developers want language features missing from Go that are available in other languages. Common requests include proper enums, union types, sum types, pattern matching, and nil pointer safety. Existing generics are criticized as half-baked.

compatibilityGo

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

Container network connectivity issues

7

Containers fail to access external networks or communicate with each other. Requires manual troubleshooting of iptables, firewall rules, and Docker daemon configuration.

networkingDocker

Inconsistent Data Structure Concurrency Model

7

Go's built-in data structures (maps, slices, arrays) are not thread-safe despite the language's strong concurrency support. Developers must manually implement synchronization using goroutines, channels, or the sync package, creating inconsistency in how concurrency is handled.

concurrencyGo

Lack of mature cross-platform GUI framework

7

Rust lacks production-ready, cross-platform GUI frameworks equivalent to Qt or Electron. Existing efforts (egui, iced, druid) are immature, forcing GUI developers to choose between long iteration cycles or alternative languages.

ecosystemRusteguiiced+1

Limited customization and template rigidity

7

LangChain's pre-built chains and templates are restrictive for non-standard use cases. Developers requiring customized behavior find the framework's structure limiting and may need to fork the library or switch to lower-level approaches.

dxLangChain

Missing stack concept prevents grouped resource management and scaling

7

Unlike other IaC tools, Terraform lacks a stack concept for managing collections of related resources. It only operates at the root module level, making it difficult to manage large, complex environments with multiple resource groupings without custom orchestration.

architectureTerraform

OpenAI API reliability degradation from rapid feature shipping

7

OpenAI experiences roughly one incident every 2-3 days, with a major incident on January 8 affecting image prompts across ChatGPT and the API. The pattern reflects a speed-vs-stability tradeoff where rapid shipping of new models, Codex, and image generation features is compromising reliability.

performanceOpenAI APIChatGPTDALL-E+1

Docker Compose version field incompatibility

6

Modifying the Docker Compose version field can silently disable features. Advancing the version makes previously valid compose files invalid, and there's no clear migration path or warning system.

compatibilityDocker

Application scalability and dynamic workload handling

6

Designing applications that can handle varying workloads and scale up or down quickly is difficult. Predicting traffic patterns and configuring auto-scaling appropriately requires expertise.

performanceAWS EC2AWS RDSAWS DynamoDB

Cost vs. performance optimization tradeoffs

6

Developers must balance using the best resources for performance with managing costs. Finding the optimal resource configuration to meet both requirements is a constant struggle.

performanceAWS

Schema Management Complexity

6

As applications grow, managing all types, queries, and mutations becomes messy and difficult to track. Developers must regularly review and update schemas to ensure everything aligns correctly.

architectureGraphQL

Compliance and regulatory requirement management

6

Meeting regulatory requirements and compliance standards is a significant challenge for AWS developers. Applications must comply with industry regulations and follow governance best practices.

securityAWS

TypeScript type inference limitations with dynamic runtime values

6

TypeScript struggles with objects assembled dynamically at runtime in value space. Developers must manually explain type relationships using complex features like const assertions, mapped types, and type assertions, making it cumbersome to work with dynamically constructed data.

dxTypeScript

Testing GraphQL Queries and Mutations

6

Writing tests for GraphQL queries and mutations is challenging and time-consuming, requiring mocking of multiple data scenarios. Testing complexity increases significantly with complex query structures.

testingGraphQL