Pains

2403 pains collected

Category:
Tech:
Severity:

50% of developers neglect testing in Go projects

5

Half of Go developers fail to write adequate unit tests, despite Go's testing package being available. This widespread neglect of testing reduces code reliability and maintainability.

testingGo

Linux distribution short-term support cycles

5

Many Linux distributions do not provide long-term support (LTS), leaving users with short support windows (e.g., one year after release). This instability between releases discourages adoption for production use.

configUbuntuDebianAlpine

Notification concurrency errors persist despite main-thread guarantees

5

Developers receive concurrency-related errors when accessing main actor APIs through notifications, even when those notifications are guaranteed to post on the main thread. This creates confusing false positives that require workarounds.

compatibilitySwiftSwift concurrency

Package manager allows only sequential installations with lock file

5

APT uses a global lock file that prevents parallel package installations from multiple terminals, creating a serious usability limitation when attempting concurrent package management operations.

configAPT

Swift's strict type system creates learning curve friction

5

Developers transitioning from Objective-C find Swift's compile-time type enforcement restrictive and frustrating initially, as it prevents patterns they're accustomed to (like dynamic typing and loose type checking). The strict requirements feel like they 'hold you back' during the onboarding phase.

dxSwiftObjective-C

Improper optional handling and force unwrapping patterns

5

Developers frequently mishandle Swift's optional type system, either overusing force unwrapping (which crashes on nil) or creating complex optional chains. The Codable protocol adds messy try/catch syntax that's error-prone and difficult to debug when misused.

dxSwift

Fragmentation in PHP ecosystem with numerous competing libraries and frameworks

5

The PHP ecosystem is vast and fragmented with many competing libraries, frameworks, and tools, making it difficult for developers to choose the right tools and maintain consistent patterns.

ecosystemPHP

Code style preferences not aligned with model training

5

Claude Code's generated code often diverges from developer style preferences, preferring complex language constructs (like unnecessary subprocess spawning) over simple function calls. Developers must maintain external style guides and repeatedly re-prompt the model to enforce preferences.

dxClaude CodePython

Linux distribution fragmentation and inconsistent user experiences

5

The proliferation of Linux distributions with different goals, release cycles, and designs creates fragmentation. This leads to inconsistent user experiences, varying documentation quality, and confusion for users navigating different systems and compatibility solutions.

compatibilityLinux

Swift Interoperability with Objective-C and Type System Strictness

5

Swift's interactions with Objective-C and strict compiler rules make it difficult to work with legacy code. Type casting issues, particularly converting between String and NSString/AnyObject types, and constant unwrapping requirements complicate development.

compatibilitySwiftObjective-C

Limited Revenue-Sharing and Monetization Opportunities for ISVs

5

Stripe lacks built-in revenue-sharing programs and flexible monetization options for integrated software vendors, limiting their ability to capitalize on transactions and generate recurring revenue from payment processing.

ecosystemStripe

Code Synchronization Between Local and Remote Development Environments

5

Stripe's architecture of keeping code on developer laptops while execution happens in the cloud requires complex synchronization. This makes it harder to run code-generation tools, linters, and automated migration tools that need to act on code, creating awkward and occasionally unreliable workflows.

buildStripe

Type system complexity and API validation overhead

5

Swift's type system requires developers to define validators for every external API, library, and database input. This is tedious and unique among languages the developers have used, yet the type system isn't sufficiently powerful to justify the overhead. Issues often stem from external libraries outside the developer's control.

dxSwift

Platform Complexity Overwhelming for Non-Technical Users

5

While developers appreciate Stripe's flexibility, the platform's complexity overwhelms non-technical users and business owners without technical backgrounds. No-code options like Payment Links and Checkout are limited in customization and scalability.

dxStripe

Compiler errors do not catch certain runtime errors

5

Swift's compiler fails to catch certain error conditions, leading to crashes or unexpected behavior at runtime. Error handling is incomplete, leaving edge cases undetected.

dxSwift

Lack of abstract classes complicates inheritance patterns

5

Swift lacks abstract classes, requiring developers to decompose into concrete base classes and protocols. This leads to complicated generic signatures, requires significant experimentation, and can cause compiler crashes.

architectureSwift

Difficulty creating design systems in SwiftUI

5

SwiftUI lacks a natural, straightforward mechanism for creating reusable design systems. Developers must choose between adding modifiers to every component, creating artificial extensions, or scattering style constants throughout the codebase—none of which are clean solutions.

dxSwiftUISwift

No standard library for GUI development, poor third-party solutions

5

Go lacks a standard library for GUI development. Third-party solutions exist but lack proper integration and comprehensive documentation, hindering cross-platform graphical application development.

ecosystemGo

Expensive error wrapping and stack trace overhead

5

Error wrapping up the call stack and garbage collection of intermediate objects is nearly as expensive as try-catch, yet requires manual coding. Stack traces provide redundant information most of the time and lack a mechanism to toggle them.

performanceGo

Incomplete cross-platform support limits market applicability

5

While Swift supports Apple platforms, Linux, and Windows, it was originally designed for iOS and remains best for native iOS. Cross-platform development lags behind React Native, Xamarin, and Flutter.

compatibilitySwift

Symbol-based visibility causes variable shadowing and naming conflicts

5

Go's reliance on symbol case for visibility (uppercase=public, lowercase=private) creates unintended variable shadowing. Developers cannot use natural names like 'user' for a user variable because it shadows the user type, forcing awkward one-letter naming conventions.

languageGo

Python-centric AI ecosystem documentation makes Go adoption harder

5

Most documented paths for getting started with AI-powered applications are Python-centric, causing organizations to start in Python before migrating to Go. This creates friction in the adoption of Go for production AI workloads.

docsGoPythonAI agents

Error handling complexity with thrown exceptions as control flow

5

Using thrown errors as stand-ins for expected error handling makes types non-exhaustive and unclear about what can go wrong. Try-catch blocks are scattered throughout implementations and not all thrown errors are caught correctly, leading to hard-to-follow error management patterns.

dxTypeScript

Unorganized database schema structure due to single public schema

5

All tables, views, and functions default to the `public` schema in Supabase Studio, leading to poor organization and difficulty managing data as projects grow. Lack of logical separation for different data types (user data, billing, admin-only) creates maintenance challenges.

architectureSupabasePostgreSQL