Among the many flame-wars in the developer community is the one about typing: static vs. dynamic.
In Ruby, we can have the best of both worlds, via gem contracts
.
I was going to write about this powerful and flexible gem here, but on second thought will just link to this excellent page by the gem's author.