Pains
726 pains collected
Structural subtyping creates false type relationships that can't be resolved
4TypeScript's structural subtyping can incorrectly evaluate one type as a subtype of another based on API similarity alone, creating assumed relationships that don't actually exist semantically (e.g., Set and WeakSet). This blind spot cannot be resolved at the type level and forces developers to solve non-existent problems.
Poor Community Support Channels and Documentation
4React community channels like Discord suffer from poorly formatted unclear questions and lack of expert engagement. Even clear, answerable questions receive poor responses compared to other language communities. Documentation is often incomplete or depressing for non-Node.js backend use cases.
Abundance of New Unfamiliar React APIs (Profiler, ViewTransition, cache, etc.)
4React 19 introduced numerous new APIs with low familiarity among developers: Profiler (57% unfamiliar), ViewTransition (41%), Activity (41%), cache (41%), useEffectEvent (40%), useDeferredValue (39%). This creates knowledge gaps and increases the learning curve for developers trying to stay current.
Keeping Up with Emerging Technologies (VR/AR/Voice)
4New technologies like VR, AR, and voice assistants introduce novel authentication methods and implementation challenges. Developers must extensively test these emerging technologies to ensure good user experience before integration, adding complexity to development workflows.
StrictMode Double-Rendering Confusion
4Developers continue to get tripped up by effects running twice in development mode due to StrictMode. This behavior confuses developers and stems from React's fundamental architecture requiring entire component functions to re-run on updates.
Difficulty using GitHub Actions Marketplace to find and evaluate actions
4Users struggle to find suitable actions in the GitHub Actions Marketplace and evaluate their quality. A survey revealed that 7 out of 25 participants found it difficult to navigate and select appropriate actions, leading some teams to maintain their own local actions instead.
Poor Docker documentation with unrealistic tutorials
4Docker tutorials and documentation either assume users are power users with deep knowledge or are so trivial that they don't represent real-world solutions, making them essentially useless for practical development scenarios.
JavaScript Null Pointer Exceptions and Undefined Errors
4JavaScript developers struggle with null/undefined reference errors when accessing properties on null or undefined values, resulting in unhelpful TypeError messages that are frustrating to debug.
Unclear distinction between Docker bind mounts and volumes
4Docker documentation and syntax make it difficult to distinguish between bind mounts and volumes. Declaring a volumes entry in docker-compose.yml provides no clear indication whether a volume or bind mount is being created, leading to configuration confusion.
Python unsuitable for desktop application development
4While Python can create desktop applications, it is inappropriate for this use case compared to languages designed specifically for desktop development.
Docker Vendor Lock-In and Proprietary Dockerfile Syntax
4Developers fear vendor lock-in with Docker's proprietary toolchain. While Dockerfile syntax is not governed by open standards, the OCI image and runtime specifications provide alternatives. Developers increasingly prefer solutions aligned with open standards to avoid single-vendor dependency and ensure long-term portability.
Runtime type checking overhead without compile-time guarantees
4Libraries that provide runtime type checking in Python add approximately 50% performance overhead while only catching errors at runtime. This creates a false trade-off where developers get stricter type checking but lose performance without gaining the compile-time safety of statically-typed languages.
Environmental impact from GitHub Actions CI/CD
4GitHub Actions workflows generated between 150.5 and 994.9 million tons of CO₂ equivalent in 2024, creating a significant environmental concern for companies mindful of their carbon footprint.
Object-oriented programming integration issues with numeric/data libraries
4Python's object-oriented paradigm doesn't integrate well with numeric and data manipulation libraries like NumPy and Pandas, creating an awkward development experience when combining OOP with these tools.
TypeScript's future in JavaScript depends on unfinished type-annotations proposal
4TypeScript's long-term viability depends on TC39's type-annotations proposal, which faces significant consensus issues within the committee itself. The proposal would only treat annotations as comments with no enforcement, leaving TypeScript's theoretical future as a superset uncertain.
Missing built-in statistics and machine learning functionality
4Python lacks integrated statistics and machine learning functionality in the standard library, requiring external library dependencies for these critical data science tasks.
GraphQL Not Suitable for Simple APIs
3For simple APIs that don't require complex functionality, GraphQL makes things more complicated than necessary. REST API tools are more appropriate for such cases.
Prompt caching feature underutilized by developers
3Many developers overlook prompt caching capabilities, which can reduce input costs by up to 90% for repetitive workflows, resulting in unnecessary API spend.
Testing dependencies pollute go.mod
3Testing dependencies appear in go.mod alongside production dependencies, creating unwanted coupling and making dependency management harder to reason about.
Limited industry adoption of Rust
342.1% of Rust developers are concerned that Rust does not get enough usage in the tech industry, despite the language's benefits. This remains the top worry among developers.
Syntax and indentation error sensitivity
3Python's reliance on whitespace for code blocks makes it sensitive to indentation errors, which can be elusive and lead to unexpected behavior. Combined with other syntax errors, these issues require careful attention and can be frustrating for developers.
Go CLI tools have poor documentation and help navigation
315-25% of developers frequently need to review documentation for common Go CLI subcommands like `build` and `run`. The underlying issue is navigating and parsing the help system itself rather than just remembering flags.
Multiple package managers and confusion over choosing between them
3Python has multiple package managers (pip, pipenv, and others), making it challenging for beginners to decide which one to use and understand the benefits of each.
TypeScript encourages named exports over default exports, hindering SOLID design
3TypeScript's tooling and community practices push developers toward named exports, which contradicts SOLID principles by increasing coupling and forcing knowledge of internal identifiers. This design pressure creates poor module encapsulation and makes refactoring harder, not easier.