Pains

726 pains collected

Severity:

Structural subtyping creates false type relationships that can't be resolved

4

TypeScript'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.

compatibilityTypeScript

Poor Community Support Channels and Documentation

4

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

docsReact

Abundance of New Unfamiliar React APIs (Profiler, ViewTransition, cache, etc.)

4

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

docsReactProfilerViewTransition+3

Keeping Up with Emerging Technologies (VR/AR/Voice)

4

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

ecosystemVRARvoice assistants

StrictMode Double-Rendering Confusion

4

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

dxReactStrictMode

Difficulty using GitHub Actions Marketplace to find and evaluate actions

4

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

ecosystemGitHub ActionsGitHub Actions Marketplace

Poor Docker documentation with unrealistic tutorials

4

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

docsDocker

JavaScript Null Pointer Exceptions and Undefined Errors

4

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

dxJavaScript

Unclear distinction between Docker bind mounts and volumes

4

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

docsDockerdocker-compose

Python unsuitable for desktop application development

4

While Python can create desktop applications, it is inappropriate for this use case compared to languages designed specifically for desktop development.

ecosystemPython

Docker Vendor Lock-In and Proprietary Dockerfile Syntax

4

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

compatibilityDocker

Runtime type checking overhead without compile-time guarantees

4

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

performancePython

Environmental impact from GitHub Actions CI/CD

4

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

otherGitHub Actions

Object-oriented programming integration issues with numeric/data libraries

4

Python'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.

ecosystemPythonNumPyPandas

TypeScript's future in JavaScript depends on unfinished type-annotations proposal

4

TypeScript'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.

architectureTypeScriptECMAScript

Missing built-in statistics and machine learning functionality

4

Python lacks integrated statistics and machine learning functionality in the standard library, requiring external library dependencies for these critical data science tasks.

ecosystemPython

GraphQL Not Suitable for Simple APIs

3

For simple APIs that don't require complex functionality, GraphQL makes things more complicated than necessary. REST API tools are more appropriate for such cases.

architectureGraphQL

Prompt caching feature underutilized by developers

3

Many developers overlook prompt caching capabilities, which can reduce input costs by up to 90% for repetitive workflows, resulting in unnecessary API spend.

docsAnthropic API

Testing dependencies pollute go.mod

3

Testing dependencies appear in go.mod alongside production dependencies, creating unwanted coupling and making dependency management harder to reason about.

configGo

Limited industry adoption of Rust

3

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

ecosystemRust

Syntax and indentation error sensitivity

3

Python'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.

dxPython

Go CLI tools have poor documentation and help navigation

3

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

docsGo

Multiple package managers and confusion over choosing between them

3

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

configPythonpippipenv

TypeScript encourages named exports over default exports, hindering SOLID design

3

TypeScript'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.

dxTypeScript