Pains
2403 pains collected
Semantic versioning requirement mismatches regulatory compliance workflows
4The requirement to use semantic versioning doesn't align well with software under regulatory compliance, where version numbers often reflect multiple regulatory and product considerations rather than pure API compatibility.
Missing C99 Features: Variable-Length Arrays
4C++ lacks variable-length arrays (VLAs) from C99, forcing developers to use heap allocation or fixed-size arrays as workarounds, adding complexity and runtime overhead for stack-based dynamic sizing.
Multilingual Comprehension Degradation
4ChatGPT struggles with language switching and has limited proficiency in non-English languages, especially less commonly spoken ones. Response quality depends heavily on training data availability, with less cohesive and comprehensive outputs for languages other than English and Chinese.
Enforcing code style and alignment
4Aligning code to project coding standards and automatically enforcing style conventions is a pain point in C++ development workflows.
Insufficient IDE support and modern tooling
4Go lacks powerful IDE support and modern tooling compared to other ecosystems, with documentation and language features lagging behind contemporary standards.
Missing support for Deno runtime
4Prisma does not officially support the Deno JavaScript runtime, limiting options for developers building Deno applications that need database access.
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.
Empty Collection Allocation Overhead
4Habitually allocating new empty collections (arrays, lists) instead of using cached singletons causes unnecessary memory pressure and increases Garbage Collection overhead, especially in high-frequency loops.
Limited and Non-Standardized RTTI Type Information
4C++ RTTI provides only the type name without full type information, and type naming is not standardized across compilers, limiting reflection capabilities and making type-based dispatch unreliable across platforms.
Unsafe code required for aliased mutable borrows within structs
4Getting mutable borrows to different fields of the same struct simultaneously requires unsafe code despite the compiler being able to verify memory safety, creating friction for common programming patterns.
Lack of native usage monitoring and cost dashboards requires external tools
4S3 does not provide built-in detailed usage monitoring dashboards. Teams must rely on integrations with external tools to track costs and usage, making it difficult to monitor spending and prevent runaway bills without manual setup and additional overhead.
Static typing reduces flexibility for dynamic programming tasks
4Rust's strict static typing makes it less flexible than dynamically typed languages like Python or JavaScript, creating challenges for certain types of programming tasks and edge cases that are easier in dynamic languages.
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.
Rails perception as outdated framework hurts recruitment and morale
3Rails is no longer perceived as trendy or cutting-edge in 2025. Developers who want to work with technologies featured on Hacker News or Twitter may find Rails unfashionable, potentially creating recruitment challenges and team morale issues.
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.
Slow template search UI causing developer friction
3The template search feature in the Railway UI has poor performance, taking 3-4 seconds to search on reasonably powerful machines, causing unnecessary delays during project initialization.
STL Iterator Verbosity and Missing Convenience Methods
3STL iterators and algorithm calls are verbose and cumbersome. Common operations like finding elements in `std::set` lack template-based convenience methods, forcing developers to use verbose iterator-based approaches.
Knex query API uses custom syntax unfamiliar to SQL developers
3Knex's query API uses MongoDB-like syntax (e.g., `{ $in: [...] }`) that is neither standard SQL nor intuitive for developers familiar with SQL, creating a learning curve.
TCP Unused or Broken Protocol Features
3TCP has a long history of unused or broken features (e.g., TCP urgent flag) that add complexity without functional benefit, creating legacy cruft that cannot be removed due to backward compatibility constraints.
No user-defined operator overloading reduces code readability
3Java does not support user-defined operator overloading, making code less readable for classes representing mathematical objects like complex numbers and matrices.
Grammar and Spelling Errors in Long-Form Content
3While ChatGPT produces technically correct responses, it frequently violates language rules, especially in long sentences with complex structures. Typos and grammatical errors negatively impact the quality of generated text.
Drafts-to-move feature adds confusing workflow step
3Figma's 'Drafts to move' feature creates unnecessary friction in file management workflows. Users find it confusing and report it adds complexity without clear value.
Difficult to search through resolved/archived issues
3User interface for searching and filtering through resolved issues is not intuitive or efficient. Time-consuming to find historical issues or archived data.
Uses inappropriate or unconventional Git commands
3Claude Code uses weird or non-standard Git commands that may not work as intended or follow project conventions.