How Religion Destroys Programmers

I discovered something about myself—I have an amazing gift to always make the very best technology choice.

Superhero kid

No really, it is quite amazing.

When I look back at my development career, it seems to me that every programming language I was using at any given time was clearly the best one.

The same goes for frameworks and even operating systems.

Yes, I have this amazing ability to pick from the vast ocean of technologies, without even trying them all out, the very best one, and to vehemently defend my choice.

Perhaps as you’ve been reading this, you’ve discovered you have this uncanny ability as well?

Most developers are religious about technology

It’s true.

Don’t be ashamed, you are not alone.  Myself, and just about everyone else, is with you.

Hope

Some of use are recovering from our self-imposed brain washing.  Others of us are blissfully unaware of our predicament.  But most of us have at least one religion we’ve managed to craft ourselves.

It is perfectly natural because most programmers got into the field of software development because they were passionate about it.  Anything you are passionate about is likely to cause you to develop some highly charged opinions.

Take sports fans for instance.  I’m not really much of a sports fan myself, but I know many fans of all different kinds of sports that religiously believe their team is the best despite all the evidence to the contrary.

This defense of our own choices and ideas is core to human nature.  It is easy for us to adopt a new idea but we religiously defend the ones we have without needing much evidence to back it up. The problem is we tend to tie up our ideas about things with our identity and even our value as human beings.

It takes some deep soul searching, but it you look within yourself you’ll probably find that you can make a list of the best operating systems, programming languages, frameworks and so on.

Ignorance is not bliss

The problem with this self-imposed religion is that our technological religion blinds us from the truth.

I spent countless hours arguing about why Macs sucked so much before I had even really used one.  Ironically, I am writing this post on a Mac right now, but I am using Windows Live Writer which I am accessing through remote desktop.  Oh, and this blog post, well, it is actually hosted on an Ubuntu Linux server in the cloud on a PHP application you may have heard of called WordPress.

My point is, most of us vehemently will argue that our technology choice is the best without even having really tried the alternatives.

It seems ludicrous when you think about it clearly, but I still catch myself doing it even today.

When I look within myself to honestly ask the question “why,” I find that most of my motivations come from a combination of pride in what I have learned and accomplished and a fear of what I don’t know.

I find that it is much easier to dismiss a technology that I don’t know as “garbage” or “worthless” than it is to take the time to learn about it and see why others like it so much.  As they say, one man’s garbage is another man’s treasure.

The problem with thoughtless religion

I don’t need to tell you that mindless religious zealotry is a destructive force in our world.  You only need to go to your favorite national news web site or look in any history book to see that is the case.

Nuclear alarm

But, while not too many programmers will draw swords over PHP vs C#—although I have been accused myself of throwing a chair in a similar dispute, a litigious and quite false accusation which I protest strongly to this day—many developers are quite willing to argue loudly about their opinions and even brashly tear down the works of others as I am sure you have seen if you have spent much time on the good ol’ interwebs.  I got a nice taste of this bitter water myself when I had the gall to actually post something negative about everyone’s bastard child of a language that was discovered to have royal blood after some years of abuse, JavaScript.

So, while we may think our ignorance isn’t harming anyone and that they deserve it anyway because they are clearly wrong, the truth is, there is quite a wake of destruction that our ignorance can leave behind us.

I look back on my own past and I am embarrassed that I harassed Perl developers to the degree that I did, completely discrediting their work and ignorantly pushing my holy statically typed C-based languages as their one and only savior who could cleanse them of their filth.

But more than anything, I realize that I hurt myself.

Stop hitting yourself, idiot!

The biggest growth in my career came when I was looking for a job doing C# development and found a really good opportunity to act as a technical architect for a project written in Java.

I was quite torn by the decision.  In my heart I knew that Java was bad and evil.  I knew that because Java lacked properties like C# and required the use of manually created getters and setters that everyone writing Java code was clearly an idiot.

I almost didn’t take the job, but I decided that the pay was too good to pass up and that I would suffer through this awful experience like a prisoner of war until one day my Microsoft would rescue me.  I thought I would at least get to apostatize some filthy Java writing scoundrels.

Well, it turned out that after a couple of years of mentoring developers on writing good Java code and unit testing, I realized that not only was Java not so bad, but there were some actual merits of the language and Java frameworks that could be appreciated.

More importantly though, I began to realize that my past code bigotry had closed quite a few doors on my face.  It began to occur to me that perhaps all of my technology choices in the past were not necessarily the best.  I began to start thinking that there wasn’t actually all the much difference between many of the most popular technologies.

I began to realize that understanding a wide range of technologies and programming languages made me much more valuable than ignorantly subscribing to my own religion about a particular technology that I happened to choose.

I found that my own understanding of individual technologies increased rapidly, because instead of just “eating what I was fed,” I could use my brain to compare and contrast differences between programming languages and technologies which left me with a deeper understanding of all of then.

I was rudely reminded of my own shortcomings that still exist in this area when I recently converted my blogs over to a Linux server in the cloud from Digital Ocean.

