Over the years I’ve seen many different reasons for working with one programming language over another, but nobody has ever told me about the single most important one of all: the community.

In the past, I’ve thought lots of other things were important; maybe this time is no different. When I was a teenager, I thought speed was most important, so I gave up Visual Basic for Delphi and eventually Delphi for C++.

When I started work I thought that fantastic tools and a really well-documented, solid API were most important, so I started using C# with Visual Studio (this was back before Java’s tools community really took off).

For a while I even agreed with Joel that the language and environment don’t really matter, it’s what you’re building with them that counts. I played around with Haskell but it turned out that the environment did matter a bit, after all.

Then I discovered Python, and thought readability, expressiveness and an awesome standard library were the most important things to look for in a language.

All of these things are true, but none of them compare to the effect of working in a language with a vibrant, smart community. Recently I was doing some Django-based web development, touching JQuery, the incredible Raphael Javascript library and Flash. Well, actionscript.

Ayayayayay. Actionscript. On the face of it, it’s fine – it’s more or less ECMA with a few, mostly optional, modifications. But what really, really hurt was the average level of programmer ability in the community. My workflow for personal projects in Python had become something like this:

Want to do something I’ve never done before Search for it Discover there’s already a module in the standard library for that, or Find two or three beautiful, elegant solutions have been posted online, ready to use

Trying to do the same when learning Actionscript was like drowning in quicksand. It’s the blind leading the blind out there… there seem to be the same number of great programmers but a lot more noise from complete beginners offering each other tidbits of programming wisdom, such as:

make a loop (a while loop I think)

and asking insightful, topical questions in a clear, well-thought out manner:

Hi friend how are you? 🙂 i have a questions how loaded image mc parent ???

Unfortunately, all this noise pollutes the results for the keywords you wanted to use to such an extent that it becomes difficult to find the people who know what they’re doing.

90% of effective web development today is about putting together pieces that already exist. This is great – the reusability holy grail we’ve been searching for is finally coming closer! So, for the sake of your own sanity, when choosing a language to use for your next project make sure you pick one with an active community whose code you’ll want to reuse.

Postscript: I think this is why some Django developers suffer from Rails envy. There’s such an awesome Rails community and ecosystem out there, making truly beautiful things. Just looking at heroku.com or vanity.labnotes.org is enough to make me consider laying down my beloved Python even though I always swore they’d have to pry list comprehensions and meaningful indentation out of my cold, dead hands.