Static Types Are for Perfectionists
Static typing, tests, and correctness
- Strong support for static types as a partial substitute for many unit tests: “types catch the boring 90%,” especially for data plumbing and refactors.
- Counterpoint: type checking and tests catch different classes of errors. Code can type-check yet be logically wrong; tests can pass while missing trivial type errors. Most agree both are needed for serious systems.
- Debate over claims like “types make most tests obsolete”: challenged as unsourced and overstated; skeptics ask for case studies.
- Discussion about complex boolean-returning business logic: types help little with “and vs or” kinds of bugs; tests (especially property-based) are seen as essential here.
Productivity, tooling, and refactoring
- Many report huge productivity wins from static typing plus good tooling (TypeScript, mypy/Pyright, rich LSP integration): refactors become “change the type, fix all the red squiggles.”
- Static types seen as especially powerful for large, shared, long-lived codebases and for avoiding “code archaeology” in dynamic systems.
- Some complain types can be “exhausting” or feel like “writing code to make the compiler happy,” especially when fighting strict checkers or over-modeling.
Dynamic typing and its perceived benefits
- Steelman arguments offered:
- Quicker iteration where correctness is secondary (scripts, exploratory work, non-hostile environments).
- Ability to run partially written code without satisfying the type checker; lower up-front ceremony.
- Flexibility to change data shapes without widespread annotation churn (though static fans say IDE refactors plus structural/duck typing mitigate this).
- Others note that modern static ecosystems allow optional or deferred typing, blurring the line.
Testing styles (unit, integration, TDD/BDD)
- Some commenters skip unit tests entirely, relying on types plus integration/end-to-end tests; they see TDD/BDD as “security blankets” or cost inflators.
- Others argue unit tests around pure logic are extremely valuable and cheaper to evolve than heavily typed designs; integration tests alone can be brittle or slow.
- Mixed experiences with TDD/BDD: some call the “gurus” frauds; others say most people were taught these practices poorly, but when done right they’re a “mini superpower.”
Personality, psychology, and environment
- Strong agreement that personality and learning path shape language preferences (static vs dynamic, functional vs procedural).
- Several connect static typing and heavy modeling with perfectionism, OCD-like needs for control, or autistic coping strategies; others push back against pathologizing preferences.
- Discussion of MBTI vs Big Five as lenses for language preference; some see that whole framing as pseudoscientific.
- Importance of environment: right team and culture (low oversight vs high rigor) strongly influence both productivity and tool choices.
Reactions to the article and title
- Many call the title “ragebait” and note the thread fixates on types more than the article’s broader psychological themes.
- Some criticize the author’s juxtaposition of “accept preferences without judgment” with sharp jabs at “type theory maximalists” and Haskell users; others still find the piece thoughtful and relatable.