I was predisposed to choose Windows technologies for deploying web applications, but it was pretty hard to argue that a complete Linux server in the cloud that performed extremely well for $10 a month was not a good choice.

My point in all this is to say that being closed-minded about technology choices only hurts yourself in the end and severely limits your personal growth as a developer.

(Here are two good books to break down those barriers: Seven Languages in Seven Weeks and Seven Databases in Seven Weeks.)

There is no “best”

I’ll finish up this post by imploring you to believe me when I say “there is no best technology or programming language.”

I’m not going to insult your intelligence by saying that each language has a purpose for a different situation because the truth is much deeper than that.

After creating over 40 Pluralsight courses on a very wide range of technologies and programming languages, I’ve discovered a few truths.

The truth is that there are multiple great ways to do the same thing using different tools and different technologies.

The truth is that all programming languages and technologies have big mistakes and weaknesses in them.

The truth is the more you learn about different technologies, the more you will find that at the core most things are pretty similar.  What I mean by this is that most of the core concepts about writing software apply regardless of technology choice or programming language syntax.

You’ll also find, as I have, that if you are accepting about others technology choices and are able to admit your own ignorance and learn from it, you’ll find helpful friendly people willing to teach you what they know, everywhere you go.

If you found this post useful–or at the very least entertaining–sign up here and join the thousands of other Simple Programmers out there.  Also, I’m still preselling my complete package on How To Market Yourself as a Software Developer for a limited time.

(Side note: you may think that I am a big hypocrite with this post, since not too long ago I claimed that C++ was not back and JavaScript was doomed.  I believe what I said in those posts does hold true and I don’t think it is contrary to what I am saying in this post.  It is possible to have actual critical opinions of technologies you have actually used.  You don’t have to like everything.  My point is that, even though I dislike C++ for many of today’s programming problems and I feel that JavaScript is not the most elegant language for the web, I do recognize that both of these languages have their merits and that they are valid choices in many situations.)

