
Contempt Culture (2015) - Gigablah
http://blog.aurynn.com/contempt-culture
======
yummyfajitas
I disagree with the article.

There is a lot of bad technology being pushed via social hacks - examples
include PHP, MongoDB, NodeJS and Go. Typically the social hacks are low
learning curve + easy tutorials that gloss over important details [1] + rapid
setup + culture of piling on tech debt (e.g. rails ignoring how relational DBs
work).

Technical superiority, particularly if that superiority requires people to
learn new things, has demonstrated an inability to gain traction.

So if we want superior technologies to win, we'll need to engage in some
social hacks of our own. Vocal and demonstrable elitism is a valid social hack
- if the people who are demonstrably great coders are proponents of Haskell
and sneering at PHP, while the code monkeys are all using PHP, that's a pretty
clear social signal. Who wants to be part of the code monkey crowd?

When I was younger, and nothing but a BasicA/Visual Basic coder, these
attitudes pushed me towards learning C and Perl (yes I'm showing my age). I
saw all the better coders using these superior technologies with a higher
learning curve. I realized that I had a lot to learn, I put in the effort and
I learned it. With the decline of hacker culture, I don't see that happening
anywhere near as much these days.

[1] E.g. a while back there were RoR tutorials that used update_attributes
(skipping input validation) to show how easy RoR is. Net result was various
hacks, I think including Homakov's hack of github.

~~~
noonespecial
Sometimes I wonder if a higher learning curve isn't a feature. If it takes
some amount of core-competence to simply hello world in a given language, then
a code-base that uses that language automatically signals higher general
aptitude of the programmer.

Could a language be "better" simply by being harder to learn?

~~~
chriswarbo
Hello world in PHP:

    
    
        <? print("hello world")
    

Hello world in Haskell:

    
    
        main = print "hello world"
    

You don't even need the "main = " if you're using a REPL :)

~~~
kazinator
Apples and oranges. What is hello-world in Haskell such that it is embedded
into a page that you load out of Apache?

~~~
dllthomas
> What is hello-world in Haskell such that it is embedded into a page that you
> load out of Apache?

With apache configured to run the program as a CGI script? Still the same
thing.

That's not a great way to run Haskell on the web, but it's not too far from
what's going on with historically common out-of-the-box PHP setups (and I
understand that modern PHP setups take a little more code).

------
plurinshael
Well spoken. When I hear people belittling others, no matter how "good" the
reason, I think damn, have some respect. And also just, have some dignity.

If you really want to influence someone's behavior, engage them, ask them
honest questions, accept them. If you do not want to influence their behavior,
leave them alone. Do not drag your own heart through mockery and judgment and
scorn because it was done to you, or because others will find it funny. Those
marks on your heart will be visible to all, and truly, you will feel them in
your dark hours.

"When you realize where you come from,

you naturally become tolerant,

disinterested, amused,

kindhearted as a grandmother,

dignified as a king.

Immersed in the wonder of the Tao,

you can deal with whatever life brings you,

and when death comes, you are ready."

~~~
smacktoward

       The supreme good is like water,
       which nourishes all things without trying to.
       It is content with the low places that people disdain.
       Thus it is like the Tao.

------
ajamesm
It's easier to get up and started with PHP, which attracts people new to
coding. I don't have any contempt for them. It's a language with a very low
barrier to entry.

I have INFINITE contempt for professional programmers who (1) use PHP (2) have
never used anything else and (3) vociferously defend PHP because it "gets
things done" but then (4) leak MD5 hashes of credit card info in an error
page.

Why wouldn't I be contemptuous of fraudsters?

~~~
ixtli
I remember when this was true but I don't think it is anymore. Whenever
someone asks me to teach them how to program from scratch I always introduce
them to the REPL first. You know, "1 + 1 prints 2!" The easiest way to do that
for some time has been the chrome dev tools.

~~~
ajamesm
A JS REPL is definitely faster for zero to Hello World... how about to
standing up a toy blog on a local stack? What's the comparative effort vs.
PHP?

------
damagednoob
Welcome to the new status quo: Safe spaces for users of PHP.

