But look like developers (at large) fight with Java-like bureaucracy instead of replace it.
For example, In https://news.ycombinator.com/item?id=8048014 is discussed how great could be the use of Nimrod, but the lack of ecosystem kill this for a lot of people. The energy on build it is hard. However, the energy of battle against the complexity of a ecosystem like Java is bigger... so weird, not?
I think the general rule is that complexity will inflate to about the point where a person with moderately high IQ can't understand it any more. So if you start with a beautiful simple language (say, Python or Java) people will immediately use their free mental "bandwidth" to start adding layers on top of that complexity, and they won't stop until they basically can't understand it themselves any more. Then we will go through another cycle of simplification where someone invents a new language or approach and everyone flocks to it because it is simple and they can understand it and start assembling complexity on top of that ... (Gradle, which Tim refers to, btw, is a perfect example of that ...).
Unfortunately, Gradle chose Groovy for its programming interface, and Groovy was designed to be complex so its backers could sell conferences, courses, and consultants. Thankfully, it looks like Gradle's going polyglot soon, their Gradle 2 roadmap [1] talks about a configuration-on-demand build model which could expose an API usable by any scripting language, like with vertX.
[1] http://forums.gradle.org/gradle/topics/revolutionary_new_gra...
Can be argued that the problem is that everyone keep grinding until is too late to simplify it, ie, the activity of simplify stuff must be done more often.
Also, make things worse than complicated stuff is now a huge legacy and then even if you have a better/simple tool is necessary to mess with them.
My inclination is towards the idea of learning what you need, and learn enough about it to make/code something valuable.
Gotta know your linux, your scripting, vagrant, docker, salt, git, testing, continuous integration, editor(evil + emacs in my case), algorithms, datastructures, best practices, libraries you are currently using, sql, how servers work, how the web works, memory management, and on and on and on.
On top of that, synthesize all of the above into something usable and maintainable, then maintain it. I'm starting to suspect the day I have a good grasp of the basics is the day I become a master.