UPDATE for Russian readers: Kyrylo Silin has translated this article to Russian and put up in his Github repo, check it out here!
It's time for a non-technical post. Today I'm going to talk about the part of the developer community I'm most familiar with: the Ruby community. And its three cancers.
First of all, feel free to despise my thoughts wielding the fact that I'm not a long-time member of the developer community. I've been programming for the past three years (four if CSS counts as programming, which I hope does not). That implies that I'm missing a whole lot of internal insight that you, my dear reader, surely have -- but in my opinion it also gives me the benefit of an external perspective.
In my humble opinion, there are three cancers of the Ruby community that we should get rid of: faction mentality, scarcity of critical thinking, and the damn Pareto rule. (They may apply to other communities as well, but I'm just talking about the one I feel part of.)
As a non-graduate in Political Science, I've spent a lot of time watching people debating. They would debate about fascism, communism, conservatism, liberalism and whatnot. Except that I just lied: they weren't debating, they were confronting each other with labels. They all had one thing in common: they felt strongly identified with a label and despised the ideas of the rest, even when those ideas were the same as theirs.
That was fun, actually. Whenever I chose to enter those debates, I would confuse everyone by analyzing their ideas separately from their labels. For example, I would talk with radically atheist, left-wing Spanish students about how their ideas (and deeply engraved feelings!) connected perfectly with Catholic moral. Or how the Spanish social security system, which they defended, was founded by a pseudo-fascist dictator named Franco. Most of them just ended up being pissed of at me: they thought I was trying to convince them about something, but I wasn't, because I haven't even expressed my opinion about those things, just showed them that they weren't thinking by themselves, but just defending a label someone had set up for them.
The thing that would make them really incomfortable was actually that I had no label to defend. Are you left-wing or right-wing? --they'd ask. None. But that can't be possible! The flavor of strawberry, is it blue or green? Doesn't apply. How do you describe a circle in a one-dimension reality? You just can't. Because the categories used don't fit the reality being analyzed.
I've seen plenty of this in the Ruby community as well. At first I thought: well, this community is pretty different from regular university students --they're utterly smart people. They don't fall for labels. WRONG!
Authority leaders and social debt
In the Ruby community there are notorious authority leaders. Whenever DHH says "A is X", the community splits in two: YESH and BULLSHIT. And it's not just DHH, but many other community leaders. People feel compelled to take part in one of the two factions, even when the debate itself might be irrelevant. I call this social debt.
Think of it as technical debt, but socially: you borrow the opinion of a faction or its counter-faction, and that makes you feel secure, but you might end up paying for your mistake later on (your mistake being not thinking about this yourself in the first place).
Scarcity of critical thinking
And that leads me to the second cancer: scarcity of critical thinking. It's true that we, as young members of the community, are condemned to reinvent the wheel over and over, to some extent. That's not exactly good, so to avoid this we may take one of these two paths: either learning from older developers' experience, or following trends blindly. Guess which way is easier, and sadly more common.
We seriously need to read a fucking ton more and take advantage of the expertise of older developers. We just can't live anymore with the old threads suck, reactor pattern will save the world, or processes suck, threads will save the world, or multithreading is hard, processes will save the world. Any of these might be partially true, but religiously sticking to one of those is just stupid. Try out things yourself, talk to other people, consider different use cases for every one of them: HELL, it's just such a simple pattern to compare technologies, it applies to almost everything! It just takes a little effort. And there's no shame in telling someone you don't know about a particular topic or you're not sure about what fits best a given problem. Stop sticking to trends blindly, seriously.
The damn Pareto rule
The third and last cancer I've been noticing in the Ruby community, and for the most part in Open Source, is the Pareto rule. 80% of the work is done by 20% of the people, while the other 80% of the people are either passively consuming technology or even worse: blaming their authors and maintainers, criticising their work or in some extreme cases laughing at it. If you feel you're part of the 20% of the people who do the work, put an end to this bullshit. Don't let people step over your work. And most importantly, if you feel you're part of the other 80%, you need to stop whining and start reading, learning, coding and doing something meaningful with your life.
I believe that these three cancers, if they keep growing, won't kill the Ruby community, but they surely will make it a dark, sad place to be in. We need to stop these, start respecting other people's work, learning from it, yet thinking for ourselves. We're supposed to build the future. We should know better.
We're motherfucking programmers, for fuck's sake.