It’s amazing the impact tools have on productivity and enjoyment. I remember my first foray into Java using a combination of text editors and Ant. Setting up and configuring a simple project was a nightmare and without the internet I don’t know how I would have figured it out. This initial experience made me associate Java with an unnecessarily complicated approach that I wanted to avoid.

After Java, Python felt like a breath of fresh air. The code was simpler, more compact, and I was able to just dive in. Discovering pip and virtualenv made me enjoy it even more. But no language is perfect and with enough you uncover the imperfections. Performance became a bottleneck when I started working on serious code and I missed the benefits of static typing - especially when refactoring a large projects.

Recently, I started using Java again and it’s a completely different experience. I’m not sure whether it’s due to hardware or software improvements but Eclipse feels faster and more responsive. It makes Java nearly as fun as Python. The static, strong typing makes it easy to do large scale refactorings, Gradle and the open source ecosystem make it trivial to leverage all sorts of libraries, and the performance/coding ease is great - especially when dealing with concurrency. Good tools can make a world of difference to the accessibility and joy of writing a language. I read a while ago that Facebook has the strongest people working on internal tools and I’m not surprised; it may be one of the most effective way to make everyone happier and more productive.

Read more!