There’s Hate in the Software Community
Have you ever felt unjustified hate against particular technologies in the software community? Have you ever noticed any developer making assumptions or having prejudices that go beyond pure technological aspects? After being blind to this for years, I've recently started to feel it.
It all started with a very interesting conversation that I had with my boss a few days ago. I've been a software developer for a few years now, working freelance for the most part and currently working at Runroom. My boss also used to be a developer for many years, and he knows a lot of great software craftsmen.
We discussed about our profession, and more specifically, the state of the software community worldwide. In this conversation, I realized something that I didn't perceive during all these years: the mindless hate in our industry.
Hate in the software community
I started the conversation talking about how I didn't like to work with Content Management Systems (CMS). I said that the appeal of using a CMS is just learning how to use it, but once you do there's just no point to keep using it again because you won't learn anything new.
My boss replied that there were some prejudices in the software community that drove people to believe things like that just because. He said that it was perfectly OK that I thought that, but it was sad that some people thought like me just because they saw people in the community saying the same thing, and they just followed their advice without hesitation.
After that conversation, I started to reflect on myself. How much of what I preached was a sincere belief of mine, or just something that I read somewhere and that I assumed as true without question? And even worse: how many people are proclaiming ideas as gospel when they don't fully know them to be true?
Two examples of mindless hate came to my mind: PHP and CMS.
Hate towards PHP
PHP is the programming language that I know best, and it's the language that I'm currently working with at Runroom. It's also one of the most common web development languages; a lot of great frameworks and CMS are written in it, such as WordPress or Symfony, just to name a few.
However, it's still one of the most hated programming languages out there. To me, that's not the problem. The real problem is that some people hate it without any reason at all.
I see two reasons why people reject PHP without thinking:
- Elitism: as explained in the last section of this post, some people are being elitist and rejecting PHP because of reasons that have nothing to do with technology.
- Religion: John Sonmez talks in this post about how, sometimes, developers defend the ideas they have without needing much evidence to back it up.
Notice that I'm not defending PHP, or saying that it's necessarily a good programming language. In fact, you can see in this reddit and Quora threads that some people have strong reasons not to like PHP. I'm just saying that it's sad that people mindlessly reject a particular technology just because the community says so.
The next time you see a developer criticizing PHP, ask him why and see if he comes up with a good reason.
Hate towards Content Management Systems
There is also a trend among developers to despise CMS and to love custom solutions that are developed with frameworks such as Symfony or Django. There are two main reasons for this:
- Developers believe that their skills are not pushed forward when working with a CMS. You can see it in this Webdeveloper and StackOverflow threads, in which the authors are assuming this belief in their questions.
- Developers also believe that CMS can't fit completely in a project, and that you'll always have a painful time customizing it to meet your needs. In this post, the author states that CMS don't work. At all.
Is all of this true? Before I spoke to my boss, I sincerely used to believe that. Now, I'm not so sure. And here are my reasons:
- You can develop extensions for a specific CMS. And that's just sheer programming, no different from writing a Symfony bundle, for instance.
- Even if you just build up a website by installing a CMS and a few modules, there's programming in there. Maybe you don't have to write much code, but you do need to draw an architectural design of the website. How are the different sections going to be organized? What entities can you recognize, and how are you going to represent them? Remember that programming means much more than just coding.
- CMS can fit perfectly on many software projects. The key is to know which ones. If you ask me, I think that CMS are great for simple websites that require simple business logic. They're not meant for complex projects with very specific requirements.
So how can we eradicate this mindless hate?
If there's anything that fuels hate, it's arrogance. “What I say is correct and what you say is wrong.” Instead, we should all approach our profession, and the whole world, with humbleness.
Recently, I saw a video in which a lot of developers talked about coupling and cohesion. Every participant of the debate was an experienced developer, full of knowledge and wisdom. And yet, some of them said that they didn't fully understand coupling and cohesion, but they were going to share what they believed they understood about it.
If such people show such humbleness in their statements, how can I be so arrogant to believe that I fully understand anything at all? I just can't. I have to assume that there's a lot that I still need to learn.
Does this post mean that the software community got it all wrong and we should just ignore it? Not at all. My point is that what the collective dictates doesn’t have to guide your decisions. Something is not right when a community is systematically creating haters.
If you don't like a particular technology, and you have good reasons for that, it's perfectly fine. But when a developer has no strong (good or bad) feelings about something, and the software community makes him hate it for no reason, then we have a problem.
Have you felt hate towards any other software technology, or any other unjustified prejudices?