

How Religion Destroys Programmers - jsonmez
http://simpleprogrammer.com/2013/07/08/how-religion-destroys-programmers

======
mikeash
One of the advantages of being a cynic and a pessimist is that I don't go in
for these religious attachments to technology, since I know (think) that it's
_all_ crap. Just some is more crap than others.

~~~
gpcz
A great way to become a cynic and pessimist about programming is to get a
computer engineering degree. Once you understand computers at the gate & flip-
flop level, you realize that most of what people argue about on the Internet
is window dressing.

~~~
choult
Clearly, then, you're not a true cynic until you understand how transistors
work at the quantum level...

~~~
StavrosK
Weird, I got an engineering degree, learnt about gates and flip-flops and
transistors at the quantum level and still think discussions about tools have
merit. Just because there are levels below the one you're using doesn't mean
you shouldn't use it.

------
noonespecial
If I may float the counter argument:

Sometimes the only way to beat analysis paralysis is to pick something,
anything, and then pursue it with religious zeal. (Sometimes even to the point
of excluding something you find out later would have been a much better
choice)

I can definitely get behind the idea that you shouldn't be an unpleasant bigot
about it, but a little dedication doesn't hurt. Its better than "Gandalfing"
the merits of this or that technology for longer than it takes to just pick
something and get it done.

~~~
StavrosK
> Sometimes the only way to beat analysis paralysis is to pick something,
> anything

Sure.

> and then pursue it with religious zeal.

This does not follow. You can pick something while still being fully aware
that you just picked it "because you had to", rather than delude yourself into
thinking you picked it because it was the absolute best.

~~~
noonespecial
I'd rather use the perl project of the guy who _loves_ perl than the project
of the guy who chose it "because he had to". Not sure if I'd want him as a
coworker though...

~~~
watwut
Why? It is quite possible that "because he had to" guy will produce more
readable code. There is no reason to care about developers personal
relationship with whatever technology.

Important question is whether he is able to produce functional, readable,
well-designed code in acceptable speed. In case of projects under time
pressure, the important question is whether the developer can do reasonable
trade-offs between those expectations (eg. sacrifice the right one).

~~~
lostcolony
Agreed. I want the person who hates the language; they're not going to write
their code with all the 'neat' things Perl has, so it comes out looking like
someone banged their head against the keyboard a few times, or as poetry
(Black Perl). They may not write idiomatic Perl (if such a thing exists), but
I bet I can follow it.

------
mercurial
I like to look at technology stacks by thinking about what problems I'd like
to deal with on a daily basis. You'll encounter different issues in a
Java/Hibernate/Oracle environment compared to a Perl/Postgres environment or a
pure C# environment. They all have their share of problems (though some more
than others, like PHP), and it is possible to write great software with all of
them.

~~~
BugBrother
Hear hear!

Let me take the example PHP, since you mentioned it and I don't know enough to
have an opinion.

PHP is generally claimed to suck badly. But even I can see that the "haters"
on HN generally don't know/discuss the existing PHP frameworks and methods.

If I would look at PHP to evaluate it for a project, I'd look at if it seems
fun to use (really important!) -- and if it would be usable with good coding
standards and modern frameworks.

The bad things people talk about PHP (bad cruft in naming of methods, kludgy
parts) are not relevant _if_ it takes a few hours/days to learn that -- and
_if_ a good coding standard can limit yourself to a subset of the language.
You need to do that for all languages anyway. (See JavaScript.)

But: One big red flag would be if the language proponents are language war
fanatics that vote down criticism of their language/framework while attacking
all competition. You probably know which ones I talk about.

~~~
lmm
> The bad things people talk about PHP (bad cruft in naming of methods, kludgy
> parts) are not relevant if it takes a few hours/days to learn that -- and if
> a good coding standard can limit yourself to a subset of the language. You
> need to do that for all languages anyway. (See JavaScript.)

Javascript is by no means a good language. I think "needs a coding standard
and a few hours/days to learn which parts to avoid" is a point against a
language - not necessarily reason to rule it out entirely, but a mark in the
negative column. There are plenty of languages where this need for a standard
doesn't seem to arise, because the obvious way to do things is good enough
(e.g. Python).

> But: One big red flag would be if the language proponents are language war
> fanatics that vote down criticism of their language/framework while
> attacking all competition. You probably know which ones I talk about.

