Pains

2403 pains collected

Category:
Tech:
Severity:

Over-optimization assumptions in schema design

5

GraphQL forces developers to think about every possible query variation upfront and design schemas accordingly. Generated GraphQL APIs that auto-expose storage models violate information hiding, force business logic onto API consumers, and are hard to evolve due to tight coupling.

architectureGraphQL

Unnecessary abstractions and over-engineering

5

C# developers create overly generic or abstract code anticipating future requirements, leading to unmaintainable solutions. This introduces state ownership issues, implicit workflows, and feature creep that obstructs rather than assists code clarity and testability.

architectureC#

Duplicate authentication code required across all protected endpoints

5

Dependency injection requires repeating authentication and authorization logic on every endpoint. Supporting multiple authentication schemes requires duplicated code with complex error handling.

authFastAPI

Request validation error messages are not customizable

5

FastAPI uses Pydantic for validation, but there is no straightforward way to pass custom validation messages from the validation point to the API response, forcing developers to use whatever generic messages Pydantic provides.

configFastAPIPydantic

Upfront permission grants required for all features in v1 endpoint

5

With Azure AD v1, developers must define all permissions their app will ever need upfront, and users must accept all required permissions during initial consent. This creates friction for multi-tenant applications with optional features (e.g., calendar integration), as users must grant access to capabilities they may never use.

authAzure AD v1ADAL

Flexbox learning curve and retention

5

Developers find Flexbox challenging to learn and struggle to retain the details without daily practice. The mental model requires repeated exposure to solidify understanding.

dxCSSFlexbox

AI-powered development tools produce low-quality code

5

While most Go developers use AI tools for learning and coding tasks, satisfaction is middling. 53% report that tools create non-functional code, and 30% complain that even working code is poor quality. AI struggles with complex features.

dxGoAI agents

MSAL lacks fine-grained access control and authorization

5

MSAL focuses primarily on authentication and token issuance but does not fully address access control issues or implement role-based and feature-level access control within applications. Developers must build custom authorization logic.

authMSALMSAL.jsMSAL.NET

MSAL unsuitable for decentralized microservices architectures

5

MSAL is not well-suited for complex microservices environments with decentralized identity requirements. Its centralized authentication approach doesn't map well to distributed systems where each service manages its own identity.

architectureMSALmicroservices

Free GitHub Actions hosted runners are significantly slower than local infrastructure

5

Free GitHub-hosted runners perform 4-5x slower than comparable local hardware (e.g., i7-13700H mini-PC). This forces teams running Jenkins locally to accept longer build times (30 min to 40 min) even after parallelization, impacting developer velocity.

performanceGitHub Actions

Grid layout complexity and configuration is difficult to master

5

Even after extensive use, developers struggle with complex grid configurations. Grid is powerful but unintuitive, requiring significant learning and trial-and-error to use effectively.

dxCSSCSS Grid

IT team dependency limits competitive agility

5

SaaS companies face rising dependence on IT teams to utilize cloud computing and stay competitive, but IT bandwidth is limited and expanding the team is costly. This creates a bottleneck for process automation and efficiency improvements.

other

Conditional Access and claims challenge handling requires manual implementation

5

Developers must manually implement retry policies and claims challenge handling for Conditional Access scenarios in MSAL. Silent token acquisition can fail with claims challenges that require interactive re-acquisition, and HTTP errors (429, 500-600) need custom retry logic.

configMSALConditional Access

BaseHTTPMiddleware has poor performance compared to pure ASGI

5

Using BaseHTTPMiddleware instead of pure ASGI middleware degrades performance. Developers should implement pure ASGI middleware for better throughput and responsiveness.

performanceFastAPI

PostgreSQL configuration and management are overly complex with many non-obvious settings

5

PostgreSQL requires extensive tuning across memory management, vacuum, background writer, write-ahead log, and free-space map settings. Configuration files are long with many unnecessary options for typical users. Default logging is unhelpful for new users, and there is no built-in out-of-band monitoring to diagnose startup failures or query issues without manually launching backends.

configPostgreSQL

Steep learning curve for async programming and type hints

5

FastAPI's specific syntax and reliance on asynchronous programming, standard Python type hints, and Pydantic increases the learning curve significantly for developers unfamiliar with these concepts, potentially slowing onboarding and adoption.

docsFastAPIPydantic

Duplicate validation between request parsing and response models adds overhead

5

When using type hints or `response_model`, FastAPI performs double validation—once during request parsing and again during response model creation. This adds 20-50% overhead to response processing and should be avoided by returning raw data instead.

performanceFastAPIPydantic

Complex stack traces and debugging difficulties in error logs

5

Java stack traces with long 'caused by' chains are difficult to parse, especially when log files contain tens of thousands of lines. Root causes can be unrelated to the thrown error, making debugging time-consuming and requiring deep analysis.

debugJava

Table Bloat from Lack of Regular VACUUM

5

Failing to run VACUUM regularly can lead to bloated tables and degraded performance. Without VACUUM, PostgreSQL cannot reclaim space from deleted rows, accumulating dead tuples that consume disk space and slow down query performance over time.

maintenancePostgreSQL

Code organization becomes unwieldy as projects scale

5

FastAPI tends to centralize everything in the main.py file, causing crowding and maintenance issues. Teams need to manually create dedicated files for exception handlers and router inclusion to maintain code organization.

architectureFastAPI

Limited infrastructure control in PaaS offerings

5

Azure's platform-as-a-service model means Microsoft manages infrastructure including servers, storage, and networking. This limits developers who need control to optimize performance or meet specific security requirements.

architectureAzure

TCP Expensive Checksum Computation Bottleneck

5

TCP uses per-packet checksums for end-to-end reliability despite modern network hardware already providing per-packet CRCs, creating redundant and expensive checksum computation that becomes a bottleneck in packet processing, especially on LAN where the extra reliability is unnecessary.

performanceTCP

NGINX streaming capabilities are inadequate

5

NGINX has poor support for streaming use cases and lacks robust streaming solutions compared to alternatives.

compatibilityNGINX

Suboptimal load balancing strategy selection in microservices

5

Nginx offers multiple load-balancing strategies (round-robin, least connections) but they may not be optimal for specific use cases. Round-robin ignores current server load while least connections doesn't account for request complexity, making the best strategy choice challenging.

configNginx