
Angry Programmers (2013) - scandox
http://www.selectedintelligence.com/post/47182940161/angry-programmers
======
snarf21
I don't get this at all. I've been at this over 20 years and the only times I
get "angry" (or more realistically, frustrated), is when the powers that be
are adamant that the team spend months building a feature that no one wants or
has no justification or is the feature we removed two years ago or there is no
vision for what we are collectively trying to do. Digging a hole and filling
it back in each day is very frustrating and can lead to anger.

Programmers do get a dopamine high for solving things, creating things. But
for me, this isn't about how _genius_ we are but about making someone's life
easier or better or providing real value to the company or customers. Right
now, I'm spending most of my time adding features to a web portal/console with
the sole intention to reduce tech support and enable scaling. There is
_nothing_ hard or genius about it. It is about understanding the real issues
and making tools to solve problems. And when I succeed at that, I do get a
rush. Yeah, me.

Years ago, I worked at a company that had a computer vision based software
product. The internal object structure was a nightmare. (Whoever wrote it
initially had obvious just read their first OO programming book and decided to
_abstract all the things!_ ). Each customer project had a configuration file
that described all the tests and objects and connections. There were some that
took over 45 minutes to load! With a little (2 days) profiling, I could see
the biggest time waster. So, I add a map<object,name> to simplify the object
connection process. Nothing _magic_ or _genius_ but it reduced the load time
to 7 minutes! Not all valuable computer science work needs to be creating a
new technique for neural networks. 90% of all things we need computers for is
a simple UI and CRUD to a data store. It doesn't have to be genius if done in
a way that adds value, then it is worthy of pride, not anger.

~~~
ditonal
>I don't get this at all. I've been at this over 20 years and the only times I
get "angry" (or more realistically, frustrated), is when the powers that be
are adamant that the team spend months building a feature that no one wants or
has no justification or is the feature we removed two years ago or there is no
vision for what we are collectively trying to do.

Constantly amazed at how often this has happened to me. The worst is the fake
"agile" terminology when you're doing the opposite. MVPs that are neither
minimal nor viable nor a product. Two week sprints that stick to the Gantt
chart we made 6 months ago no matter what the customers/target audience tell
us. Spending more time talking about the work we've done and plan to do than
actually doing any.

The empire-building as well drives me nuts. We need more people! Don't know
what projects they will specifically do, communication and collaboration
overhead is already slowing the pace down to a crawl, but we need more people.
That way I can say I "led" a large team of engineers on LinkedIn. Wish these
people obsessed with "leading" people could all be replaced by people obsessed
with leading products.

Always amazed me that I could make $8 an hour serving pizza in high school,,
but clearly delivering economic value to people, then find so many people in
the world who can raise so much money money or headcount and pay me ten times
as much so I can deliver absolutely no value to anyone.

I know we were talking about how most stuff _doesn 't_ make us angry though :)

I think I was always above-average intelligence (top 20%) but I don't think
I'm close to a genius. Sure, people pay me money to do things and of course
many of them could do it themselves if they learned how, that much is obvious
to me. I pay a lawyer money but I'm pretty sure I could have become a lawyer,
it's not an insult to their intelligence, we all specialized, that's how
economics works.

I think a lot of programmers get angry because they're young and poorly
socialized, my past included. Getting motivated to improve that which can be
improved is good. Looking out for yourself and not being a doormat to the
sociopaths that VC and management tends to attract is good. Doing the above
without getting angry about what is usually trivial in the big picture is
best.

------
lhnz
> The universe is so structured that most programmers find themselves solving
> problems of exactly that complexity which it is just barely within their
> competency to solve. In other words they feel as if they’re solving quite
> difficult problems a lot of the time. Hence they feel very smart.

I don't know about other's here, but this is the opposite of my experience. I
feel under-employed because I'm constantly solving problems which are way
below my competency. (That's not to say that I'm smart; just that the kind of
work most people have to work on is insanely easy, and many probably feel
'above it'.)

When I get angry it's almost always because I'm bored out of my skull, and
need to take a break to do something creative or intellectually surprising.
The original post seems to pin anger on jealousy and not boredom. And at any
rate, whether or not you are angry because you are jealous or because you are
bored, the solution is to take a break.

> In fact, sometimes they may get the feeling that someone who doesn’t program
> at all, could readily do it if they were bothered, but since they can get
> other people to do it for them, consider the whole thing a little trivial.

This is arrogant. There are a lot of people that can avoid programming, but a
majority of these people wouldn't find it trivially easy. It's a skill set
which actually takes quite a long time to build up, and having good people
managing skills isn't likely to help.

All I can really say after reading this, is: generalising other people's
psychology, choice of work, and perceptions about their work isn't a good way
of understanding them or working with them. The fact that this person decided
to make a blog post of it as if it was a clever way of understanding 90% of
programmers is just an embarrassing reflection of themselves.

