
Stack Overflow and the Zeitgeist of Computer Programming - ryan_j_naughton
http://priceonomics.com/stack-overflow-and-the-zeitgeist-of-computer/
======
kevindeasis
There are so many things to know nowadays. Backend: Sql, NoSql, NewSql, etc.
Middlware: Django, NodeJs, Spring, Groovy, RoR, Symfony, etc. Client: Angular,
Ember, React, Jquery, etc. I haven't even mentioned hardware, security,
servers/cloud, and api.

Now you also need to know about theory, UI/UX, git, deploying servers, HTTP,
scrum, software development process, testing.

Then you have to keep up to date with all of the trends and know which
framework to use in which scenario.

So, I wrote all of that in a minute. You can just imagine how frustrating it
is to learn all of that and be expected not to look at any help or reference.
You have to be crazy to have expectations that high in expecting programmers
not to use stack overflow.

You burn soo much cognitive resource if you don't use stack overflow. Also, it
helps you learn soo much faster. If I go to AWS there is so much jargon in
that documentation, which could literally be explained in a simple sentence.
Oh and guess what, that simple explanation is in Stack Overflow.

~~~
sotojuan
> There are so many things to know nowadays.

Honestly... not really. Unless you want to know everything out there. My
college classmates are doing fine in their job search just knowing Java (no
frameworks!) and SQL, just Python, even just one JavaScript framework, etc.
Whatever else they need they'll learn in the job without much stress.

I honestly think this "need" of knowing as many APIs as possible is
exaggerated online, partly thanks to blog posts or tweets of senior devs
saying "X is this new good thing, Y is old and bad!" (which seem to be a
weekly occurrence) and perhaps start ups since they don't have time to mentor
because they have to grow ASAP. That works fine for them, but don't think it
applies to every company.

Seriously, take some time off the internet and you'll quickly stop caring.
Unless you enjoy learning so many new things!

~~~
rplst8
I hate to break it to you, but knowing "just this and this..." won't get you
very far when the thing you know is no longer popular, becomes infrequently
used, or worse, is no longer supported. It also doesn't help you if you want
to branch out into things that Java/SQL/JS/Python don't really support that
well. It also won't help you if you switch focus mid-career, which people
often do, from say web development to embedded systems.

No one sane is claiming that every programmer needs to know as many APIs as
possible, but knowing they exist and being able to quickly find information on
them is probably a requirement as you progress in your career. SO is a good
place to spin up on things IMO. Is it the best way? I don't know - but it's
helped me out a lot, and not for the purposes of cutting and pasting code
snippets. It has literally helped me learn, syntax, paradigms, etc. in
languages I use infrequently.

------
lordnacho
SO is great for finding specific things. If you understand fundamentals it's
easy to port your knowledge to some other framework by just googling, and
you'll end up on the right SO question. What's the syntax for making a
dictionary in some language? What do they call the dictionary in that language
(map maybe)? How does the && work in the new c++? And so on.

It's much harder to learn stuff that isn't specific on SO. Things like working
practices, what kinds of architecture are out there, and questions where what
you're after is a kind of survey.

One thing I don't get is the speed with which the top answerers can get back
to you. I've personally had questions answered by Hans Passant, Jon Skeet,
Marc Gravell, Martijn Pieters, and probably a few others off that top list.
Sometimes it's within minutes. Is their daily life substantially to answer
questions about the technologies they are associated with? I work all day as a
coder, and I don't have time to sit there and type out answers.

~~~
osullivj
Hans Passant is godlike for Win32 C++ issues...

------
seansmccullough
I view Stack Overflow as a good resource to overcome
technology/language/framework specific common pain points, to get you
"unstuck".

I don't think posting your homework/work project and hoping someone on the
internet will complete it for you is the intended use of Stack Overflow. The
people allegedly using Stack Overflow instead of learning CS fundamentals will
last long in the industry. (Who are these people?)

~~~
mark-r
My favorites are the ones who simply copy/paste their assignment text. Are
these people really so clueless?

