According to Robert Benchley, “There are two kinds of people in the world, those who believe there are two kinds of people in the world and those who don’t”.
Oliver Steele is the first kind of person: in this essay he divides the developer world into two camps: Language mavens and Tool mavens. Minor nit: given that a maven is an “expert”, isn’t there a third camp of developers, the non-mavens? But I digress…
Oliver’s dividing point is an interesting one. Coincidentally it’s something that I’ve been thinking about recently, especially since I became enamored with Eclipse. I believe that Eclipse has really improved my productivity. I guess that would make me a Tool maven. But according to Oliver’s definition for a Tool maven “the choice of programming language doesn’t matter that much … the real development power comes from the IDE”. That doesn’t sound like me at all. In what world does such a person exist? Are they really a software developer? Eclipse enhances my understanding of code written in Java and makes it easy do code refactoring — something that’s a lot harder with a text editor. This doesn’t make me care any less about Java. And it certainly is no substitute for a good fundamental understanding of the language.
Likewise Oliver’s definition of a Language maven doesn’t work for me. Oliver talks about how more languages will have a compiler and runtime than a compiler and a runtime and a language-aware editor, debugger, etc. That makes sense. It’s less work to just do the compiler and runtime. But does it follow from that as a result Language mavens typically have access to languages that are more powerful? Newer languages perhaps but more powerful? We can debate what makes a language powerful but the canonical choices of powerful languages such as Lisp or Smalltalk have had development environments since the early days, not just compilers and a runtime. Smalltalk never really had anything less.
My feeling is that in order to create a truly powerful language, you need tools as well. Text editors are fine for the initial bootstrap but power needs to be accessible. Tools aren’t just window dressing. Eclipse includes its own Java compiler precisely because it needs deep understanding of the language to assist the developer. And the tools for building IDEs are coming too. You don’t need to start from scratch. Lots of language-aware editors and complete development systems have been written as Eclipse plugins. (Via Ned)