If you know programmers, you know that they get into hack mode.
Lately I’ve been trying to figure out why I can lose whole afternoons doing CSS, Javascript, or Ruby, but can’t seem to work up that level of concentration in Java.
After some observations, I think the difference comes down to the tools. When I’m working in those ligher weight languages, I’m normally using Sublime Text. It’s not a super powerful tool, but it has syntax highlighting, some very basic completion, and it’s super fast. Key-presses are instantaneous, files open before you can blink, all the dialogs are there almost before one hits the keystrokes before it’s open.
With Java, you can’t use something like Sublime. The language is designed to help programmers be correct at compilation, which means that it’s possible (and almost required) for your tools to tell you a lot. When programming Java, I use Intellij. In almost every way, Intellij is wonderful. The refactorings are major time savers and the introspections help keep the code clean and point out stupid bugs before I run the code.
All that knowledge comes at a cost. Every action, from keypresses, to dialogs, autocomplete, and opening files has a cost. Almost every action the program requires analysis and this introduces lag.
Lag in any interactive processes triggers the “this is not real” brainwave. Once that connection is broken, focus is lost, other thoughts creep in, and hack mode is lost.
I think this is why many programmers find themselves more useful in dynamic languages. Once can make the Java toolset as streamlined and process efficient as a Ruby one, but lag in the Java tools ruin the experience.