You, yes you, are the worst programmer or web developer in the world. Without a shadow of a doubt. In someone’s opinion.
The thing about programming or building anything is that it’s almost entirely subjective. Of course there are certain things which are categorically bad like lazy developing, obvious bugs, security vulnerabilities and terrible performance (both server side and client side).
The point of this article, really, is to ask the question: Why are we, as a community, so judgemental?
There are plenty of controversial topics, when you get into web development. Factory patterns vs dependency injection vs just using classes/objects. Then there’s the design patterns, and the fads; are CMS better than bespoke applications? Well there are arguments for both. Is a factory pattern better than dependency injection; well it depends what you’re doing.
Should singletons be outlawed? Should business logic be in the Model (in an MVC system). Should a framework be used or a bespoke code base? Should functionality for a bespoke WordPress build be in the theme, or should it be wrapped up in a separate plugin? But then what about the inter-dependencies.
Even onto the microtopics. I’ve decided I want an MVC, RAD framework; if you use Laravel you’re (insert insult/compliment), but if you use Symfony you’re (insert insult/compliment); but hey if you use Zend then you must be (insert insult/compliment).
Why is this community so anti-everything-else?
We have so much more in common than we disagree on. We love to build things. We love to make them the best thing out there. We love to make people (whether end users or other developers) go “wow, that’s clever”.
My theory is, these judgements come from previous bias. You know the kind of thing “I used WordPress this one time, and it was terrible, so naturally I now hate WordPress, and anybody who advocates it” – you could swap WordPress there with anything. Dependency Injection and Containers, MVC, Procedural, OOP, MySQL vs MariaDB, Apache vs NGINX. Linux vs Windows.
Flaming ensues
So, you have a disagreement. We all have disagreements. Those of us in the web development community, however, seem to disagree fiercely with one another. I’m not entirely sure why, though I suspect it’s psychological attachment to previous judgements of the given topic of debate.
These disagreements often turn heated and invariably someone is referred to as an idiot, unprofessional, or something that otherwise challenges their experience, expertise, or intelligence. Which is just a bit harsh really.
People leave
This is the worst bit, and it doesn’t matter the context. Whether a forum, a social network, a work place, a specific team, a social group; it’s terrible. It’s horrible to think someone should feel so undervalued, or become so tired of the arguments, debates, whatever you want to call them that they lose their passion for programming.
This is particularly bad for businesses, who due to strong personalities and strong opinions, have to watch people walk out of the door because of a lack of compromise.
So what should we do?
I think we should stop, and think. Try to consider the other person’s point of view, and empathise with their opinion. Sometimes it’s a difference of opinion, sometimes someone is flat out wrong. If someone is flat out wrong, then perhaps some education is better than essentially telling them they’re stupid (I’ve seen this happen in a meeting, I felt for the guy on the receiving end of it). If it’s a difference of agreement, there’s nothing wrong with discussing opinions and maybe even agreeing to disagree.
My favourite quote, in relation to this, ironically is from Bill Nye the Science Guy; I saw a very short clip but:
Everyone you will ever meet knows something you don’t
So I think we should consider that more. Skill and knowledge can’t be easily determined by qualification or years of experience. I’ve known fresh faced junior developers on not much more than minimum wage who have been some of the most talented developers I’ve seen, simultaneously I’ve seen cozied up senior and lead developers who frankly couldn’t match up to most of the programmers on their team.
Give everyone a chance. A chance to prove they can do it. A chance to show they’re heard.
What happens if we don’t?
This is the bit I don’t like. People leave, as my point above. We’re getting more people through the doors of this industry than ever before. More people wanting to learn, wanting to know and to understand.
I love people wanting to get involved, that fresh-eyed enthusiasm is a wonderful thing. Then they go on the internet. Either publishing some code, or doing something which the community as a whole can see.
Then someone mentors them, often more than one person; in the form of comments on the commits, or discussion in their forum threads, etc. This is where the differences of opinion kicks in, the poor junior developer doesn’t know what to do. They’re torn between multiple opinions, none of which are necessarily right, but most of which are likely to be subjective.
I’ve seen this put people off of PHP altogether. Ironically they then move into other technologies, some of which the communities are even more judgemental; just not so openly hostile about it.
In someone’s opinion, you’re the worst developer going
Perhaps the particular context you’re in, your opinions are seen as the right ones. Fair enough. Why flame someone who doesn’t share them? All you do then is force everyone to stay where their views are welcome.
Every developer, every language, every framework/CMS/system has its own quirks. Probably for good reason. You can’t have everything, all of the time.
If it’s you, don’t be deterred
Just a quick note of positivity really. If it’s you being flamed on {whatever site}, don’t worry about it. Sometimes they might have valid opinions and experience (try to decipher them out of the flame). Don’t get caught up in it, don’t be put off. Keep doing what you’re doing.
It doesn’t matter if you’re a junior and have just got involved, or you’re someone whose been doing it a long time. There will always be someone, somewhere who thinks you couldn’t possibly be a worse developer.
If you’re happy with what you’re doing, you don’t have major code problems, your manager(s), colleagues, and client(s) are happy. Well, who cares what someone else says. Especially when they’re a faceless voice on the internet.
Why do we do it?
1) It’s fun/makes us feel superior. Not great reasons.
2) We want to be argued with so that we might change our minds and find something better and get closer to a truth. Great reason.
3) We want to recruit people to our side so that our favorite thing doesn’t die from neglect. Good reason.
Constructive arguing is how truth is arrived at.
Constructive criticism is how improvement happens.
Being judgemental is good – it means your critical thinking apparatus is working. It’s being rude, unprofessional, irrational or ideological that we should discourage.
Our profession is difficult, skilled, and important. That’s another reason why feelings run hot.
People need to harden up and not take things so personally. Either what was said is useful to you, in which case you should be grateful (whether it was rude or not), or it’s not useful to you, in which case move on.
Great article, thanks for putting it out there.
What I think is, being a developer you have to face every sort of professional harassment whether it’s done by your QA, Project manager or Client. There should be a precise space for a developer to convey his opinions and ideas and that should be acceptable by everyone 🙂