Joshua Bloch
174
It’s like if the only tool you have is a hammer and someone gives you a
screwdriver, and you say, “Well, this isn’t a very good hammer but I guess I
can hold the blade in my hand and whack with the handle.” You have a
crappy hammer when in fact you could have used it as a fine screwdriver.
So, a combination of open-mindedness and a willingness to apply everything
you already do know. And of course, code, code, code! The more you use
the language, the faster you’ll learn it.
Seibel: Why do people get so religious about their computer languages?
Bloch: I don’t know. But when you choose a language, you’re choosing
more than a set of technical trade-offs—you’re choosing a community. It’s
like choosing a bar. Yes, you want to go to a bar that serves good drinks,
but that’s not the most important thing. It’s who hangs out there and what
they talk about. And that’s the way you choose computer languages. Over
time the community builds up around the language—not only the people,
but the software artifacts: tools, libraries, and so forth. That’s one of the
reasons that sometimes languages that are, on paper, better than other
languages don’t win—because they just haven’t built the right communities
around themselves.
Seibel: Java strikes me as interesting in that regard because it has two
communities. There’s the implementers and systems programmers—people
who worked at Javasoft or Weblogic or places like that. Then there’s all the
people who use Java and app servers and prebuilt frameworks to build
business applications. Those are very different bars.
Bloch: There are multiple communities associated with Java and with other
programming languages too. When there aren’t, it’s usually a sign that the
language is either a niche language or an immature language. As a language
grows and prospers, it naturally appeals to a more diverse community. And
furthermore, as the amount of investment in a language grows, the value of
it grows.
It’s like Metcalfe’s law: the value of a network is proportional to the square
of the number of users. The same is true of languages—you get all these
people using a language and all of a sudden you’ve got Eclipse, you’ve got
FindBugs, you’ve got Guice. Even if Java isn’t the perfect language for you,
there are all these incidental benefits to using it, so you form your own