~~~
matwood
> I feel under-employed because I'm constantly solving problems which are way
> below my competency. (That's not to say that I'm smart; just that the kind
> of work most people have to work on is insanely easy, and many probably feel
> 'above it'.)

This leads to injecting tool complexity. The JS world is a good example where
it seems sometimes people are bored so they inject tool complexity in order to
not be bored.

~~~
javier2
Heh. As a dude who makes his daily grind with java, I am convinced this is
what happened with java from 2001-2010...

------
deweller
I found this insightful.

I've been a professional software developer for 20 years. In the early days, I
would experience thoughts like "I just figured out an elegant solution to a
hard problem. I am a GOD AMONG MEN!!!!"

About 5 years in, I started to lose that "high" I would get from programming.
That feeling came less often and was less powerful. I experienced some mild
depression and general health issues. It occurs to me now that I was likely
dependent on that dopamine high.

I'm sure some programmers burn out during this phase. Somehow I made it
through.

These days I still enjoy my work, but I'm no longer chasing that dopamine
high. I still stumble upon it every once in a while. But I recognize that it
is a fleeting experience and I just go with the flow while it lasts. And when
it is gone, I am still able to get work done. I've learned to be productive in
both states.

I think many developers (and tech. companies) could benefit from more
education and study about this topic. I think it affects us more profoundly
than many of us realize.

~~~
swiley
I think when you stop experiencing it that's a good indication that you should
start learning other things. I like that idea that you should try to become an
expert in something every 5-10 years. (not that you should stop the old
things)

------
scandox
Author here. People seem to be applying a lot of very different
interpretations to this. Which means I either did a good job or a bad job,
depending on your feelings about ambiguity.

For clarity, I wrote this 3 years ago after a conversation with an elderly man
who asked me why his son was so angry. He'd heard I was a programmer and he
told me his son was a programmer and he felt convinced the work was the root
of the problem.

I put forward the theory here with a characteristic lack of tact or
sensitivity. The next day I wrote it up and forgot about it until now.

So contextually, it was very much about mental health.

------
codeonfire
All a programmer has to do to show his or her real power is utter the words 'I
quit.' Then all the obviously more intelligent and better looking managers and
business people start to lose their shit.

~~~
onion2k
At face value you're right. Threatening to quit should leave managers in a
panic because no one else can do your job.

There's two main reasons why this might be the case.

The first is because you're actually not very good. Great code can be worked
on by someone else, which means if you not easily replaceable then it's
because your code isn't easily accessible to other developers or there's
knowledge that you haven't documented properly. In this case any competent
employer should readily accept your resignation.

The alternative is because you're the absolute best your employer can get _for
what you 're paid_. You could be _amazing_ but there's always someone better
if the employer is willing to write a bigger check. They could replace you
with a team of 20 if they're willing to pay enough. In which case your
employer has to choose whether to agree to your terms to keep you or to pay
more and get someone who'll agree to _their_ terms. Never underestimate how
much an employer will pay to get their way.

~~~
dominotw
> if you not easily replaceable then it's because your code isn't easily
> accessible to other developers

No matter how good your code is it would be impossible that someone can hit
the ground running right away. Meanwhile there are deadlines to meet.

~~~
onion2k
_Meanwhile there are deadlines to meet._

Deadlines can be moved. Resources can be allocated to projects to account for
unforeseen events. Penalty payments can be paid. It's definitely not ideal but
often established businesses can cope with someone leaving unexpectedly. It
can kill a startup, but so can most things.

What I'm saying is that you shouldn't be too surprised if a threat to leave is
met with "Oh. That's a shame, but nevermind. Bye." You may feel you have a
great deal of power over your employer because you see your role as important
or even critical to the business, but they might see your role _very_
differently.

~~~
JoeAltmaier
Usually because your employer _has no idea how important you are_ to the
effort. Often employees have regard for developers based on fame or project
they've done before. Rarely on skill or how important they are to current
efforts. When asked who were the most important developers to our OS group,
the engineering manager named the original team that created the project. He
got a perfect score - completely wrong. They had all moved on and the current
OS team were young folks, new hires and recent additions. Including me at the
time.

Be very diligent about communicating! You can easily get forgotten in a larger
effort.

------
gravypod
> Occasionally an awareness may filter through that the kind of difficult
> problems they solve, are the dull trivialities of some other programmer’s
> daily bread

Radar is one of the magic voodoo technologies that is hard, if not sometimes
impossible, to get right. In theory it's extrmeley simple. Anyone with any
background in radio knows just how "easy" radar is. You throw a 70cm or
shorter wave at something and wait for it to get back. You can also stance two
70cm transmiters (one in front of the other) at diffetent fequencies and using
the known distance of the 2 transmitters, the known speed of the wave in the
air, and the time of arival of the two waves very simply calculate the speed,
distance, and direction of an object. Look up "Doppler Frequency Shift"
equations and also just wave velocity. It's dead simple.

