Patrick Logan makes a good point: dynamic languages are productive, but they are even more so if you have good tools. Adding class extensions stop being "monkeypatching" if you have tools that support the idea:
People developing large systems in dynamic languages, and people providing dynamic languages being used to build large systems have to also realize this:
You are no longer working with a "scripting" language. You need to demand and provide really good tools. Examples can be found on the internets, read about the Smalltalk and Lisp environments from way back when. Someday you can become as smug as we are, or maybe as brilliant as the people who made them for us.