title: What are some advantages of duck-typing vs. static typing?
body: <p>I'm researching and experimenting more with Groovy and I'm trying to wrap my mind around the pros and cons of implementing things in Groovy that I can't/don't do in Java.  Dynamic programming is still just a concept to me since I've been deeply steeped static and strongly typed languages.  </p>
  
  <p>Groovy gives me the ability to <a href="http://en.wikipedia.org/wiki/Duck_typing" rel="noreferrer">duck-type</a>, but I can't really see the value.  How is duck-typing more productive than static typing?  What kind of things can I do in my code practice to help me grasp the benefits of it?</p>
  
  <p>I ask this question with Groovy in mind but I understand it isn't necessarily a Groovy question so I welcome answers from every code camp.</p>