I used to think deciding on a programming language was a technical decision. It's not. It's a social one.
Some communities are hostile to new ideas. Others are so welcoming of new ideas that it scares traditionalists away. Some communities are sponsored by corporations, others are staunchly independent. Over time, communities form of like-minded people.
Once you've begun programming for fun, you should spend some time thinking about the kind of community you want to associate with before you are too committed.
What do I mean? Well, here are some (probably biased and unfair) examples:
Rust is an incredible technology. But it's also a social experiment in creating an ecosystem that is supportive and inclusive. That is embodied most prominently in its slogan that starts with the phrase "Empowering everyone".
Although it's been around since the early 1990s, C++ events adopted a Code of Conduct in 2017. In my experience, C++ programmers can tend to think of behave with a more serious, more industrial tone. I don't expect to see a unicorn emoji at a C++ conference.
Languages you've never heard of
If you decide to participate in a smaller, niche community, expect to find people who are wildly passionate, but also fairly unorthodox. By definition, they've decided that the mainstream isn't. There are thousands of language communities out there.
I am particularly fond of a language called Dylan. It seems like it was cursed by destiny. The people there are incredibly talented and welcoming. There's just not that many of them.
Understand who your people are. You should find a language with syntax and semantics you don't hate, then lurk around until you find the community that clicks for you. For example, if you're choosing between R & Python for data science work, do you want to be surrounded by other statisticians (pick R) or do you want to work with people who are exposed to many ideas (pick Python)?
Some things to look for in a community include:
- a welcoming front door - if you're a junior programmer, the website should be inviting of newcomers
- alignment with your values - some technical communities, such as Rust, are explicitly value-driven. Many others are more neutral.
- a friendly communication style - look through the mailing list archive and lurk in the chat channel for get a feel for how people communicate. If you're unsure, create a fake account and ask a stupid newbie question. Let the tone of the responses guide your decisions.
Cover image by Alejandro Alvarez/Unsplash