Pains
726 pains collected
Redis Cluster management is complex and error-prone
7Managing Redis Cluster at scale involves complex resharding, partition rebalancing, and data coordination. Online migrations and scaling require careful orchestration and are prone to errors, with automation still requiring multiple manual steps and risk of downtime or data inconsistencies.
Channel panic behavior and missing operations create footguns
7Sending to a closed channel panics instead of returning an error or boolean. Channels also lack common blocking queue operations like peeking or fetching multiple items. Producers blocked on a closed channel panic, and improper usage easily leaks goroutines.
Uncontrolled Container Resource Consumption Causing Host Crashes
7Docker containers lack explicit resource constraints by default and can consume all available CPU and memory, potentially causing cascading host crashes and resource contention. While workarounds exist using resource limit flags, the default permissive behavior poses significant operational risk.
Inconsistent Data Structure Concurrency Model
7Go'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.
Go instrumentation and observability requires significant manual effort
7Setting up instrumentation in Go is painful and time-consuming, requiring 6-8 months of effort. Unlike Java or Python where OpenTelemetry works out-of-the-box, Go requires significant manual boilerplate and careful context propagation.
Dependency management and go get don't support version pinning at scale
7Go's go get and package structure don't support pinning dependencies to different versions, making reproducible builds and dependency management frustrating for projects with many dependencies. This is a critical gap for a language geared toward large-scale projects.
Go lacks modern language features like generics, enums, and pattern matching
728% 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.
Caching keys without TTL causes unbounded memory growth
7Storing cache keys without expiration causes indefinite accumulation over time, leading to unbounded memory growth, increased eviction pressure, and out-of-memory errors. Keys added without TTLs because "data never changes" persist even after assumptions change, causing unpredictable eviction behavior.
Complex state logistics in CI/CD automation pipelines
7Automation pipelines and scripting struggle to handle stateful resource management and state logistics across multiple code paths, despite being critical for continuous integration.
GitHub Actions complexity leads to unmaintainable CI/CD spaghetti code
7GitHub Actions encourages poor practices because common tasks (e.g., sending Slack messages) have convoluted official solutions. Developers end up hand-rolling scripts, creating an undocumented black box system that becomes unmaintainable at scale without external tooling like NX.
Over 50% of users experience state-related issues
7A HashiCorp survey revealed that more than half of Terraform users encounter state-related problems, indicating widespread technical complexity and inadequate state management solutions.
Middleware runs in restricted hybrid runtime with limited APIs
7Next.js middleware executes in a hybrid runtime that supports only a restricted subset of Web APIs and Node.js, preventing direct database connections, file system access, and session management. This awkward middle ground doesn't align with common development patterns.
GitHub Actions control plane reliability and infrastructure issues
7GitHub Actions suffers from recurring control plane problems including broker/backend message relay failures, hung logs, unexplained outages, and unsafe default behaviors (e.g., safe_sleep). These are long-standing issues that undermine trust in CI/CD reliability.
Difficulty incorporating existing infrastructure into Terraform
7Terraform users struggle to bring existing infrastructure stacks under management because Terraform cannot automatically incorporate them into its state without manual intervention.
Error handling patterns are verbose and outdated
7Go's repetitive if err != nil pattern is seen as verbose boilerplate compared to modern error handling in Rust and TypeScript. Developers report fatigue and decreased productivity in large codebases, and 28% of survey respondents want language features for better error handling.
Competition from faster emerging languages (Mojo, Julia, Zig, Rust)
7Mojo 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.
Job market oversaturation and salary stagnation for Python developers
7Python'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.
Docker Compose security audit and third-party file inspection
7Third-party Docker Compose files often contain security issues like unnecessary port exposures that compromise systems. Developers must manually inspect every file, but no tooling provides automated security validation.
Legacy application compatibility during migration
7Migrating legacy applications to AWS can fail due to outdated dependencies and incompatible configurations. Requires thorough assessment and code refactoring.
Direct Redis connections without proxy cause reconnect floods and failovers
7When many clients connect directly to Redis instances without a proxy, network disruptions trigger reconnect floods that overwhelm the single-threaded Redis process, forcing cascading failovers and loss of availability.
Query complexity and performance degradation
7GraphQL queries can become increasingly complex as projects grow, with deeply nested queries and over-fetching of fields leading to poor performance, extensive database joins, and slow execution times. Query complexity assessment is difficult and clients can crater performance without guardrails.
Validation and testing capabilities are immature
7Terraform lacks a robust, built-in testing framework for HCL. Unit testing is difficult and integration testing (spinning up real infrastructure) is slow and expensive. Teams resort to embedding validation scripts or hacks, leading to accidental infrastructure drifts reaching production.
Cloud API rate limits and eventual consistency issues during large applies
7Large Terraform applies trigger API throttling (429 errors) when hitting per-account or per-region cloud provider limits. Additionally, eventually-consistent cloud services may not reflect changes immediately, causing subsequent API calls to fail or return stale data.
Supply-chain attacks and security audit burden on PyPI dependencies
7Malicious packages exploiting pip vulnerabilities peaked in 2024. Companies mandate expensive audits and SBOM generation, with developers spending more time on compliance than coding. Python's dynamic typing complicates security reviews.