Pains

2403 pains collected

Category:
Tech:
Severity:

Inconsistent and incomplete API documentation

6

Stripe's documentation lacks clarity and comprehensiveness, leading to increased development time. 47% of developers report unclear API guidelines as a leading cause of project delays.

docsStripe

Linux installation complexity and poor onboarding UX

6

Linux distributions have historically required users to possess detailed technical knowledge before installation, making the process unintuitive and inaccessible for average users and beginners. While improving, installation remains a barrier compared to mainstream operating systems.

onboardingLinux

Inconsistent and complex pagination patterns

6

GraphQL pagination lacks standardized patterns, especially for multi-dimensional data structures with different requirements at different levels. Implementing pagination for large lists is cumbersome and each service may implement pagination differently.

dxGraphQL

Performance issues with desktop version

6

Claude Code's desktop version is slow and exhibits poor performance that limits productivity compared to the CLI counterpart, creating an inconsistent experience across platforms.

performanceClaude CodeVS Code

Developer Environment Dependency Management Challenges

6

Stripe's practice of continually adding and reworking dependencies (e.g., Redis for rate limiting) requires developers to install and configure new tools locally. Updating configuration across developer laptops is challenging and often left to informal word-of-mouth communication.

buildStripeRedis

Async/await complexity and blocking event loop anti-patterns

6

Developers frequently block event loops with sync I/O calls (e.g., using `requests` instead of `aiohttp`), throttling async performance. Missing `await` keywords cause runtime exceptions rather than compile-time hints.

dxPythonasyncioaiohttp+2

CloudFormation and AWS IaC require CLI execution instead of URL-based deployment

6

AWS IaC solutions lack the ability to deploy running resources via simple URLs (which would allow non-technical stakeholders to provision infrastructure). Instead, developers must use CLI tools, and CloudFormation—the only AWS IaC supporting URL deployment—is painful to write and slow to iterate on.

deployCloudFormationAWSIaC

Deep widget trees causing excessive rebuilds and performance degradation

6

Deeply nested or unbalanced widget trees in larger apps cause performance concerns, especially when paired with frequent updates. Each build() call walks the tree, performs layout, and paints—touching more elements in deep structures, leading to noticeable slowdowns during animations, gestures, and scrolls.

performanceFlutter

GraalVM Licensing and Uncertainty Around Native Image Future

6

GraalVM JDK 24 is the last release as part of Java SE; Native Image is no longer in the Java SE offering, and the experimental Graal JIT has been withdrawn. This creates uncertainty for teams relying on GraalVM as their optimization path and forces re-evaluation of architecture decisions.

migrationGraalVMNative ImageJava

Over-defensive code patterns mask bugs

6

Claude Code prioritizes robustness over correctness, generating over-defensive code with excessive error handling and cascading fallbacks that mask subtle silent bugs. This makes debugging difficult when developers prefer fail-fast patterns with informative errors.

dxClaude Code

Overlapping dependencies with redundant transformation tooling

6

Vite relies on multiple third-party dependencies with overlapping duties (esbuild, Rollup, SWC) that are written in different languages, creating efficiency problems when passing data between tools and introducing inconsistent behavior.

dependencyViteesbuildRollup+1

Fragmented async ecosystem with multiple competing runtimes

6

Developers struggle with async ecosystem fragmentation, needing to juggle multiple runtimes (tokio, async-std, etc.) with runtime-specific quirks and incompatibilities. There is no unified async runtime, creating compatibility headaches across projects.

ecosystemRusttokioasync-std

CommonJS dependencies incompatible with Vite

6

CommonJS packages don't work seamlessly with Vite's ESM-first architecture, requiring manual configuration via `optimizeDeps.include` to function properly.

compatibilityViteCommonJSESM

Manual SSR setup required for SEO optimization

6

Vite defaults to client-side rendering, requiring manual SSR configuration to achieve proper SEO. Without it, search engines see empty documents, resulting in lost revenue and poor discoverability.

architectureVite

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

Raw SQL requires manual JOIN maintenance across schema changes

6

Using raw SQL for performance avoids ORM overhead but requires manually writing and maintaining JOIN statements. Every schema change necessitates updating all related queries, making maintenance burden significant.

maintenanceSQL

Inability to clone or branch parts of a repository

6

Git's 'one repo is one project' policy prevents partial clones or branches. Teams must maintain multiple Git repositories for multiple projects, forcing manual tracking and introducing submodule complexity. This makes migrations from SVN extremely difficult.

architectureGitsubmodules

Confusing and inconsistent state management in working copies

6

The combination of working copy files and local Git repository state creates a 'magical state' where certain operations become impossible (e.g., changing branches after a broken merge). Developers must search for solutions rather than having straightforward recovery paths like SVN's simple delete and update.

dxGit

Mutation Complexity with Multiple Entities

6

Handling mutations that involve multiple entities and relationships is complex and difficult. Managing data consistency across mutations poses significant challenges for developers.

architectureGraphQL

High number of unbundled network requests causing slow page loads

6

Exceptionally large codebases experience slow page loads due to the high number of unbundled network requests in ESM-based development, requiring network overhead optimization.

performanceESM

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

AWS does not provide 'fix this' automation for IAM permission errors

6

When IAM permission errors occur, developers must manually add permissions rather than having AWS automatically generate the required policy. A simple 'Fix this' button that generates required IAM records would dramatically reduce friction, but this feature doesn't exist.

dxAWS IAMAWS

Limited Cross-Platform Support

6

Although .NET Core improved cross-platform capabilities, C# was originally Windows-centric, and achieving true cross-platform compatibility (macOS, Linux) without code rewrites remains a significant challenge.

compatibilityC#.NET

BackgroundTasks Lack Reliability for Critical Work

6

FastAPI's BackgroundTasks cannot guarantee delivery or retries, and if the FastAPI process crashes before a task completes, that task will be lost. This is unsuitable for work requiring guaranteed execution.

architectureFastAPI