| The OP is down, but from reading the 1 comment, I'm sure this is a C# (possibly Java) developer. 1-
Take a programmer who's tied to an IoC container and DI as a way of life, along with anti-singleton, and interface everything. 2-
Introduce him or her to a dynamic language. Specifically focusing on testability without DI, interfaces and fear of singletons and statics. 3-
Watch as he or she either: a - accepts the fundamental truth that all that crap in a static language doesn't add value outside of freeing you from the language b - refuses to believe that what you are doing can even be classified as programming This is equally entertaining to do to either a very "experienced" (doing the same thing for the last 10 years) programmer, or someone who's just discovered mocking and mocks everything. You can tell a lot about a Java or C# programmer by how readily he or she accepts this shift (which isn't to say they magically switch over to a dynamic language, but they should recognize that all that stuff a static language demands of us is really a limitation of said languages). |
I tend to think about it the other way around, as "These are things I can do in a static type system but not in a dynamic one," but never let it be said that arguing about type systems on the internet was a good use of my time.