Pains

204 pains collected

Severity:

Docker socket access and privilege escalation risks

7

Docker runs as root by default and requires Unix domain socket access for communication. This creates privilege escalation risks and security considerations that developers must understand but are not well-documented.

securityDocker

GitHub Actions security model is obscure with many pitfalls and exceptions

7

The security architecture contains too many edge cases and inconsistencies (e.g., not recommending self-hosted runners in public repos). This expanded attack surface makes it easy to introduce vulnerabilities inadvertently while setting up workflows.

securityGitHub Actions

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

Supply-chain attacks and security audit burden on PyPI dependencies

7

Malicious 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.

securityPythonPyPIpip

Uncontrolled Container Resource Consumption Causing Host Crashes

7

Docker 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.

securityDocker

Insufficient liveness and readiness probe configuration

7

Deploying containers without explicit health checks causes Kubernetes to assume containers are functioning even when unresponsive, initializing, or stuck. The platform considers any non-exited process as 'running' without additional signals.

configKubernetes

Restrictive Type Checking Blocks Valid Language Patterns

7

TypeScript's type system prevents developers from using certain valid JavaScript patterns. For example, nested function definitions within objects don't work properly, forcing developers to use less natural workarounds like the builder pattern.

compatibilityTypeScript

Slow development mode with route compilation delays

7

Next.js dev mode is slow and painful; developers must wait for route compilation when checking multiple routes. The development server consumes several gigabytes of RAM, creating frustrating workflow interruptions.

dxNext.js

Storage I/O performance bottlenecks in AI/ML workloads

7

Storage I/O performance is the primary performance concern (24%), followed by model/data loading times (23%). For AI/ML workloads, storage costs have become the dominant concern (50% cite as primary), reflecting enormous data requirements of training datasets and model checkpoints.

performanceKubernetesAI/ML

Unoptimized image loading causing significant performance degradation

7

Developers ship applications with hero images that load immediately on page open, including images below the fold that users may never see. This results in 8-second load times on mobile connections, as developers often only test on fast office Wi-Fi rather than realistic network conditions.

performanceNext.js

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

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

TypeScript compile-time safety provides no runtime protection

7

TypeScript's type checking guarantees internal correctness but cannot protect against untrusted external API inputs, backend response drift, corrupted local storage, malformed environment variables, or user-generated content. At scale, this gap between compile-time and runtime safety becomes critical.

securityTypeScript

ConfigMap and Secret management scattered across environments

7

Configuration management starts simple but becomes unmaintainable with dozens of scattered ConfigMaps, duplicated values, no source of truth, and no automated rotation. Manual updates across multiple environments cause inconsistencies, forgotten updates, and lack of audit trails.

configKubernetes

Enterprise Migration and Legacy System Retraining

7

Large organizations adopting Docker at scale face organizational challenges including the need to retrain staff, re-architect legacy systems, and manage increased complexity of microservices architectures. This transition is fraught with difficulties despite clear deployment and scalability benefits.

migrationDocker

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

Application security and third-party integration challenges

7

33% of respondents cite securing applications and integrating third-party tracing systems as pain points. Security has emerged as the #1 concern for DoK workloads, driven by complexity of securing distributed data workloads and regulatory compliance.

securityKubernetes

Corporate abandonment and open-source library maintenance burden

7

Key corporate backers (Google TensorFlow, Microsoft PyTorch) shifted to competing languages/frameworks. Maintainer burnout led to stalled updates (Django), abandoned libraries, and forced teams to maintain forks or rewrite codebases.

ecosystemPythonTensorFlowPyTorch+2

Operational toil and fragmented incident response workflows

7

Manual deployments, inconsistent workflows, and fragmented observability across tools increase on-call load and MTTR. Engineers jump between tools during incidents instead of fixing issues, driving burnout and slower delivery due to constant firefighting.

monitoringKubernetes

Complexity and Scalability Challenges in Docker Development

7

As Docker projects scale in size and complexity, developers face significant technical and operational challenges encompassing container orchestration, networking, security vulnerabilities, and integration with existing systems. The inherent complexities become more pronounced when managing large-scale deployments.

architectureDocker

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

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

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

Debugging asynchronous and concurrent code complexity

7

Debugging asynchronous and concurrent Python code presents significant challenges. Asynchronous programming features like asyncio and multithreading introduce complexities such as race conditions and deadlocks, making issue identification and resolution harder.

testingPythonasynciomultithreading