When it's obvious that someone is fishing for homework help, I'll try to post
a hint as a comment rather than handing out an answer on a silver platter. The
goal is to provide a path to understanding. Unfortunately there is always
someone as clueless as the OP who will provide said silver platter.

As much as I've been helped by StackOverflow, I hope I never have to work with
one of those frauds who grew up asking instead of thinking.

~~~
madeofpalk
My _professional_ favourite is when people past in the text from our do-at-
home programming exercise as a part of our recruitment process.

~~~
mark-r
Given how quickly Google indexes StackOverflow, I'd imagine that results in an
automatic fail.

------
escherize
I shudder to think of the human-hours that SO has saved the world. It is one
of those sites that saves you time and effort, as opposed to being a time-
suck.

~~~
anentropic
...until you get addicted to answering questions

~~~
eru
Those addicts are still a net positive for humanity.

------
ChuckMcM
There is a lot of churn in this space. Frameworks, languages, operational
methodologies. When we were recruiting at Blekko and we explained that most of
our code was written in Perl5, it had an interesting effect on candidates.
Either relief because they knew we weren't going to pull some specific set of
technologies out of the millions and demand 5+ years experience, or angst
because they knew that working on code at Blekko wouldn't add any of those
dozens of technologies to their resume.

At some point there is an operational advantage to having a consistent set of
core technologies. If we make it so that the only way engineers can be
successful is by constantly looking up answers on SO or elsewhere, then I
think we've failed as an industry.

~~~
thewarrior
Hey there Chuck , always enjoy reading your comments and asking your for
advice.

As a young engineer , I constantly get the feeling that I'm falling behind and
that I can't be maintaining any single project for way too long.

One reason I think I must learn new languages is that projects written using
new languages will be new stuff that's written from scratch. There's nothing
wrong per-se with say Java but the odds are that if you have Java experience
you'll probably be stuck maintaining some decade old enterprise app.

The same can be said today for say RoR. However if you're applying as a Go or
React.JS developer you get to work on a lot of new stuff whereby you get to
learn a lot more by writing whole projects from scratch.

So in such a highly competitive market people can't be blamed for being so
buzzword driven.

Maintenance experience is not at all valued in the industry and people who do
maintenance are looked at as lesser beings. That's the reason we keep throwing
things out and reinventing the wheel.

Everyone needs to create a me-too JS framework and put it on Github so they
can get hired by claiming that they're some open source rockstar.

Personally I just keep running to stay in the same place and end up learning
nothing in depth because I'm spread too thin.

~~~
ChuckMcM
I pretty much agree with everything you say here. I wonder about the
dissonance between _"... a highly competitive market ..."_ and the narrative
that there is a tech worker shortage. Sometimes I find the recruiters do
people a disservice when they suggest candidates amp up the buzzwords on their
resumes.

------
isido
At the end of the article:

 _Our next post examines how much urine splashes back on you when you use a
urinal._

The range of articles is... interesting.

------
an0nym1ty
Anyone have comments/inisght as to why Clojure would have lost traction over
the past year? Just curious as my impression of the language is that, relative
to other functional languages, it's very useful for highly parallel
computational analysis (see: ML/AI, data science, CFD/FEA, numerical analysis
etc.). Many of these sub-fields are "in vogue", so I would have expected to
see the opposite trend...

Anyone have insight they could offer? Thanks