Now, given that information I can also talk about how amazingly difficult
radar is to implement. All sorts of noise in collection and extremely small
errors in sampling can throw your reading far off (in most states in the US
that's why there is a +-10MPH speed gratice applied to radar guns).

If someone was to go through and by themselves solve every little problem
associated with radar and build a microwave-based radar system I'd be really
fucking impressed [0].

This is because radar is hard and the act of tackling every little challenge
associated with building it. Just because other people have built radar
systems and some people do so every day doesn't mean it isn't hard or you're
not advanced for doing so.

Radar is a bit of an extreme example but I think the methodology still applies
to making massivly parallelized programs, or synchonization and elimination of
race conditions, or learning all of the tricks to get your program into a
small space, or even perfecting UX/UI for your users. It doesn't matter if
other people have solved it, if you're also solving it on your own then you're
just as smart as the others before you who came up with the idea and did it
themselves as well.

I do think it's valid to say many programmers are big headed but I think
that's just the online space of programmers. Most programmers I've met in real
life are really nice and humble people who are just excited to get-shit-done.

[0] -
[https://www.youtube.com/watch?v=Dhp21FxttWM](https://www.youtube.com/watch?v=Dhp21FxttWM)

~~~
okramcivokram
> If someone was to go through and by themselves solve every little problem
> associated with radar and build a microwave-based radar system I'd be really
> fucking impressed.

Check out Henrik's Blog [http://hforsten.com/](http://hforsten.com/)

~~~
gravypod
This is amazing work! Kudos the Henrik.

------
Kenji
Wait, what? It seems like this person is projecting their own problems on
everyone else.

The realization that you're not a genius and that there are more competent
people around and that programming is often not research but actually
engineering, you should have that realization in your late teenage years or
early twenties when you go to university or work hard on acquiring computer
science skills.

------
lexicality
I dunno about that, I tend to get angry because someone has solved a problem,
taken the dopamine hit and walked off without making sure their solution was
correct.

------
merb
What I get angry about is that some people just underestimate the time to get
a program ready for production. Of course I can write a program in a week. But
I doubt that it will be easy to update and will have more bugs than a program
that was written with longelivity in mind with a proper time frame.

------
nunez
My experience has shown that, quite frankly, many programmers seem angry
because they don't like and/or arent good with people.

~~~
jimbokun
Right they need more "people skills":
[https://www.youtube.com/watch?v=mGS2tKQhdhY](https://www.youtube.com/watch?v=mGS2tKQhdhY)

------
mutexe
"Programmers that think they are geniuses account for about 90%. Programmers
who think they are pond scum, 10%". I stopped reading here. Maybe it was the
author's first day at work..?

------
spacemanmatt
Sometimes I wonder how much smarter I'd be if I'd never gotten into computing.

~~~
jeremiep
How is knowing something different "smarter" ? Its just another domain.

~~~
arctangent
I think spacemanmatt might be implying that working in IT has a tendency to
make one feel stupid. ("The more you know about IT, the more you realise you
don't know about IT.")

This isn't unique to IT. There are many fields where there are always new
things to learn. However, a career in (say) selling cars or owning a
restaurant would require much less lifetime learning.

------
jimbokun
There is some truth to this thesis.

However, it is a problem successfully solved by many programmers.

Bezos. Gates. Larry and Sergey. Zuckerberg. DHH. And of course, Paul Graham.

You might say this is the whole reason YCombinator exists.

"The real reason we started Y Combinator is one probably only a hacker would
understand. We did it because it seems such a great hack. There are thousands
of smart people who could start companies and don't, and with a relatively
small amount of force applied at just the right place, we can spring on the
world a stream of new startups that might otherwise not have existed."

[http://paulgraham.com/whyyc.html](http://paulgraham.com/whyyc.html)

Reading between the lines slightly (and I believe Paul said this more directly
in an article I can't find right now), Paul believed its easier to turn great
hackers into great business people, than the other way around.

So yes, at some point spending all of one's time programming yields
diminishing returns. But its perfectly possible for someone smart enough to be
a good programmer to also learn how to solve problems requiring more than one
individual's contribution.

------
vuldin
I actually enjoy being able to break supposedly complicated tasks or projects
down into something that anyone I'm talking to about it can understand.

Basically I don't think I'm better than everyone else, and so I don't get
upset or depressed when it's proven that I'm not.

------
Pica_soO
"... fact, sometimes they may get the feeling that someone who doesn’t program
at all, could readily do it if they were bothered, but since they can get
other people to do it for them, consider the whole thing a little trivial.
That is a very unpleasant feeling. Sometimes they may get the feeling that a
whole class of persons vastly more intelligent than themselves don’t even care
to know how a computer works: it is possible!"

Every time that happens, i make a new project to kill that persons meaning in
life or their job. Yeah, you make nice bonsai's- so i made a bonsai cutting
robot. Yeah, you relish wielding power and talking down to others- but my
neural network is better at that. Next project: Make a blog-bot, that trys to
reduce other peoples confidence to ash.

Stops the anger every time.

~~~
Bahamut
I don't think you understood the post.

I used to be one of those people in that quote - I found programming too
simple/easy, and ended up doing math and physics, subject matters of far more
complexity. I only ended up programming because I needed work afrer grad
school and after 2 1/2 years of job searching, I got lucky and someone took a
chance. To this day I continue to be happy about my line of work - it isn't
particularly difficult (frontend web development primarily), but it lets me
solve little problems and keep my mind engaged while paying exceedingly well.
The perspective shift from being unemployed with dubious prospects makes me
not care about how I am relative to the rest (although in my domain, it turns
out to compare very favorably).

~~~
ThePhysicist
I really don't think that it's possible to rank disciplines like math, physics
or computer science by complexity and say "physics is so much more complex
than computer science". There might be areas of physics that are very complex,
like string theory (which probably belongs more to mathematics though), but
there are also very complex and hard problems in computer science (or even
programming!) that no one was able to solve effectively up to this day: As an
example, we're still struggling to design a programming language that is easy
to learn and use and at the same time efficient and safe. And I think if we
took 100 string theorists and put them up to the challenge of building such a
language there is a very small likelihood that they would succeed (I even
think there is a large probability that they would scr*w it up in a
spectacular way).

I worked in quantum physics myself and have a PhD in experimental quantum
computing, but still I consider writing good and reliable software a
tremendous challenge, and often I initially fail at it when building large
projects. I'm now mostly working on data analysis and static code analysis,
and I consider these two fields to be at least as complex and stimulating as
my earlier work.

I think what we as programmers need to realize is that we're not better (or
worse) than anyone else just because we can write software, and we also need
to realize that building anything usually requires people with a variety of
skills, both technical and non-technical. Most of our work would be entirely
useless on its own, it just derives meaning within the context where it's
used.

Therefore, in my opinion the real "10x" programmers are not only those that
can churn out brilliant code at an amazing pace, but those that understand
their own work in the context of the project that this work supports, are able
to effectively and efficiently work with everyone else on the team to support
it, and do not have a mental ranking of job professions that classifies people
into "high" and "low".

------
xiaoma
> _So here we have a dopamine’d up, blissed out little programmer..._

The author referred to programmers as "little" repeatedly throughout the blog
post in a manner disturbingly reminiscent of a certain politician's successful
tactic to smother an opponent in recent primary debates.

It's just being nasty. Whatever truth scandox is trying to share is hampered
by his own apparent anger and condescension.

------
mooreds
Great post. Now I have understand a bit more why I am grumpy when stymied at
work.

That said I think that anyone who loves what they do would be a bit annoyed if
someone else treated the work done as something just to be paid for as
inexpensively as possible. Angry? I don't know about that. I do the see why
programmers/developers would be different.

------
triangletodd
Lost me at the first paragraph. I know many very competent (even amazing)
developers who THINK they're pond scum. Imposter syndrome is very real. On the
flip side, the developers who think they know everything and lack the
knowledge to know what they don't know are the scariest.

------
kahrkunne
What a patronizing, miserable article. I found this a very unpleasant read.

Which is kind of a shame, because he does touch upon a very good point.

~~~
kelvin0
That 'unpleasantness' is due to a part of yourself recognizing some truth and
being uncomfortable with what the mirror projected back. It's normal, all of
us experience it. It's very useful to analyze why something makes us feel this
way and better understand ourselves.

~~~
kahrkunne
No, it's definitely unpleasant because it makes 90% of programmers look like
arrogant assholes and talks about "our little programmer" in a patronizing
way. The final sentence touches upon some correct things, but as far as I can
tell many programmers aren't arrogant; rather the opposite, they have imposter
syndrome, caused by the fact that by nature, programming involves spending
hours on something that turned out to be trivial in the end.

I myself am not a developer, just a hobbyist; don't assume everyone on HN is a
developer

------
bryanrasmussen
hmm, generally when I suppose there are classes of beings of intelligence
vastly greater than mine I suppose they are sitting up on Mars watching the
earth with jealousy.

Vastly more intelligent not just more intelligent but vastly. Wow.

------
mrwnmonm
god no, this post reminds me how i was looking at it, i started to deal with
it in another way, it is just a fun money source until i start my own thing

------
jaclaz
[2013]

~~~
c517402
[Timeless]

