All prompts

Billion Dollar Mistakes

Tony Hoare called the invention of the null pointer his "billion-dollar mistake". In your opinion, what are the top five other biggest mistakes in software languages or frameworks?

12.8s $0.0062 445 tokens

Five More Billion-Dollar Mistakes

Here are my picks for major design decisions that created enormous long-term costs:

1. JavaScript's type coercion and ==

The loose equality operator enables absurdities like [] == ![] being true. This forced an entire generation of developers to learn "always use ===" and spawned countless bugs. The implicit type coercion rules are Byzantine enough that there are famous tables showing the inconsistencies.

2. C's buffer overflows (no bounds checking)

Decades of security vulnerabilities stem from C (and C++) allowing unchecked array access and pointer arithmetic. The majority of serious security exploits have been buffer overflows. We're still paying for this decision made for 1970s performance reasons.

3. PHP's inconsistent function naming and parameter ordering

strpos() vs str_rot13(), needle-haystack vs haystack-needle ordering—PHP's standard library is famously chaotic. This wasn't malicious, just organic growth without governance, but it made the language harder to learn and use correctly.

4. Java's type erasure for generics

To maintain backward compatibility, Java implemented generics without runtime type information. This created weird limitations (can't create new T[]), necessitated ugly workarounds, and made certain patterns impossible that work fine in C# or other languages.

5. CORS (Cross-Origin Resource Sharing)

More of a platform decision than language, but the same-origin policy retrofit created enormous complexity. The CORS preflight request system is confusing, the error messages are opaque for security reasons, and it's probably the #1 source of frustration for web developers.

What would make your list?

Generated 22nd Oct 2025