Pains

726 pains collected

Severity:

Python 2 to Python 3 compatibility issues persist

5

Despite Python 2's end-of-life, many libraries and frameworks still don't fully support Python 3, creating compatibility issues when trying to migrate legacy codebases or integrate multiple dependencies with different version requirements.

compatibilityPython

Docker incompatibility with certain Python frameworks

5

Some Python libraries and frameworks (notably PySpark) cannot be easily used with Docker, forcing developers to choose between containerization approaches or framework selection, limiting deployment flexibility.

deployPythonDockerPySpark

Unpleasant code editor environment crushing productivity

5

Working with code editors or tools that developers don't enjoy significantly crushes productivity, zapping energy levels and motivation. The editor is the most important daily tool for developers, and poor editor experience has outsized impact.

dxcode editors

Overwhelming library choices and ecosystem overload

5

The Python ecosystem has so many libraries and modules that developers struggle to determine which library best fits their project. Evaluation requires considering documentation, community support, maturity, and stability across numerous options.

ecosystemPython

pg_dump and pg_restore have confusing workflows and incomplete backup defaults

5

PostgreSQL backup and restore tools have counter-intuitive workflows: pg_dump by default does not include global objects like roles, so backups are incomplete unless users manually dump additional information. pg_dumpall doesn't support custom format, and pg_restore requires non-obvious flags like -C to create databases. File naming conventions (.backup) are inconsistent with documentation.

docsPostgreSQLpg_dumppg_restore+1

Debugging complexity in large and dynamic codebases

5

Python's dynamic nature makes debugging difficult and time-consuming, especially in large codebases. Cryptic error messages and the need to trace through dynamically-typed code makes it hard to identify root causes of bugs without strong debugging tools.

testingPython

Heavy dependency on C for computationally intensive tasks

5

Python has a significant dependency on C implementations for heavy computational tasks, creating a gap between Python's ease-of-use and the complexity of leveraging performance-critical operations.

performancePythonC

Confusing Docker syntax and layer management complexity

5

Docker, docker-compose, and Dockerfile syntax is confusing with numerous edge cases. Image sizes grow to problematic sizes unless carefully constructed, and Docker enforces restrictions on multi-line RUN commands that lack clear documentation on resolution.

dxDockerdocker-compose

Lack of Docker experts in developer community

5

There is a substantial lack of Docker experts in the Stack Overflow community and broader developer ecosystem compared to other areas such as web development, making it difficult for developers to find help and solutions.

ecosystemDocker

Low GitHub issue resolution rate masks framework debt

5

Only 29% of Next.js GitHub issues get resolved; 52% of discussed issues remain unresolved. Many developers solve problems independently without creating tickets, making it impossible to measure framework debt accumulation. This visibility gap prevents data-driven planning and cost estimation.

monitoringNext.js

Mandatory file-based routing causing accidental code bundling

5

The requirement that each page must have a page.tsx file can be confusing and may inadvertently lead to server-only code being bundled into client bundles, creating security and performance issues.

architectureNext.js

Internationalization challenges and lack of built-in i18n support

5

Next.js lacks comprehensive built-in internationalization support, making multi-language applications challenging to implement. Developers must rely on third-party solutions or complex workarounds.

ecosystemNext.js

Unexpected Cookie Behavior in Next.js Server Components

5

The cookies() API allows type-checked usage like cookies().set() anywhere, but fails at runtime in certain contexts. This unexpected behavior differs from traditional request object access and creates developer footguns.

compatibilityNext.jsReact

Framework perceived as overengineered for complexity added

5

Many developers perceive Next.js as overengineered, adding unnecessary complexity without proportional benefits. The framework's architectural decisions and accumulated features create bloat that doesn't serve most use cases.

architectureNext.js

Third-Party Font CDNs Introduce Request Chain Latency

5

Web fonts from third-party CDNs require multiple round-trip requests (DNS lookup, CSS request, font file request), adding significant latency even on fast networks and degrading FCP.

performanceNext.js

GitHub Actions steep learning curve and complexity for new users

5

GitHub Actions feels overwhelming for new users due to the range of features, options, and complexity of setting up workflows. The platform's learning curve is especially steep for those new to version control or CI/CD concepts.

onboardingGitHub Actions

GitHub Actions lacks early validation of workflow syntax and job dependencies

5

Workflow syntax errors and broken `needs` clauses are only discovered after pushing code. Linters exist but are imperfect. Developers cannot validate workflows locally before commit, forcing a push-and-wait debugging cycle.

dxGitHub Actions

Difficult workflow re-run and testing experience

5

GitHub Actions provides no simple way to re-run workflows against the tip of a branch, making it difficult to handle transient failures and test workflow changes. Developers must work around this limitation by adding additional triggers, which is unintuitive and slows development velocity.

dxGitHub Actions

React's Deviation from Web Standards and Native APIs

5

React violates traditional web development standards by requiring JSX instead of HTML, pushing CSS-in-JS and inline styles instead of cascading CSS, using custom routing instead of native window.location and history API, and introducing 'use server' directives instead of standard fetch/JSON/HTTP patterns. These deviations create debugging nightmares and bad practices.

dxReactJSXCSS-in-JS

React Testing Complexity with act() Function

5

Wrapping updates in act() for tests remains confusing and error-prone, especially with asynchronous operations. This adds friction to the testing workflow and requires additional cognitive load.

testingReactact

Complex Form and Validation Logic Requirements

5

React lacks built-in support for complex form validation logic. Native HTML validation attributes cannot cover substantial use cases, forcing developers to reinvent form validation solutions repeatedly. Framework alternatives like Svelte with SuperForms provide more integrated solutions.

dxReact

Community Fragmentation and Disagreement on React Direction

5

The React community exhibits growing frustration and disagreement about where React is headed, how it's developed, and recommended approaches for using React. Tensions exist between React team recommendations (full-stack, server components) and community concerns about complexity, accessibility, and backwards compatibility.

ecosystemReact

Poor IDE Support and Conditional Rendering Ergonomics

5

React's requirement to factor conditionals into separate functional components or use ugly ternary operators creates poor ergonomics. The lack of first-class IDE support exacerbates this issue, making conditional logic difficult to write and maintain.

dxReact

TypeScript Configuration and Integration Challenges

5

Developers encounter difficulties with TypeScript configuration and integration in React projects, contributing to poor overall development experience and inconsistent typing patterns across codebases.

configReactTypeScript