------
ggarnier
Ironically, StackOverflow devs themselves don't seem to care about software
quality:
[https://news.ycombinator.com/item?id=10519600](https://news.ycombinator.com/item?id=10519600)

~~~
Shog9
Quality means many things... When it comes to the experience of the people
using the site, performance - how long it takes the requested page to display
- is critical; the vast majority of Stack Overflow's page requests are someone
requesting a page that they urgently need to _read_.

That doesn't preclude other aspects of quality of course. But it does
influence how they're approached. A heavily abstracted system that hurts
performance is unacceptable, but there are other ways to achieve the same
ends.

You might find this article interesting...
[http://samsaffron.com/archive/2011/03/30/How+I+learned+to+st...](http://samsaffron.com/archive/2011/03/30/How+I+learned+to+stop+worrying+and+write+my+own+ORM)

~~~
ggarnier
Yes, I know performance can be critical for some products - and that's the
case for Stack Overflow. But I think you can't simply ignore other aspects
like maintainability or security.

This article from Sam Saffron is very interesting. He was very reasonable
testing the ORMs available, and only after realizing that none reached the
performance he needed, he decided to write his own. The problem is when people
do that and "reinvent the wheel" without searching if someone already solved
that problem for you.

~~~
Shog9
It's probably difficult to convey the scope of Stack Overflow's development in
the span of a talk; I strongly encourage you to read the blogs of past and
current developers, as they often go into far more detail about the concerns
involved and the extreme care taken. The architecture itself is interesting,
but IMHO it pales in comparison to the process that created it.

------
youngButEager
STACK OVERFLOW: "Curation by Humiliation"

The main problem is posing as a question and answer site, yet wanting to be
the go-to reference on the web for getting accurate helpful solutions.

The people asking for help are _not_ there (most aren't) because they heard
about this fantastic site that wants to be the go-to reference on the web for
getting accurate helpful solutions.

The people asking for help don't want (most don't) to build the go-to
reference on the web for getting accurate helpful solutions.

They want programming help.

It's a trick SO has been playing for years. Not that they'll ever realize it.
The founders may not deep thinkers. Or they realize what they're doing and
don't care.

After all these years, the founders have not fixed the SO problem. They have
failed to address the conflict of asking knowledge-needy users to help build
the go-to reference on the web for getting accurate helpful solutions without
subjecting them to cruelty.

It's conceptually simple, and a bit of a bait-and-switch.

They pitch the site as a question-and-answer site. In the field of education,
it is extremely counterproductive and cruel to subject someone lacking a bit
of knowledge, and for whatever reason they lack it, to berating. It's just not
accepted. If someone asks a question you simply do not humiliate them or
berate them, or 'close the question', or edit the question they asked! It's
not even the asker's question anymore if another user edits it! Curation by
humiliation.

In any normal, respectful setting that promotes itself as a source to get help
-- a "question and answer site" \-- if an authority figure in that setting
berates someone who lacks a bit of: \- knowledge \- or even the style or
manner of how they ask questions

that authority figure would be fired, dismissed.

It's _extremely_ unfortunate that the founders of SO are not brave enough (or
deep-thinking enough?) to realize that failing to disclose to Users the truth
about the potential cruelty, embarrassment, and humiliation they might suffer
using the "question and answer site" \-- is shameful.

If a school or university allowed any educational authority figure (like
moderators, etc.) to berate and humiliate people with less knowledge than
they, the institution would find itself in trouble.

Some of us believe the founders realized that if they told the truth -- "we're
casting a big net, a lot of you who fall for the 'it's a question and answer
site' are going to be humiliated by the moderators and other users who know
more than you do" \-- the founders probably realized if they had full
disclosure of the "curation by humiliation" process, no one would use the
site.

The fact is, the majority of SO users have been subjected to this "curation by
humiliation" but are hesitant to speak out about it.

~~~
danbruc
Q&A isn't necessarily Q&A, it really depends on the audience you target. If
you attended an advanced mathematics course would you really be surprised if
the lecturer refuses to answer a basic question you are just supposed to know
the answer to as a prerequisite? Yes, it comes across as rude but there is a
tradeoff because answering it wastes the time of everybody else in the room.

I was pretty active in the first years of SO but over time essentially stopped
answering questions and that mostly because the question became less and less
interesting. Questions you couldn't easily find an answer to got more and more
replaced with questions that are easily answered by just reading the manual of
whatever you are trying to use or learning to code to begin with. Another
factor is that I got more knowledgeable over the years and previously
interesting problems now seem trivial but I am pretty sure this is not the
main contributing factor.

Now it depends on what you want SO to be or what it is supposed to be. A
source of solutions for non-trivial problems or a copy of or link to the
manual of everything out there plus an introduction to software development? I
thought of SO as a source of information that you couldn't easily get from
manuals, now it looks to me more and more like a collection of manuals, so I
lost interest.

