Is Weak Typing Strong Enough? — cover art: a small storybook mouse clerk in a green eye-shade stands at a wooden counter weighing two things on a polished brass balance-scale — one pan piled high with stamped and ribboned forms that lean precariously, the other pan with a single small open leather notebook and a stubby wooden pencil. The notebook side tips lower. 🤓 🔮

2005 · Drunken Blog Rants · Rant

“I hate bureaucracy. And static type systems are basically just bureaucracy. I want them to get out of my way and let me get stuff done without needing to fill out a bunch of forms.”
— From Is Weak Typing Strong Enough?, May 2005
Read the essay

© 2005 Steve Yegge. Originally published at Drunken Blog Rants.

Author’s note

Not a bad read. It starts off with a bunch of kind of obvious distinctions, but then it becomes clear why. My Java/Perl showdown from Customer Service Apps at Amazon made it clear, over a period of several years, that all the FUD around dynamic languages was over nothing.

Back then, it was pretty unusual for a "real" company to be written entirely in a dynamic language. Today we have lots of examples, like Stripe using mostly Ruby, and Booking.com using mostly Perl.

Node and TypeScript had a huge impact on the ecosystem and adoption of dynamic languages. Now they're everywhere, but back when I wrote this, they were definitely considered to be for Losers Only. That's why I'd do these rants.

AI Notes

The piece rests on evidence most language essays don't have: a multi-year, mostly apples-to-apples Perl-vs-Java comparison running in the same production environment at Amazon's Customer Service Apps group, on the same tasks, with the same engineers rotating between them. Steve lays out the five honest advantages of static typing and the six honest disadvantages, then reports what he saw — the Perl code stayed smaller and simpler, the team shipped use cases faster, the data-integrity problems were manageable, and the static-typing camp kept cutting holes in their own type systems (the CORBA-interface-with-an-XML-string-parameter escape valve) to survive change. Static type systems, he argues, are bureaucracy — sometimes the right bureaucracy (a bank; a hard real-time system) but bureaucracy nonetheless, and most of what Amazon was building couldn't afford the overhead. The careful version of the conclusion is the one to remember: enforced static typing is detrimental, the complete absence of static-typing affordances is also problematic, and Lisp's add-types-where-they-pay-for-themselves model is close to ideal.

This is the empirical leg of Steve's 2004–2006 language arc, and a clear statement of the type-system debate from a working production engineer. The December 2005 postscript apologising for "deliberately misusing" strong/weak terminology after some Python folks didn't appreciate the poetic licence is itself an early example of the audience-feedback dynamic that would shape much of Steve's Blogspot-era writing.

Related listings

  • 2004

    When Polymorphism Fails

    The design-essay companion. Polymorphism Fails is about where class-based OO breaks; Weak Typing is about where static type-systems break. Same underlying complaint, two scales.

  • 2005

    Choosing Languages

    Same arc — the framework piece. Weak Typing is the empirical evidence that put Steve in the four-bucket framework's dynamic-by-default position.

  • 2004

    Tour de Babel

    Same year — the broad survey this piece updates. Tour de Babel ranks languages by feel; Weak Typing tests that ranking against a multi-year side-by-side at Amazon.