I was listening to Econtalk (again). This time the guest was Anthony Gill on the topic of Religion. He brought up a well-known quote quote: "I don't know how Nixon won. I don't know anyone who voted for him". This quote was used to demonstrate the same principal that applies when academic economists don't think that a topic like religion is worth studying.
(By the way, that quote is often attributed to Pauline Kael, but it is somewhat apocryphal).
However, I thought the quote was very interesting, and something that I think can definitely apply to anyone (not just politicians and economists), including developers. It's quite easy to get caught up in the same sort of technological provincialism. Since I've worked with Microsoft tools for most of my career, I've worked with lots of other people who've also worked with Microsoft tools for most of their career. I could easily dismiss Java or Ruby or PHP or whatever with an attitude of "I don't know anyone who uses it, therefore it must not be important".
This phenomenon has its own logical fallacy: the "hasty generalization" or the "unrepresentative sample". It can even take the form of something more ugly like fanboyism or, shall we say, "overly optimistic" viewpoints about technology. I don't want to start a flame war, but I'm sure you can think of a few technologies or products that might apply.
I know that I'm not immune to this phenomenon, but I've tried to take steps to combat it.
First, I'm a heavy Twitter user (follow me @mgroves!). My goal is to follow as many developers as I can in my region of the world (midwest USA). Not just .NET developers or web developers, but any developer: Java, Ruby, COBOL, MUMPS, FoxPro, ColdFusion, anything. I believe that every developer has something that they can teach me, no matter what tool they do their job with. I've often called the people I follow on Twitter my "140 character mentors". I don't agree with everybody. I occassionally groan when I see things tweeted about politics or religion or technology (or whatever) that I don't agree with. But I'd rather be challenged and uncomfortable than stagnant.
Second, I go to conferences and make an effort to talk to people I've never met before and go to sessions that are outside my area of expertise. This has exposed me to all kinds of awkward and/or shocking conversations (ask me about how I first met @PerryNeal sometime), but every new person or new topic can be an opportunity for me to improve, even in a small way. This is especially true at conferences like CodeMash that aren't organized around a specific technology or a specific vendor.
To wrap up: there's a whole world out there outside of your own technology's borders. You don't have to emigrate there, but you can learn something by travelling abroad every now and then.
Edit: I wrote this post before I learned about the passing of Jim Weirich, but I wanted to make special mention of him here. Jim was often considered a "Ruby" guy, but his knowledge and interest expanded far beyond that technology. By attending his sessions, I learned about some advanced ideas of OOP from him and from a book he recommended (What Every Programmer Should Know About Object-Oriented Design), as well as feeling comfortable with Git for the very first time through a live workshop in which he used Git Immersion. I think of him every time I read the book and every time I use Git, and I think he stands as a shining counter-example to the phenomenom I described in this blog post.
Matthew D. Groves lives in Central Ohio. He works remotely, loves to code, and is a Microsoft MVP.