Optin Architect
  • Brian Hall

    Very nice post John. I have always liked using the analogy that a developer is like a construction worker, and the languages and technologies that you work with are your tools. The more complete your toolbox, the better (and easier) it is to do the best job possible. Too often, technologists (developers, QA, etc.) fall into the trap that every problem has to be fixed with the tools/experience that they currently have. It would be like a car mechanic removing an oil filter using just a screwdriver because he doesn’t believe in a filter wrench — it’s possible, but it’s really messy and will take a lot longer than if you had the proper tool for the job.

    Fill your toolbox and you become more valuable as a developer, because you will have the skill and wisdom to choose the right tool for the job.

  • Timothy Boyce

    I wish I had the time and motivation to really learn more programming languages. My experience is also primarily with C-based languages.. Java, C, C#, and enough C++ to know I’d never take a job doing that. I’ve learned the basics of many more, but not enough to really appreciate them.

  • WiiFone

    I remember programming anti-virus for humans using numerous codes from JQUERY, PHP, ASP, etc. I tried to crack the matrix code and divided by zero many times. It would explode atomic bomb. It terrifies me like hell.

    I don’t what I did over there. I don’t want to go there no more. so I back down the mountain. Is true? Can you blow up or create CERN BLACK HOLE? Oh yes.
    http://www.youtube.com/watch?v=mZ7pUADoo58

    I have to stay away with in 100 years.

  • Pingback: 4 Mistakes I Made When I Started My Software Development Career()

  • Pingback: 4 Things I Wish I Would Have Known When I Started My Software Development Career | 天天三国杀()

  • Pingback: 4 Things I Wish I Would Have Known When I Started My Software Development Career | Coding Storage()

  • wtpayne

    We slowly begin to realise the extent to which our humanity works against us. We are predisposed to narrow-mindedness, xenophobia and jingoism; yet our hubris and self-delusion knows no bounds. We are fools who think ourselves gods. Truth is our only saviour; and empiricism is its’ prophet. In testing ourselves, we are found wanting; and so are led towards humility, which is the gateway to truth.

  • Pingback: 信仰是如何毁掉程序员的 - IT趣事,IT糗百()

  • Pingback: 我也曾是如此 – 技术信仰是如何毁掉程序员的 | 阔空晴云()

  • Pingback: 信仰是如何毁掉程序员的()

  • Pingback: Who’s Your Predator? | Form Follows Function()

  • Pingback: 信仰是如何毀掉工程師的 - Inside 硬塞的網路趨勢觀察()

  • Pingback: 無腦的信仰是如何毀掉程式設計師 - Inside 硬塞的網路趨勢觀察()

  • Dad_All_Day

    You’ve discovered something about human beings that was discussed by Eric Hoffer in his book, The True Believer: Thoughts On The Nature Of Mass Movements, back in 1951. At my age, I always enjoy hearing people tell the story of their discovery. Be sure to use your new-found knowledge and look around at other dearly held beliefs.

  • http://www.facebook.com/terrence.a.davis1 Terrence Andrew Davis

    Every single Internet and radio story is written to me personally. Truman show or CIA prison or God knows what. Mental health people spy on me and confuse things further. My Mom seems to spy on me. I am at a loss. When doctors spy on you and fuck with you with skits and actors, God it’s confusing! It’s a total distraction. Who the fuck is spying on me!!
    God says…eminence truths begins wittingly saving willing ideas forcibly
    commandest Wretched School supremely crafty weakest vessel
    preaching satiety mercies waking -though Cyprian sentiment
    lectured fabric hereditary changing came mercifully stipend
    fitting surmount do contagion

  • Alex

    TLDR: Don’t be a bigot, actually think about the decisions and choices you make, there is never one true way, exploring different perspectives will deepen your understanding and allow you to be a better decision maker in the future.

  • Joe Morrissey

    Provocative title. Inanely stupid story. What does this have to do with religion? There are zealots in every phase of life. Seems pointless and stupid. Sometimes people are short sighted. Wow, thanks for the insight. You can do better.

    • mikepope

      Awesome comment! Thanks for contributing your keen insights to the discussion.

    • meteorite

      “Religion is an organized collection of beliefs,
      cultural systems, and world views that
      relate humanity to an order of existence.” Wikipedia.
      Not too far off from how we developers craft our
      Temples of cyber-adoration and gather with similar
      minded peers to chat and reassure each
      other with blinded faith that the next version of our
      Software will come and save us… again.

  • Zerq The Mad

    I judge technology based or various merits…
    Maintanability and openness… and maintanability is more important professionally while openness is more important privately.

    But i do have my religion… (i am the world as of yet only Psudo-deistic Post-humanist materialist techprist)

  • Henri Tuhola

    Unfortunately there are best languages and tools. The choice depends on the context. Not everyone with a preference is a religious idiot.

  • navieh

    there is no such thing called religion in engineering, there are only facts. Good programmers seek for insightful understanding of technology and master it.

    • craigvn

      Most programmers don’t do this, although they think they do.

  • http://www.facebook.com/profile.php?id=1026609730 Jim Balter

    Congratulations on not being quite as stupid and pig-headed as you used to be.

  • Pingback: 4 Things I Wish I Would Have Known When I Started My Software Development Career | 为了幸福()

  • Pingback: How Should Software Developers Prepare For The Future? | Simple Programmer()

  • Pingback: 我们应该如何对待技术信仰? | 我爱互联网()

  • Pingback: 我们应该如何对待技术信仰? | 不知可知()

  • Pingback: 我们应该如何对待技术信仰? | zengine()

  • Pingback: 我们应该如何对待技术信仰? | HTML5资源教程()

  • Pingback: 我们应该如何对待技术信仰? | 我爱互联网()

  • Tom

    Thanks for your piece of work. But still I can’t agree with you that I think you mixed “Religion” and “mindless religious zealotry” together, that’s well seems not correct. People have weakness, and probably “mindless zealotry” is one of ours. And it’s not only happened in the belief of Religion but also almost in our every aspect of life too. We should be more rational, and gave up “mindless zealotry” for everything. So actually it’s no concern about Religion at all. :D

    • jsonmez

      Hey Tom, when I use the word religion I do mean it in the non-spiritual sense. I get the point you are trying to make. I am religious myself. :)

      • arcadius

        But that’s not the actual meaning of the word. If you mean “zealot”, or “irrational” or “lazy” then use those words instead of a word that doesn’t mean those things.

  • Pingback: 关于技术信仰的辩证:我们应该坚持自己的信仰吗? - 科技辣()

  • Pingback: 关于技术信仰的辩证:我们应该坚持自己的信仰吗? | 极氪观察 | 极氪世界 前所未有的技术()

  • Pingback: 5 Điều tôi ước gì được biết khi mới bắt đầu nghề phát triển phần mềm | VinaCode()

  • Pingback: Who’s your predator? | Iasa Global()

  • Pingback: 4 THINGS I WISH I WOULD HAVE KNOWN WHEN I STARTED MY SOFTWARE DEVELOPMENT CAREER | 一世浮华一场空()

  • Pingback: 11 Rules All Programmers Should Live By - Simple Programmer()

  • http://complexmathscoding.blogspot.co.uk/ Mike Wardle

    I am a user, and advocate of c#, and over the years have found myself a little pigeon holed as a c# dev. I have a strong background in c++, but dont use it currently. I have dabbled with java, used javascript and frameworks like angular, nodejs and backbone, but primarily im c#.
    The main reason for this is role availability in my area. There are few roles using languages other than c#, a few using what are considered out dated languages like c++, but very few in java, f#, scala haskell etc etc.
    So as much as I would love to keep my skill set broad, the cash paying opportunities arent there. Most of my non core c# experience has been in side project, for my employer and in my own time, but its difficult when THE MAN says write c# and I pay you to spend much time on anything else.
    And without experience I rule myself out of senior roles in other languages, bit of a catch 22.

    • jsonmez

      By all means, specialize and be a C# developer. I’m just saying don’t knock Java, that’s all. You should specialize. I don’t mean to indicate that you need to know 50 different programming languages. :)

  • Pingback: [Dev Rule] 11 Rules All Programmers Should Live By | sudo man()