I tend to agree that dynamic languages work best for small projects. The larger it is, the more advantages accrue to static type checking. The reality, though, is that programs most often start out as small ones, and grow!