Pains
2403 pains collected
Limited support for stored procedures and triggers
6SQLite lacks support for stored procedures and has only basic trigger functionality, making it difficult to implement complex business logic and data manipulation operations on the database server side. This limits extensibility for enterprise use cases.
Fragmented architecture increases engineering overhead
6Using MongoDB alongside other systems creates architectural fragmentation, increasing engineering overhead and making it difficult to maintain data consistency across regions.
Insufficient first-class support for mobile app development
6Rust doesn't offer out-of-the-box, first-class support for iOS and Android app development, limiting adoption for mobile-focused teams and forcing reliance on workarounds or alternative languages.
EGL graphics API is fragmented and poorly documented
6EGL requires separate extensions for basic GPU functionality (existence, enumeration, info retrieval) with inconsistent implementation across platforms, in contrast to Windows' unified DXGI API with clear documentation and guaranteed availability.
Loss of 32-bit support libraries in modern Linux distributions
6Linux distributions are dropping default 32-bit support libraries, preventing users from running 32-bit software on 64-bit systems and reducing available software compatibility.
Desktop environment major version incompatibility (GNOME 2 to 3)
6GNOME 2 was completely incompatible with GNOME 3, breaking all installed addons and presenting a completely different UI, creating a disruptive upgrade experience.
Cache Expiration Complexity and Long Propagation Times
6Expiring cached data across distributed networks is complicated and takes a long time. Cache data persists across deployments, making invalidation difficult without proper tools. This is identified as one of the three hardest problems in computer science.
Data migration complexity and high costs
6Moving large volumes of data to AWS is time-consuming and expensive. Even with AWS Database Migration Service, phased strategies, and optimization, the process remains a significant operational and financial burden.
Slow Docker build times in CI/CD pipelines
6Docker builds are slow on CI/CD pipelines, delaying deployment. Requires manual optimization (reordering Dockerfile, enabling BuildKit) that isn't default behavior.
Large dataset migrations from relational databases are painful
6Migrating large datasets from relational databases (e.g., MySQL) to MongoDB is difficult and time-consuming, requiring significant engineering effort to restructure data and handle schema differences.
MongoDB indexing degrades write performance
6Maintaining a large number of indexes in MongoDB degrades write performance because each write operation must update multiple indexes. The system forces developers to choose between query performance and write performance.
Fragmented codebase from mixing server functions with tRPC
6Limitations of Next.js server functions force developers to use alternatives like tRPC for some backend tasks, resulting in inconsistent architectural patterns and parallel caching systems. This fragmentation increases complexity.
Poor Logging Strategy Hides Errors and Complicates Incident Response
6Teams either flood systems with useless log data or provide no actionable context during incidents, making poor logging itself a root cause of outages rather than a tool for resolution. Good logging about decisions and traceability is often neglected.
MongoDB 16 MB document size limit with unbounded arrays
6MongoDB documents have a strict 16 MB size limit. Developers frequently hit this limit by appending unbounded arrays (logs, activities, comments) inside single documents, causing update failures and data loss.
High infrastructure and ETL costs for MongoDB analytics
6Companies spend around $200,000 annually on MongoDB analytics infrastructure, including ETL processes, duplicate data storage, broken pipeline maintenance, and developer time for constant schema adjustments.
Bulk operations without transactions cause major performance degradation
6Developers often forget to wrap bulk INSERT, UPDATE, or DELETE operations in transactions. Without transactions, each operation runs separately and incurs significant performance overhead, whereas transaction-wrapped operations execute much more efficiently.
Fragmented developer workflow for email template management
6Managing email templates requires running separate dev commands for local repositories and email services, creating operational friction. The workflow lacks integrated version control, code review processes, and team collaboration capabilities.
GPU Acceleration Not Seamless in Java for AI Workloads
6GPU acceleration support in Java requires extra setup and tuning compared to Python, and forcing GPU allocation per application instance (even when idle) creates scaling and maintenance challenges with higher infrastructure costs and lower resource efficiency.
Outdated package versions and insufficient repository updates
6Certain Linux distributions maintain outdated package versions in their repositories and don't update frequently enough. Alternative packaging formats attempted as solutions (like Flatpak forks) lack functionality and provide minimal improvement.
Limited data migration capabilities in Prisma Migrate
6Prisma Migrate generates structural migrations but requires manual raw SQL for data transformations (e.g., splitting a fullName field into firstName and lastName), breaking the abstraction and losing type safety.
Inconsistent and complex pagination patterns
6GraphQL 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.
Fraud Prevention Tool (Radar) Has High False Positive Rate
6Stripe Radar's fraud prevention tool produces too many false positives, blocking legitimate customers especially for digital goods and international buyers. The tool lacks transparency in how it scores transactions, making it difficult to adjust settings or understand why charges were blocked.
Terminal-first workflow required for basic tasks
6Linux forces users to open a terminal for routine operations like installing software, fixing dependencies, and setting up drivers. This creates poor UX even for developers who prefer GUI-based workflows.
Async/await complexity and blocking event loop anti-patterns
6Developers 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.