I'm not going to talk about baby Jesus. All developers, no exception, are religious. Especially you. This religion makes you angry and lead you towards bad choices. Today, I'm talking about love and violence.
It's 1999 summer. I've decided to spend a whole week playing my favorite video game, because I'm a huge geek. Final Fantasy 8 is the best game ever and the whole world must know about it. I'm jumping on my mother's PC and decide to make a website.
I immediately fall in love with the web development and all those languages. I insist on the word love. It's fucking love at first sight. I'm not touching the PlayStation for weeks. Too passionate about learning all that stuff. Making this website is more fun than all my games put together.
And most importantly, I see absolutely no problem with any technology i'm using. These tools are perfect. Did you see what I've done with them? Unbelievable.
The year after, PHP version 4 is released on the Internet. For the first time, my Final Fantasy 8 site is dynamic. A database allows me to update the site without touching the HTML. It's crazy ! My honeymoon continues.
I no longer have doubts about my future job. My cult towards all these technologies grows as I spend more time with them. A deep faith is growing inside of me. And beware of the ungodly who would dare to criticize my new religion.
I'm sure you recognize yourself somehow in my story. Like most developers, you have a special relationship with this job. A passion, a vocation, a pleasure, you call it what you want. You have invested so much time and effort in these technologies that you end up identifying yourself. As an extension of yourself. It's impossible to be completely objective when you're so invested. We're human beings. We want to embrace ideas and believe in things.
And for true believers, the reward is huge. The power of productivity and creativity that comes from mastering a language is a tremendous gift. A virtuous circle develops. The more you believe, the better you become. You become a godly person. You want to honor your sovereign and it becomes important to evangelize.
Communities around a language or a practice come to strengthen your faith. You meet all these people online or at meet-ups and conferences. You are galvanized by so many followers. And all the faithful have the same discourse. Your holy technology is the solution to every problem. Even when you clearly fit a triangle into a circle by smashing the sides in. Blind love prevents you from having any perspective. And when a heretic starts screaming horrors about your beliefs, love gives way to violence.
It's september 2005. I'm building website since a lot of years just for fun. I'm a PHP fanatic. PHP is life and whoever says otherwise, I'll cut off his head.
This is the first year of my computer science diploma. The first time that I will be taught computer science in a professional way. And I'm meeting with a lot of other developers. Of course, I immediately tell them about my holy religion. And the answer I get is unbearable. "PHP is crap! When you're a real developer, you code in C#." And everyone seems to be in agreement.
I see red. In an explosive rage, I violently insult all those C# fanatics. It's gone so far that, very quickly, people must intervene. It's a group of five people that I get angry with. No word will be exchanged between us for the next two years. I don't argue with the devil.
Fast forward, I continue my studies in England and then in Spain, I'll tell you all about it another day. After this period, i got back to France at the end of 2009 for my first internship. At that time I preach jQuery and Symfony.
But at work, religion has no place. I started producing entire Symfony projects where a simple bash script with a cron would have been perfect. Pretty soon my fanaticism caused big problems at my first job. And my lead dev decided to have a discussion with me that would end my cult life. A discussion that all developers should have in order to avoid huge mistakes.
Before this, I need to tell you about the event that inspired this article. Several months ago, I published this article (french version). I love NodeJS. I love it so much that it has been my language for years. So, I like to talk about it. And when the creator of NodeJS makes a list of things he regrets with NodeJS and talks about his future project, I have to tell you about it. This article will please a lot of people. A lot of people, but not Thomas.
Thomas is a developer who loves NodeJS and its environment. He's posting an article in response to my article. It's Internet, so I'm used to reviews. But his article is incredibly violent. It would have been okay if he was just technical, but this was personal. I've never seen so much violence in a review. It was so violent that he censor himself.
But why so much hatred ? I did some digging and I came across another article by Thomas. In this article, he's giving himself up. In this article, he talks about love.
I got it. Thomas is a NodeJS fanatic. And for him, I'm a heretic who should be burned alive in public. When I realized that, I saw myself many years ago defending PHP as if it was my mother. After the first shock barrier, I realized that his violence was a bad translation of his love for NodeJS.
If you're reading this Thomas, know that I love and value you. No hard feelings. Please share your NodeJS expertise. I'm sure I wouldn't be the only one to learn a lot of technical things from you. And to stop mugging people and live your passion better, I invite you to read the next part.
Back to my first job. My lead dev meet me at the coffee shop in front of the company. The monologue he's about to give me will change the way I see things. Languages are tools. Languages are not your family. I understand your attachment to them and the internel need to defend them, but this is ridiculous. You're a developer, you should choose your technologies from logic, not feelings.
You're looking at a huge toolbox. If you use a screwdriver to break through a wall, you're a bad developer. It's going to show and your company is going to pay the price. I don't care that this screwdriver has been helping you your whole life. I don't give a fuck that you've seen people break walls with a screwdriver before.
There's no such thing as the perfect tool, but it's obvious when you need to use something else. In a technical environment, facts and benchmarks are giving better advices than your feelings. And I beg you to put an end to your impulses. This will only lead you to useless conflicts. It's time to exorcise your demons.
How many useless debates between object-oriented programming and functional programming ? How many projects doomed to failure because of a wrong choice of technology ? How many pseudo-wars between developers for a language ? How many developers who refuse to see the flaws in their technologies ? Religion, religion, religion.
Most developers will sell their technology, spitting on everything else, without ever trying. Aside from spreading hatred, it's useless. The next time you want to smash a language, try to hold yourself back and respect others. Because love for a language is all right when it's controlled.
It's your love for this job that made you what you are today. I'm not saying it's all bad. But you need to take a step back. It's super important to analyze and accept the weaknesses in your language. It's essential if you want to avoid pitfalls. It's essential if you want to make the right choices and become a better developer.
If like me you have been guilty of anger and bad choices in the past, it is time for redemption. Look at the weaknesses of all these technologies straight in the eye and use this knowledge to your advantage.
That's exactly what I did with NodeJS. Same thing when I posted this article about my old PHP religion. I vividly remember all the hate and/or love-filled emails I received.
Your religion isn't supposed to control you. You have to be critical of your religion and control it. Criticism is healthy if it's done intelligently. I'm especially critical to people I love. I know them well, and if I criticize them, it's because I want them good. I take a hard look at myself before I dare to talk about people I don't know. Because I respect them and I want to be respected.
Applying this way of thinking to technology is a good idea. It will strengthen your expertise and avoid offending other people's beliefs. Maybe they'll even want to teach you something of their own expertise. And at the end of the story, love triumphs.
If this article can help spread some good vibes, I'd be honored. Our field could use it. You still have the comments below. I'm curious to see if you want to talk about love or violence.