Audience member at wroclove.rb 2024 explains their team uses dry-types to validate input types only at the boundaries (controller actions, worker arguments, CSV rows from external systems) and covers the rest with unit tests — what's the benefit of adding Sorbet on top? Erwin Kroon: Sorbet gives you guarantees at the type level internal to your code (certain methods cannot be called on wrong types), which is complementary to boundary validation. It pulls a class of errors forward the way statically typed languages do — if you validated that you have a user, Sorbet ensures you can't call an Enterprise-only billing method on it.