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.)
Faction mentality
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.
Conclusion
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.