
Why programmers will never be the brightest and the best - scandox
http://www.selectedintelligence.com/post/158441261184/why-programmers-will-never-be-the-brightest-and
======
tboyd47
Great article. Sums up a lot about how I feel about programming as I get older
(and what I hear older programmers saying). Having to consume and retain so
much complex mind garbage every few years just to still be told what to do
gets pretty old.

But the one thing I still enjoy about programming, after all these years, is
being in the center of a number of concerns and having to negotiate them all,
while still delivering something of value on a fixed time frame. There's a
certain thrill to seeing the legislative, executive, and judicial branches of
a huge process converge on one person, even it's for the tiniest moment about
minutest of details, and have that person be you. Simply because no one else
thought of some important problem, it fell into your lap and suddenly you were
responsible for solving it, and you had to think on your feet. Then you get to
explain to everyone else what you did, why you had to do it, and what the plan
is going forward, and no one has any option but to nod their head and say,
"Hey, thanks! Good job!"

There's a certain type of engineering mindset that sees this as a failure of
process, and likes to hand out blame for letting such power fall through the
cracks into the hands of a random developer. But to me, it's become the only
fun aspect of the whole occupation. If it happens to me once a year, it's the
highlight of my job for that whole year.

~~~
majkinetor
Fantastic comment. You totally explained how I feel, and I couldn't really
articulate it.

------
mcphage
> We all accept, to a greater or lesser degree, that the end user of our work
> is the one that matters. In theory. In practise most programmers have a mix
> of dread and revulsion for the user. Even when the user may be a future
> self. Look at Dahl’s language in this supposed paean to the user.

>> “The users - the one who just want to see a webpage - don’t care.”

> Yeah users. Those passive consumers of stuff. How he loves them.

I don't think you've got this right, here. When Dahl says that users don't
care about those things, he's not insulting users. It's true, they don't care
about those things. But that's not a criticism; why should they care about
them? They've got their own things to worry about, their own concerns and
goals and none of them are served by having to care about the morass that
we've created. You're reading it as "users don't care because they're too
stupid to know that this stuff is important", Dahl meant it as "users don't
care because how dare we waste their time with this shit?"

~~~
jasonkostempski
I think a more descriptive, more accurate, less catchy phrase would be "The
stakeholders - the ones utilizing the results of your software - don't care
how the results are created as long as they're easily accessible, accurate and
timely. And don't forget, developers are users too, often the way something is
written or the way it behaves at a lower level is actually important to them."

------
rb1
Is this why I find myself awake at night reading papers about The Foundations
of Mathematics, Quantised Inertia or Squeezed Light (for some random examples
taken from my history). I've been writing C++ for "too long" now and
subconsciously my intellect is grooming me to move into something else?

------
kazinator
> _But hacking on systems that are being used in production? Why would an
> intelligent person would want to spend time fighting with 30 years of
> someone else’s errors and accumulating a vast store of arcane and ultimately
> worthless knowledge?_

How about: because that intelligent person is paid at 2 to 3 times as much as
an academic working strictly on original ideas, and $Infty$ more than a
hobbyist working strictly on original ideas.

That work doesn't preclude them from having intelligent hobbies, and side
projects that may well outstrip those of the impoverished academic or hacker.

------
majkinetor
There are different types of users, and that is why the original user argument
is strange.

On a large project, every programmer is a user, every engineer, stakeholder,
analyst, tester, service desk guy, hundreds of people, all with different
powers on the final system.

That is why we build all those complexities - different aspects for different
target groups.

------
bloaf
I'd argue that there are essentially two problems in computer science:

1\. Math.

2\. Dealing with the hardware.

Virtually all the ugliness is a product of the interface between these two
areas. Dealing with the hardware requires a fascination with minutiae and
imperfection, while working in Math requires a fascination with generalities
and perfection. The people on the math side create systems like Haskell, which
let you express very abstract concepts, and reason very generally about your
code, but make dealing with hardware issues difficult. The people on the
hardware side use things like Forth, which is very powerful for building code
that works closely with the hardware, but whose paradigms actively discourage
the generality present in many other languages.

And so, what's needed is someone who can develop a system that can fully
express high level math concepts in such a way that there is a straightforward
mapping to the messy world of hardware capabilities.

However, I think the "killing blow" for pure programmers' motivations comes
when they realize that mapping between the pure world of math and the messy
world of hardware isn't enough. The focus on "end users" is the tacit
admission that even if you do successfully build a beautiful system, most
people don't want to work at a high level of mathematical abstraction. If you
really want to revolutionize computer science, in order to accomplish the
actual revolution, your system needs to be able to let people work in the
terms they're already comfortable with:

(messy world of existing programming languages) -> (your pure math) -> (messy
world of hardware)

But I don't think these hurdles constitute a "great filter" in the sense of
the original article. Its just a quirk of human nature that the people
interested in the pure math bit in the middle tend to find the messes on
either side tedious and unnecessary for their insights.

What essentially ends up happening is that the people who are only concerned
with intellectual satisfaction get such a big dose of satisfaction from the
pure math in the middle, that they never bother with the messy bits on either
side. So I've found that the people who do the most impressive work have some
external-to-computer-science itch they're trying to scratch. People like
Christian Schafmeister[1] whose chemistry aspirations led him to create a new
Lisp to glue together C++, Mathematica, Maxima, and Fortran in such a way that
he can highly efficiently express and compute the math he was trying to solve.
These kind of people fight through the messy world of existing languages to
express the pure mathematics of their field in such a way that it can run
efficiently on the messy world of hardware.

[1]
[https://www.youtube.com/watch?v=8X69_42Mj-g#t=17m25s](https://www.youtube.com/watch?v=8X69_42Mj-g#t=17m25s)

------
pragmatic
Because money.