~~~
overgard
In this thread:
[https://www.youtube.com/watch?v=sXQkXXBqj_U](https://www.youtube.com/watch?v=sXQkXXBqj_U)

I have no interest going around belittling people for choices that work for
them, but this implicit idea that technological decisions are all a matter of
taste and nobody can criticize them is dumb to me.

------
mynameislegion
On one hand, sometimes languages are bad. More specifically, if we choose to
define the utility of a language based not on its features and high points,
but on its drawbacks and fundamental failings, then it's very straightforward
for a cosmopolitan hacker to develop bad impressions of certain languages. The
fact that those same languages show up as punching bags over and over,
particularly PHP, JS, Java, and C++, should hopefully indicate to us as a
community that these languages should be shunned and avoided.

On the other hand, the people wielding those languages do not deserve any
hate, shame, nor prejudice. Attacking people for using a language is like
attacking people for any other opinion that they might harbor; it is bigotry.
There is no reason to be a bigot when it comes to languages; it should suffice
merely to hold the opinion, to have the opinion be well-reasoned, and to
always be conscientious of how we treat the people around us.

(I cannot believe that I had to write the previous paragraph, but HN's
inability to hold this discussion in a calm and rational way in the past has
made it clear that I must directly tell you all to not be bigots.
Disappointing.)

It is a recurring pattern that discussions about these low-quality languages
turn into us-vs.-them discussions, where one side harbors people who espouse
the opinion that the language in question is low-quality, and the other side
consists of people who use the language in question on a daily basis. The
first side needs to avoid attacking and hurting people on the other side. It
is unhelpful and derails the conversation. In particular, trying to
communicate an idea of the form, "You need to be aware of the language's
failings and flaws, and understand that not all other languages have these
problems," is subtle and cannot be done while simultaneously flinging insults.

On the other side, we all must realize that our favorite languages are
terrible. Our languages, like almost all facets of computing in this era, are
primitive. We have only a few fundamental rules which guide our knowledge of
computing, but otherwise we are usually walking blind, exploring and feeling
our way through a field which is still largely unlit. When we discuss the
failings of a particular language, we are trying to build up our understanding
of which linguistic features do not work, and which features should be
avoided.

In summary, we should kill PHP and JS, but we should have empathy for those
who use these languages, and we should make sure that we learn from the
mistakes which these languages embody as we step forward.

~~~
cafard
Empathy for the kids at Facebook with stock options?

------
shoefly
I had a Python developer proclaim to me that Java was stupid and Python was
great. It was a funny moment for me. You can get a lot of things done faster
in Python, but performance is much better with Java. People in glass houses
should not throw stones.

~~~
spriggan3
You need both statically typed language and interpreted ones. But interpreted
languages should only be the glue that is used with restrain and care, it
shouldn't be the heart of a system.

You said it yourself, sometimes you need things to be done faster, but most of
the time systems should be robust. Python is an excellent companion to Java.
Python is one of the most versatile language out there while Java is one of
the most robust.

------
michaelfeathers
I think the real problem is being able to distinguish between criticism of a
language and criticism of the people using it. The former is ok, the latter
isn't.

If we take a criticism of a technology we use as criticism of us, it's a
rather unhealthy state to be in. Technologies come and go. They aren't
something we should immerse our identity in.

------
ixtli
I have always thought that one of JavaScript (or at least the community's)
best assets is the fact that no one defends it as "the best" or "the next big
thing." Everyone embraces discussing its faults or mocking poorly written JS
and admitting that it happens a lot. I think this allows the community to be
honest when teaching people how to avoid its pitfalls and puts the spotlight
on frameworks and libraries that encourage good patterns.

------
david-given
I remember this from last year, but there's no timestamp on the article. Does
it need a (2015) in the title?

~~~
damagednoob
I think it's relatively new. There's a podcast where the topic is dicussed in
more detail: [https://devchat.tv/ruby-rogues/273-rr-contempt-culture-
with-...](https://devchat.tv/ruby-rogues/273-rr-contempt-culture-with-aurynn-
shaw)

------
dang
When I reach the "Shut. Up." section the article feels more like a re-
expression of its subject than an overcoming. These tendencies are harder to
overcome than they seem. They're slippery, and there's good in them as well as
bad.

------
Roboprog
Perhaps some of the contempt is due to suffering at the hands of management
who insists that there is one golden hammer (language) that must be used for
all problems.

Not being able to switch tools for different tasks is a source of frustration,
and this frustration WILL find a vent :-)

------
meira
Do OP thinks that what we accomplished until now with this mindset isn't a
great achievement? I understand the point about minorities more commonly get
stuck at considered worse technologies -I got stuck with PHP for 7 years - but
help them to stay more comfortable with these tools will do no good. They will
get siloed.

~~~
eyelidlessness
I too was stuck using PHP for years. Both for career (that's the kind of jobs
I was getting) and cultural (exactly what the article is talking about)
reasons. Encountering more inclusive peers using other technologies didn't
make me feel more comfortable using PHP, it made me feel more comfortable
trying new technologies.

