Learning a new language? Ditch the IDE

I've been a fan of IDEs ever since a coworker unwittingly demonstrated during a pair programming session that it's possible to crank out code at the speed of thought.

Lately I have been learning node.js (and thus JavaScript), and my first reflex was to download the node plugin for IntelliJ, start setting up projects and hacking away. Then I realized I was spending more time fiddling with the environment and pondering why my CSS wasn't getting syntax highlighted and how I should lay out my source files than I was actually learning the technology.

I decided to forget the whole thing and go command-line while doing some guided exercises thanks to learnyounode. I learned through simple use of vi that leaving off trailing parentheses on a no-parameter function call can have subtle yet disastrous consequences (unlike in Scala).

Not having instant compilation/interpretation of my code forced me to think carefully about how the language is structured and actually learning the library APIs rather than just relying on a compiler/interpreter to tell me what I missed.

It's refreshing to be able to open up a new source file and start coding from the top without having to think "how do I begin?" I am able to write a simple node HTTP server largely from memory of the APIs, and I can't honestly say the same of any Scala HTTP library.

The other big take-away is that not using an IDE really forces you to become familiar with the documentation. The way that node.js docs are structured is very different from say, javadoc, and learning how to quickly navigate and get to what you need is a skill unto itself.