I've been a backend Java dev for the last 12+ years but am trying to get more productive by switching to a more "modern" dynamic language.
Recently however, I gave up in frustration trying Groovy + Grails + Gradle due to the amount of time I had to spend just figuring out the expected dynamic inputs to methods for libraries and components I was using. I.e. with a dynamic constructor I actually have to understand the structure of an entire component rather than just a method signature.
I gave up because I felt whatever savings I was reaping from the nice features of the language, I was loosing flipping back and forth between IDE and documentation, figuring out how a closure should be structured to serve as an input or what properties exist on some returned object. I even switched from Eclipse to IntelliJ since I heard Grails support was better.
Same thing with Gradle vs Maven. Since Maven uses a schema for it's configuration, I can quickly Ctrl + Space to the config element I need. Not so it seems with Gradle where I again had to flip back and forth to the docs. Maybe this is just an IDE support issue?
What am I doing wrong? Seems like this should be easier given how popular these languages have become.
Regarding Groovy specifically... It's used for very small use cases, like gluing Java apps together, writing tests for Java objects, basically stuff that won't become a standalone app. Because of Groovy's MOP, it's used for Grails - I don't know much about Grails but its popularity seems to be coupled to Rails' decline. Gradle will be going polyglot soon enough - their Gradle 2 roadmap [1] says they're shifting control of the build from the "Gradle build language" to a configuration-on-demand build model.
[1] http://forums.gradle.org/gradle/topics/revolutionary_new_gra...