That's a terrible reason to make any decision. It reminds me of the guy who
wouldn't listen to U2 because he didn't like their fans. If you avoid
languages that're used by idiots you'll find yourself on a treadmill where
you're constantly moving from incomplete language to incomplete language,
because as soon as a language gets good enough, idiots will find it and use
it.

~~~
BugBrother
>>Javascript is by no means a good language

My point was that you have to compare the practical _use cases_ , that is "the
good parts" of a language/framework -- not the bad cruft you can avoid. A few
hours investment is nothing. (JS still has problems, many are being solved.)

This is trivial of course, but strangely ignored by many on HN with an IQ that
probably is the sum of our two's...

>>If you avoid languages that're used by idiots

I wrote that I am suspicious of environments used by language war _cultists_ ,
intelligence is orthogonal.

(A typical example is someone that starts recommending his favorite
environment even when it isn't discussed, as suitable for everything just by
its std use cases... Like you :-) )

Edit: Absolutely agree, mercurial.

~~~
mercurial
I think there is a point to be made for avoiding an ecosystem (without
necessarily using a loaded word) due to a perception of low quality of
available libraries. This has certainly happened to me in the past.

On the other hand, some stacks, I feel, do help with writing better code. But
don't fool yourself that there is a silver bullet.

------
Spooky23
Programming religion is a reflection of the relative inexperience and youth of
the average programmer. (At least the average programmer posting on message
boards, blogs and mailing lists)

I've been doing IT professionally for 15 years now (how did that happen, I'm
old!), and I've been an computer nut for about 25. I think as you grow
professionally, you start to recognize that tools are tools, and the best
tools depend on the environment, team and task at hand.

I used a handsaw and miter box to cut some moulding this weekend to finish up
a home project. I like using hand tools for small projects, but that doesn't
mean that my brother-in-law's professional power miter saw is "bad', or that
using a hand-saw at a construction site where time=money to "good".

------
awjr
Too be honest, after coding for 20+ years, I'm don't have a particular
'religion', but that probably has more to do with my main bread and butter
coming from Coldfusion development.

What I try and be is acutely aware of trends and then try and use them in my
spare time or introduce them into my day to day development. So at the moment
there is a lot of love out there for Javascript frameworks (AngularJS in
particular). I like how it allows your front end to become middleware
agnostic.

It's one sexy trend I think is also a lot of fun and gives great results and
I'm jumping on board for the next couple of years.

Just remember to try and learn something new everyday :)

~~~
lostcolony
Out of curiosity, has ColdFusion turned into what Cobol kind of is, that niche
where no one is starting new projects, but a lot of legacy systems still need
support, and the price for that support is beaucoup money?

I ask because I actually learned ColdFusion back in the mid to late 90s, but
never really did much with it; Perl largely supplanted it in the stuff I was
doing, and by the time I entered college, Java supplanted that for web (and
actually in industry I'm using a lot of others).

(Not that I want to do that, by any means; I don't have the experience or
desire. But curious)

~~~
awjr
Not so much Cobol, but basically the only places that still use it are
profitable companies set up in the early 2000's.

There's nothing wrong with it (although a lot of the time I end up writing
Java as CF now compiles to it).

It just doesn't have the user base out there and most companies did the right
thing and bit the bullet and migrated to "a nother" technology. In the UK this
usually meant .Net

Currently I'm of the impression that we'll end shifting to Python or Java
however there is a _huge_ legacy set of code to overcome first.

------
tehwalrus
To me as a language pluralist, none of this particularly sounds like anything
new.

My initial programming training was FORTRAN (in 2006!) and I then "taught
myself" C++ (I didn't know _anything_ about C++ by the end of it), wrote a
ruby-on-rails "site" for a friend, and then got a job writing C# and MS SQL,
where I wound up actually writing a lot of Actionscript 2.

This was all while I was still learning about new programming concepts, e.g. I
was using lambdas/anonymous functions in Actionscript before I knew that there
was anything special or difficult about having inline functions as objects.
When I finally tried to write a non-trivial program in C, I started to
understand the difficulties and trade offs of all the complex, mutable
collection types I had been using in higher level languages. and so on.

I say all this, because when you come into programming on that journey (now
rounded off with 3 years of Python-and-C/C++-extensions) you don't have time
to develop a religion (that lasts any length of time). It becomes apparent
that lots of different technologies work in different circumstances, and that
each of them shares a lot of ideas, and have some unique features (good or
bad).

