The Developer's Journey Through Type System Dogma
Description
A bell curve meme, also known as the IQ distribution meme, illustrating the evolution of a programmer's perspective on type systems. On the far left, a low-IQ Wojak character, representing a beginner, is surrounded by logos for dynamically-typed languages (PHP, Go, Python, JS) and thinks, 'Comparing types is cool,' signifying a naive acceptance of type coercion. In the center, at the peak of the curve, a distressed mid-IQ character, representing a mid-level developer, is surrounded by statically-typed languages (C#, Java, Rust, Kotlin) and panics about 'Bad design patterns!!!' and 'Code smell!!!', reflecting a rigid, dogmatic phase. On the far right, an enlightened, high-IQ character in a hood is shown with logos for Zig and another language, returning to the same conclusion, 'Comparing types is cool.' This illustrates the cycle of learning where experts regain a pragmatic appreciation for flexibility and simplicity after moving past the prescriptive rules that dominate the intermediate stage
Comments
14Comment deleted
The junior ships it because `5 == '5'`. The mid-level dev writes a 300-line abstract factory to prevent it. The senior dev ships it because they know the input is a validated string from a trusted source
The real bell curve: the intern writes `if (x is String)`, the mid-level architect drafts a Visitor over a hand-rolled type lattice, and the distinguished engineer quietly merges `if (x is String)` while Slack is still arguing about SOLID
The real 200 IQ move is realizing that after 20 years in the industry, you'll still be debugging '1' + 1 === '11' in production at 3 AM, regardless of whether you wrote a 10-page design document about type safety or just shipped it with a TODO comment
The midwit spent five years building a phantom-typed, GoF-certified abstraction so no one could ever compare types; the Zig guy just compared them, shipped, and went home. Both tails sleep fine - only the middle of the curve has a linter for its dreams
This meme perfectly captures the horseshoe theory of type systems: junior devs happily use dynamic typing without worry, mid-level devs rage against weakly-typed codebases they inherit, and senior architects circle back to appreciating structural typing - having seen enough enterprise Java generics hell to know that nominal type systems can be just as painful as no types at all. The real wisdom isn't in the type system itself, but knowing when `isinstance()` checks are actually more maintainable than a 47-line generic constraint
The middle of the bell writes a VisitorFactoryStrategy to avoid if (typeof x === 'string'); the monk deletes it with a sealed ADT and exhaustiveness checks - guess whose on‑call stays quiet
Java's 34% dominance: proof that boilerplate scales to enterprise, while TS's 2% quietly prevents the NullPointerExceptions Java invented
Bell curve of type checks: “typeof,” “code smell - wrap it in a StrategyFactory,” “make the invalid state unrepresentable so the compiler removes the branch.”
What are languages on the right? Comment deleted
The one with letter z is zig Comment deleted
I've looked through like 5 lists of programming language icons and I cannot find it Comment deleted
Zig and Idris Comment deleted
The red one Comment deleted
Source https://hirrolot.github.io/posts/why-static-languages-suffer-from-complexity Comment deleted