That said I do have a preference, indeed I posted a language rant last
year[1]. I still think homoiconicity is wicked, even if not always useful -
and I've not yet ever written something that anyone uses in lisp.

[1] [http://joe-jordan.co.uk/blog/2012/10/one-syntax-to-rule-
them...](http://joe-jordan.co.uk/blog/2012/10/one-syntax-to-rule-them-all/‎)

~~~
rjzzleep
to be honest with you i always find it suspicious when someone can only
program one or two languages. either he doesn't want to or he's not capable
of.

there used to be a time where all our scientists used to be philosophs with a
lot of proficiency in a lot of different domains. that's not even too far
back.

------
davidw
See: maximizing vs satisficing

[http://journal.dedasys.com/2006/02/18/maximizers-
satisficers...](http://journal.dedasys.com/2006/02/18/maximizers-satisficers-
and-programming-languages/)

------
logicchains
TempleOS would beg to differ.

~~~
michaelwww
One of my fun daydreams is that TempleOS begins to attract followers and
becomes a new religious movement of hard core assembly language programmers
seeking the SOURCE.

------
hoektoe
SimpleProgrammer, another site that brings up a box blocking all content
,SUBSCRIBE NOW = Instant Close site

------
pjmlp
Fully agree. At the end of the day, what matters is delivering a product that
works to satisfy a purpose.

The customer couldn't care less what gets used to develop the product.

Technology religion only serves to sell training stuff, fill conferences and
entertain ourselves in flame wars.

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

No. The problem is that this self-imposed religion blinds us from the fact
that there is no "truth".

------
michaelochurch
Religious wars are also counterproductive, because they tend to give too much
power to the MBA-culture conquistadores who really don't belong in technology,
but end up ruling it because engineers are so fractious.

When we have the Scala and Python and Lisp crowds all slugging each other over
minor differences in the languages, it generates background FUD in the same
way that mechanical collisions create waste heat. Then the MBA-culture
colonizers get overloaded thanks to all these disparate overblown accounts of
each language's deficiencies, but since they construe their job as Making
Decisions, they feel a need to Say Something and make everyone use Java,
because it's "the standard". Now there's no Scala and no Python and no Lisp
for anyone (at least, at that company).

Religious wars actually lead us to mediocrity, because business people get to
make the decisions when we become so fractious.

------
ph4
Slightly off-topic, but would anyone recommend Sonmez's Pluralsight videos -
Java Fundamentals in particular?

------
sebastianconcpt
There is no best, only design decisions.

~~~
pekk
Relative to a specific purpose, one design decision is often better than
another. But something doesn't need to be best to be good enough.

------
qwerta
How not following certain direction "destroys" programmer? It is like saying
muslims should try to be christians for a year or two.

For example I am Java guy (or more precisely JVM guy), it satisfy all my
needs. There are new innovative languages, IDEs, databases, concurrency
libraries here... It would take multiple lifetimes just to explore small
fractions of that.

It takes years to get efficient at some platform. Other technology also means
changing working habits, libraries, IDE, debugging style...

I know C++, PHP, Ruby, JavaScript, Erlang etc are not for me. Not based on
some 'religious' arguments, but because I actually investigated it or worked
with it at some point.

\- C++ language is horrible, there is small island around QT, but most code
out there is mess. Not much has changed since my school

\- PHP has reasonable runtime, but code culture is atrocious.

\- Ruby has horrible runtime, horrible community and code culture even worse
than PHP

\- JavaScript has not changed much since 1999. Sure there is JQuery and HTML5,
but it still sucks.

\- Erlang is interesting, but too alien. Plus it is not usable outside of very
narrow specialization.

~~~
mattfenwick
I too cannot tell if this is serious -- but the idea that members of religion
X enlighten themselves by learning about religion Y is a very interesting one.
Perhaps that would go a long way towards solving the massive amounts of
religious intolerance and misunderstanding (as well as FUD, which empowers
leaders at the expense of followers) that we have to deal with today.

~~~
lostcolony
Depends what is meant.

In terms of try, as in, convert, no, for obvious reasons.

If you mean observe, learn from, and attempt to find common ground, obviously.
Attend services of religions you don't agree with, in a spirit of curiosity,
see what practices you can borrow. I mean, the Catholic Thomas Merton found
inspiration in Zen Buddhism, and he found the Zen practices, detached from the
Buddhist beliefs, worthwhile.

~~~
mattfenwick
Yes, obviously.

However, just to avoid any ambiguity, I've edited to try and clarify what I
meant.

