
Friction Between Programming Professionals and Beginners - niuzeta
http://www.programmingforbeginnersbook.com/blog/friction_between_programming_professionals_and_beginners/
======
mhurron
> Attempt to answer the question, or don’t comment at all. Don’t tell them to
> RTFM, Google it,

No, just no. There is no point to any of all this search technology and this
accumulated knowledge if no one uses it.

Someone asking a question that is answered in the documentation or has been
asked and answered over and over should be pointed at those sources. One of
the most important skills anyone is going to learn in a technical position is
finding answers to questions you have that have already been answered. The
next important skill they have to learn is doing a little bit of your own
research in understanding your problem.

This goes especially for places like StackOverflow which is not a discussion
forum. It's value is diminished by asking and answering the same questions
over and over.

EDIT: I'll mention the last part of the statement I quoted too, it's
unfortunate the lumped the second half of the statement with the first.

> correct their grammar, or give your opinions about their choice of
> technology

Correcting grammar is not helpful in any way in this context. If you can't
understand what they're getting at, ask for clarification. Nitpicking grammar
is just being a dick.

Opinions about what they're using may have one very narrow use, if what
they're using to do what they're trying to do is just so very wrong. And we're
talking 'I'm trying to create a pure HTML page to run this Nuclear reactor'
levels of wrong. Most of the time, you do need to keep it to yourself.
Especially on sites like StackOverflow, which is not a discussion board.

~~~
marknutter
> No, just no. There is no point to any of all this search technology and this
> accumulated knowledge if no one uses it.

And here we have a prime example of why beginners find the programming
community to be so abrasive, and worse, it's sitting at the top of this
comment thread.

Ask yourself, would this be the answer you give to a 12 year old girl who's
taken an early interest in programming? Or a single mother who's trying to
switch careers to improve her lot in life? Or your own mother, for that
matter? Is it really constructive to be so abrasive?

I'm starting to understand why we have such a problem with diversity in our
field. This type of response is, in no uncertain terms, the response of a
bully.

Pause for a moment. Try to remember what it was like when you were first
starting out with programming. When "the fucking manual" was actually really
confusing and loaded with domain specific terms, acronyms, and syntax. Can't
remember a time when you didn't learn something immediately? Fine, step
outside your world of programming and try to recall any painful memories you
might have about trying to learn something outside your area of expertise.

Ever go to a gym and ask someone how to do a basic lift only to be scoffed at?
Ever been to a foreign country and have someone berate you for not
understanding how to navigate through some strange process or not knowing how
to speak their language well enough? Perhaps you have, and it hurt, but you
brushed it off and continued on. That's great for you, but not everybody is
like that. A lot of people get discouraged and never continue with that sport,
or with traveling, or with programming, and it's tragic because they might
have otherwise excelled at those endeavors.

~~~
krschultz
Yes, it is the answer I would give to a 12 year old girl.

First off, why does your 12 year old have to be a girl? You are spouting off
about diversity but you basically just used the stereotype that teenage girls
are going to cry if you give them the hard truth. Why do we have to treat
single mothers with kid gloves? Guess what, diving through some docs is a lot
easier than anything a parent has to put up with.

3 of the 4 interns at the company I work for were women last summer, and they
kicked ass. While they weren't 12 years old, they were young, and I had no
issue telling them to start at the documentation.

There is a _massive_ difference between "read the fucking manual" and
suggesting "even if it takes longer, you will be better served starting with
the documentation and working through that than googling or using stack
overflow". One is bullying, one is teaching.

I _always_ teach my interns to start with the docs. Give the docs 30 minutes
before you Google or Stack Overflow. Give that 30 minutes before you ask a
senior engineer. Struggling through it is part of the process of learning. The
things you learn by going through the docs will help you later.

Or the shorter version, I want to hire someone that can answer Stack Overflow
posts not find them.

~~~
ktRolster

      > I always teach my interns to start with the docs.
      > Give the docs 30 minutes before you Google or 
      > Stack Overflow. Give that 30 minutes before
      > you ask a senior engineer. Struggling through 
      > it is part of the process of learning. The 
      > things you learn by going through the docs will
      > help you later.
    

This is a skill I wish more programmers had.

------
nv-vn
I can definitely recall how alienating the stack overflow community was to me
when I first started learning programming. You ask a simple question and they
yell at you to Google it. You ask a complex question and they ask you why
you're doing it. My solution was just to close myself off from StackOverflow
and try any other community. My experience with IRC hasn't been great, but
often my responses were miles better than what I would get on SO. Honestly,
the best advice I can give to beginners is to make friends who know a bit more
and go to friends first whenever possible (at the very least to help them make
a good SO post with proper terminology, etc.)

~~~
adekok
> You ask a complex question and they ask you why you're doing it.

As someone on the other side of those questions, perhaps I can explain.

Very often, people unfamiliar with a subject area ask questions about
solutions, instead of asking about problems. They've done a bit of googling,
and have a partial solution. But the solution doesn't work, so they ask "how
can I fix this solution."

To someone familiar with the problem space, the question is often nonsensical.
It's based on false assumptions about how the API / system works. So the
question is largely un-answerable.

The only possible response, then, is "Don't talk about the solution. Talk
about the problem. What goal are you trying to accomplish? Maybe there's a
different solution which can help you reach that goal."

This response can be seen as obtuse and unhelpful by the questioner. But it's
often the only possible response, given the incorrect assumptions.

e.g. Q: How do I get diesel into my gas car? The nozzle just doesn't fit!

A: Why are you trying to do that?

Q: Stop being annoying, and just help me!

A: No, really... why are you trying to do that?

(after some back and forth)

Q: My car is in front of the diesel pump, and the hose from the gas pump won't
reach.

A: Well... move your car.

It's not always that simple, but the back & forth is similar. It's hard work
convincing people that their assumptions are wrong, and that they have to re-
visit their assumptions, and re-do all of their previous work.

~~~
badloginagain
> Stop being annoying, and just help me!

I don't see this, for beginners the reply will be "I'm trying to bake a cake"
... "I need to get milk from the store" ... "I need gas to get to the store"

Each ... is a back and forth focusing on the actual problem. Beginners don't
necessarily know what information is useful information. This is why
physically working with an experienced developer is so useful, because that
exchange (which provides a useful learning experience for the beginner) is so
much easier in person.

~~~
adekok
> I don't see this

Try sitting on an open source mailing list sometime. :(

------
mettamage
I am surprised that no one linked the What Have You Tried article by Matt
Gemmell.

[http://mattgemmell.com/what-have-you-tried/](http://mattgemmell.com/what-
have-you-tried/)

This is how I almost never got my SO topics closed. I state beforehand what I
have tried, how certain SO questions may look related but are still not giving
me enough knowledge to solve my problem. I do my best to make a convincing
argument that I need help and can't make it on my own. A few days later and I
get my answer :) (and sometimes I figure it out myself which takes a while)

I agree with the HNers that say that someone needs to struggle a bit first.
It's necessary to develop the emotional coping skills, because programming can
have very frustrating moments. And they can answer "what have you tried?"

Beginners need to understand: why would I put more time into solving someone
else's problems than the person asking me the question? I notice that a lot of
friction comes from that place. Sometimes beginners don't realize it, but I've
seen some lazy people as well. When I am on the beginning side I really try to
take this into account and value the time of the expert.

~~~
wdrw
StackOverflow serves a dual purpose: (1) to answer the immediate question of
the original poster, and (2) to serve as a reference for anyone encountering
the same problem in the future. I'd say that (2) is more important - good
question/answer pairs on SO have helped hundreds or even thousands of
developers beyond the original poster. Answering "what have you tried" may
help with purpose (1), but is often just distracting for (2). If I'm looking
for a way to do X, reading through someone's failed attempts to do X is a
waste of time. And this whole notion of making someone "struggle a bit" is
entirely misplaced when you keep purpose (2) in mind. Let's say I'm not a CSS
expert and I'm trying to find a way to make a sticky page footer. I can
"struggle for a bit", spend maybe 30-60min researching the topic and come up
with a solution myself, without ever involving StackOverflow. Multiply this by
1,000 developers facing the same problem, and you have 500-1000 hours of
wasted developer effort. Compare this to spending 15min to write a precisely-
worded question (but without "steps you've tried"), and an expert spending
15min to write up an answer. From that point on, the piece of knowledge is
available to anyone, enormously amplifying the impact of this initial time
investment. Of course I'm oversimplifying, but I see this amplification effect
continuously ignored in discussions of StackOverflow posting guidelines. I
think this attitude of "show your work" and "make the original poster struggle
a bit" comes from the days of IRC/Usenet questions, where an answer to a
question only helped one person, not thousands.

~~~
mettamage
I forgot a bit about purpose 2, good point.

"And this whole notion of making someone "struggle a bit" is entirely
misplaced when you keep purpose (2) in mind."

I didn't mean it that way. Struggling a bit also implies Googling an answer or
looking things up on StackOverflow, it's part of the struggle before you ask
someone (online or IRL). Specifically, querying Google, querying SO and typing
in the question on SO and then clicking on the suggestions first are all part
of the struggle since you haven't asked a person yet.

"Compare this to spending 15min to write a precisely-worded question (but
without "steps you've tried"), and an expert spending 15min to write up an
answer. "

When I think about it, a precisely worded question implicitly shows the
struggle. Implicitly showing it is more effective than telling a whole story
about it.

------
froh42
I feel StackOverflow is a bad place even as a professional. I don't agree with
90% of "closing" of questions, frequently closing a question is the ultimate
upvote. StackOverflow seems to prefer questions that can be answered by just
copying the fine manual - and frowns on those that might involve discussion.

From time to time I still use it, but for me it has jumped the shark.

~~~
splintercell
Same here. I feel like StackOverflow after nearly 10 years of closing
questions such as 'Which is a better framework X or Y', should be honored at
/r/DesirePath.

Like at which point do they understand that maybe their desire conflicts with
how most community wants to use SO as.

~~~
sanderjd
I keep waiting to see a competitor take off because it _starts_ by encouraging
those sorts of questions, and then secondarily accepts all the other sorts of
questions SO does. Of course it's more difficult to start a new community
because of network effects, but a decent place to start might be to find a
bunch of the popular closed questions on SO and reach out to the questioner
and some of the good answerers to come participate on your site instead. If
this exists already, I'd love a pointer to it!

~~~
splintercell
Have you looked into Slant.co ([https://www.slant.co/](https://www.slant.co/))

------
doktrin
I guess I'm going to be the asshole today :

If someone lets a few rough edges on SO dissuade them from learning, they
probably didn't care for any of this to begin with.

I mean, every single one of these traumatized "beginner" comments were sourced
from reddit - where there are _at least_ a half dozen subs that would gladly
accommodate questions unsuitable for SO.

On a related note, I also don't understand why there is a constant push to
coddle beginners to increasingly absurd degrees. It has literally never been
easier to learn to program. There are _hundreds_ of resources available to the
aspiring learner - more so than _any_ other field I'm aware of. Yet somehow
the anal retentiveness of SO is the problem here? Come on.

~~~
blueatlas
_" I also don't understand why there is a constant push to coddle beginners to
increasingly absurd degrees."_

Apply this perspective beyond software development. Law, medicine, firemen,
teaching a kid to play baseball. Why do we continually look at software
development different than other acquired skills?

To answer your question directly, it is my opinion that the layers of
abstraction that we have today, and that continue to grow, put those new to
software and computer science at a huge disadvantage. They have a very long
haul. And yet, demand increases for these skills. Yes, we should coddle to the
best of our ability.

~~~
doktrin
> Apply this perspective beyond software development. Law, medicine, firemen,
> teaching a kid to play baseball. Why do we continually look at software
> development different than other acquired skills?

Well, that's a good question. What do you think it takes to break into law,
medicine or fire safety? I can assure you that being willing to put in
_significant_ work, and tolerating adversity, is a hard requirement for each
of them.

Much of my family is in medicine, and I used to work in law - both professions
are absolutely merciless in comparison to engineering. The expectation that
would-be [doctors, lawyers, bankers, etc] put in the work is _unwavering_ ,
and the professionals in those fields can be huge dickheads to boot. Yet, they
somehow manage to attract more than their share of candidates.

~~~
tcfunk
While too much coddling is probably not helpful, neither is being overly
abrasive because "back in my day that's how we learned it".

Holding on to old teaching methods "just because" isn't the right answer, nor
will it help the programming profession in the long run.

~~~
doktrin
Are you addressing me, or just speaking in generalities?

Teaching and pedagogy is a broad topic, and there are certainly things that
can be done to improve most existing models. However, a willingness to
tolerate some modest level of adversity will remain necessary.

------
AndrewUnmuted
As a kid, it took me a long time to learn to program because I was constantly
fighting the very things that this article brings up. You can chalk it up to
youthful arrogance. When I dropped my attitude and realized how wrong I was
(around age 17, when many kids finally do this) I finally became a good
programmer. I tried for nearly five years as a kid, but my naievete got in the
way.

Programming requires a nearly dogmatic adherence to methodology, logic, and
best practices, to be done well. What the article describes as unfriendly
towards beginners, is really just an attempt to bestow upon beginners a
_thought process_ that needs to be instilled to be successful.

~~~
adekok
I agree 100%. I run into this every day.

The people who give up their ego and follow methodology, logic, etc. get
things done.

The people who have an attitude don't get things done. Even worse, they often
accuse everyone else of being arrogant and unhelpful.

On the Open Source mailing list I administer, I've had to resort to banning
these people. Ask a question? OK. Argue with the answer? Not OK. Tell the
people who are helping you that they're assholes for saying you did something
wrong? Ban.

------
gravypod
I consider myself a fairly seasoned programmer. I have written countless lines
of code, work on a few projects with friends, and automated most of my
computer-related tasks. I've been doing this since I was 12, and I am 19 at
the time of writing this.

I can say with confidence, I have never been able to successfully ask a
question on stack overflow. I think I have been banned at least once, or they
deleted my account.

I've asked questions ranging from implementation of 3D matrix manipulation to
avoid gimbal lock to writing a python client-side application that needs to be
able to edit a google docs file.

Everything has been closed, locked, or down voted. Each time I followed
standard procedures that we are all familiar with for reporting bugs.

    
    
      - Include output
      - Sample code 
      - Explanation of what the current code does and what I want it to do
      - Pictures/Diagrams if helpful
    

I have NEVER gotten a single useful response. Granted it's a great resource
for programming information. I use it as a library: I can go there and look at
all the books frozen in time, all with good information on a wide variety of
topics. But I know, if I attempted to write one of these books or jot down my
feelings on the side of a page I'd just get yelled at by the librarians.

There are two things that I have noticed about stack overflow: it's one of a
few sites that for some reason prides your identity over your work. Your
'karma' is displayed just as big as your name, and it seems to be implied that
the bigger that number is, the more right you are. I have also noticed that
most of the resources that are indeed helpful are either locked, closed for
'read only', or every reply is down voted even though the responses and
questions are still valid.

I jokingly tell people who are going into CS at my college that "you are not a
programmer until you have gotten banned from stack overflow for asking
perfectly reasonable questions". Whenever I say that, I can almost hear a sub-
audible sigh of relief from everyone in the room including some professors
from other departments attempting to learn CS.

Stack overflow is presented as a site for the end user learning how to
program. It is not.

~~~
Flimm
I have had a couple of my questions closed for reasons that I disagree with,
so I can sympathise there, but to me it sounds incredible that someone would
be banned just for asking programming questions. You say you think you've been
banned, could you check and let us know what actually happened? Did you really
get banned?

~~~
gravypod
Yea it looks like I was banned and it looks like I was banned more then once.
I have an @gmail email address, and one at a custom domain I use
professionally.

I cant login to either.

It also seems like I am not the only one:
[https://np.reddit.com/r/learnprogramming/comments/1wpbhv/i_e...](https://np.reddit.com/r/learnprogramming/comments/1wpbhv/i_embarrassed_myself_on_stack_overflow_and_i_need/cf461uj)

That was linked in the article.

I spent that entire week upset because I felt I did something wrong (this was
back when I was like 14, 2 years into programming and still very much an
emotional edgy teen).

I'm very lucky that I eventually brought it up to a long time IRC friend and
programming "mentor" of mine Steve who said that he was also banned. To me
this was crazy as I could not understand how he could have been banned. He
was, and still is, my last go-to resort for programming help; basically Mister
Miyagi.

Because of this, I have surmised that to be good at programming, you need to
be banned from SOF for asking a perfectly reasonable question.

Edit: I was banned when I asked for help with writing a 3D matrix camera with
not problems from gimbal lock and another time for asking if there was a
datatype for allowing two threads to mutate the same state.

Back then, I did not know about locking, concurrency, and all of the cool
jazz. I learned most of what I know myself.

Thank god google indexes all of the closed SOF posts or I would have never
been able to.

~~~
fabian2k
If you had hit the automatic question block, you would still be able to log
in. And if you were manually suspended by a moderator, you also would be able
to login.

Account deletion is only used for spammers, sock puppets used for vote fraud
and for persistent trolls.

You can get blocked on SO from asking questions if you ask too many heavily
downvoted and/or closed questions without a lot of positive contributions, but
accounts aren't deleted just because someone asks a few bad questions.

~~~
gravypod
>You can get blocked on SO from asking questions if you ask too many heavily
downvoted and/or closed questions without a lot of positive contributions, but
accounts aren't deleted just because someone asks a few bad questions

Yes, that was it. I asked two questions, and was banned for it.

~~~
Flimm
Here's what SE has to say about auto-blocking:
[http://stackoverflow.com/help/question-
bans](http://stackoverflow.com/help/question-bans)

> ... The exact formula for the bans is not disclosed, but users are only
> banned if they have a significant number of heavily down-voted, zero-voted,
> or deleted posts. One or two bad posts will not cause you to be blocked from
> using the site.

So what happened is definitely against current SO policy and auto-banning
rules. If you want to share the question URLs and your SO user id to help sort
out what happened, I'd be happy to assist, I can see deleted posts, I'm a fan
of SO and I would raise a ruckus if I had proof that new users were banned
after asking two programming questions.

~~~
gravypod
I can't find those questions and I don't much remember the account name, this
was over 5 years ago, and even then it was my first account. So I don't really
know.

------
Mithaldu
This article fails to notice the primary problem with people learning a
programming _language_.

Just as with a real _language_ you learn the highest amount of material by
absorbing explanations and expressions by qualified users of the _language_ ;
not by immediately trying to form sentences as soon as you know 5 words.

A user of a _language_ only becomed a skilled user when their mind contains a
large enough corpus of absorbed expressions to imitate and combine.

IOW: Yes, the newbie does need to read the manual first. And after that some
working code. (Though admittedly many manuals are crap and recommending a
good, useful and fitting manual is a skill in itself that is lacking in many
professionals.)

~~~
kough
I'm not sure your analogy between programming languages and spoken languages
supports your point. Pretty sure the best way to learn a new language involves
lots of time practicing speaking. The analogy would then support trying to
program as much as possible in a new language, rather than just reading books
about it. Not sure if this was supposed to be a joke; I thought it was fairly
well established that it's common and even encouraged for new programmers to
start exploring and writing programs as soon as possible. Am I misinterpreting
your comment?

~~~
Mithaldu
> Pretty sure the best way to learn a new language involves lots of time
> practicing speaking.

It isn't. It really isn't. :)

While it is a big part, and necessary if you actually want to talk to people,
in terms of time spent it is much more important to get the vocabulary in and
as much exposure to expressions of the language by competent users as
possible.

That's why people recommend travelling to where a language one wants to learn
is spoken; not because one must speak it there as well, but because one hears
and reads it there everywhere.

~~~
kough
I dont think we're disagreeing. I don't suggest speaking practice to the
exclusion of literary practice. In this comment you acknowledge the importance
of speaking practice. That's what was missing from my reading of your first
comment. I responded largely because I understood your comment to suggest
(explicitly and through analogy) that new programmers study books _before_
attempting to write code and interact with the community.

Cheers, sorry for the confusion.

~~~
Mithaldu
Actually, i do. Completely. I acknowledge practicing is important, but
attempting to write code before having gone through a full book and having
read some real world code is only going to be damaging for a new learner.

Plus, newbies who refuse to actually read a book front-to-end annoy the ever-
living shit out of help channel people, because they end up asking all the
stuff that the book would explain fo them, and the chat people end up being
nothing but an interactive and abusive book.

~~~
ktRolster
"The only true way is with Dijkstra's programming textbook that starts with
proofs." It will prevent you from becoming braindamaged from BASIC (or Python
:) )

[http://www.amazon.com/Method-Programming-Edsger-W-
Dijkstra/d...](http://www.amazon.com/Method-Programming-Edsger-W-
Dijkstra/dp/0201175363)

------
gglitch
Seems like this article is mainly talking about cognitive dissonance occurring
between a hypothetical beginner who imagines Stack Overflow is going to be a
congenial conversation, and a hypothetical expert who curates SO as more of a
high-viscosity Wikipedia that would ideally be ask once, answer once.

~~~
ktRolster
The article is mainly a blog post attempting to build hype for the author's
book.

------
josephg
Joel Spolsky gave a great talk a few years ago about the design of
StackOverflow. Three groups of people are involved in every question on the
site: the asker, the people who answer and the people who read the answer
later. Which group do you think the site is optimised for?

The answer is the third group. The average SO question gets read 30 times per
day. Any value captured by either of the other groups is massively dominated
by the value captured by people who google the question and land on SO.
Complaining about the site being harsh to question askers fundamentally
misunderstands the value SO provides to the community.

I'm all for websites which help beginners learn programming, but if you need
1-on-1 help to figure out why your loop is invalid, SO is the wrong site.
[https://hackhands.com](https://hackhands.com) might be a better destination.

(I can't find the video on my phone - if somebody could link it below that
would be great. )

~~~
cableshaft
You're right. SO is optimized for people who read it later. I.e. people who
will Google their problem, get directed to the question...and then want to
throttle you for answering "Just google it."

Because they just did that.

And the next eight links on their google search also link to forums with
people saying "RTFM", "Quit wasting our time", "This has been answered a bunch
of times before.", or even worse, someone who clearly didn't bother to read
the question and gives a blatantly wrong answer.

And then the answer they have been looking for is now buried in legions of
programmers' impulsive expressions of indignation.

At the very least link to somewhere where it is properly answered, or don't
answer at all.

------
Xcelerate
Generally speaking, I agree with the article. For some reason, there seems to
be a widespread attitude of "meanness" on the internet (actually, perhaps
that's just people in general...)

I recall three years ago asking the question "What is dependent typing?" on
Stack Overflow. The first commenter replied "Did you try google? wikipedia?"
to which I provided a sassy retort
([http://stackoverflow.com/questions/9338709/what-is-
dependent...](http://stackoverflow.com/questions/9338709/what-is-dependent-
typing)).

Some people seem to become quickly exasperated with what they perceive as
"stupid" questions (e.g. Linus Torvalds). I don't understand why; just ignore
them. On the other hand, I get exasperated with mean comments. I frequently
upvote people on Hacker News that I disagree with if they have worded their
stance in a nice way, and I also frequently downvote people that I agree with
if I find their comment particularly rude.

Some feel that rudeness is necessary in order to drive a point home
(particularly in politics — lots of mudslinging), but I disagree. It would be
interesting to see if any research has been done on this subject: are blunt,
mean comments _actually_ effective in certain situations?

------
lambic
Some suggestions for the beginner asking questions:

1\. Make it clear that you are a beginner and that you're eagerly learning.
Otherwise it's easy for someone to assume that you're a more experienced
developer and answer accordingly.

2\. Don't ask people to do your homework assignment for you.

And some suggestions for the experienced devs answering the questions:

1\. Don't assume that the OPs first language is the language of the forum.

2\. Don't assume that the OP is an adult, lots of kids are learning
programming these days.

------
frotak
I suppose I have a hard time empathizing with the archetype of the beginner as
presented in this article due to just how markedly different my own
experiences developing as a programmer were.

I have never relied on the generosity of others to take their time to teach me
- nor have I seen it as the responsibility of anyone to carry me along. I'm
not dead weight, I'm independent and I have things I want to do.

One of my first experiences with programming was automating a menial task at
my first internship. I was studying mechanical engineering at the time and my
older brother had gotten me an internship at the company he worked for in the
QA department. I was given the task of testing their in house search engine
and recording the results in an Excel spreadsheet. When I got tired of doing
it by hand I wrote a script to do it for me - a horrific mashup of PHP and awk
and sed and all sorts of other gristle. But it worked. And it was mine. And I
put it together by piecing together man pages, internet documentation, and
trial and error.

After I switched my major in college to CS I was working on a personal project
and when my professor couldn't give me an answer (he rightly expected me to
figure it out for myself) I eventually ended up trawling though Java reference
books at the local Barnes and Nobel to find a solution because nothing freely
available gave enough detail.

The barrier to entry to programming is incredibly low. Anyone with a personal
computer or laptop has an unbelievable treasure trove of incredibly high
quality and FREE tools and resources to do absolutely amazing things...but
that does not lessen the inherent complexity or difficulty of what programming
is.

I think the attitude that many hobbyists or beginners bring to programming
would be unheard of in practically any other sort of hobbyist field.

Build a basic knowledge and grow it. Yes. That means making an investment of
time and possibly money. I have bought many supplemental educational resources
(at first foundational algorithm and data structures and eventually technology
and framework specific) because I want to learn. If you do not want to learn
no one can teach you. And learning requires effort and engagement that are
altogether lacking in many individuals.

------
aje404
I don't really think this article warrants a serious conversion.

He leads with "I’m not endorsing either side", then proceeds to denumerate
every wrong that SO regulars have inflicted on poor, benign newbies, and
intersperses it with quotes with hard-working, incipient programmers ( who
are, naturally, all from Reddit) who've been abused by oppressed by this ill-
tempered cadre of SO devs. Many of them decide to quit the dream they're
working so hard at because an experienced developer didn't debug their while
loop.

Naturally, he's peddling a book that teaches you how to install a text editor
and run hello world. The only travesty here is that he's getting from free
publicity for this troll-bait.

------
diezge
The problem is a lot of people misinterpret what StackOverflow is supposed to
be - a repository of programming-related questions/answers that are useful to
more than one person.

Most questions asked these days are duplicates, syntax errors or are answered
in the relevant online documentation - I really think there should be online
courses on 'How to find the right thing to search for' because it would help
newbies so much, and prevent them from having to interact with the mean/rude
side of StackOverflow (which is proving hard to get rid of despite all the
initiatives).

~~~
Piskvorrr
Already done, and it's apparently RFC 1925 §6 - turtles all the way down. Now
the problem is one level down the stack (pun not intended), with "newbies
won't read [http://stackoverflow.com/help/how-to-
ask](http://stackoverflow.com/help/how-to-ask) and get offended when prompted"
instead of "newbies don't know how to ask and get offended when prompted".

------
renlo
StackOverflow is a good place for intermediates and up. IRC is a better place
for beginners, but truly if people are just starting out they need a dedicated
teacher, or they need a good manual / tutorial that they read front to back.
Most beginners don't read the manual / tutorial front to back; they try things
immediately once they've read about them and their code understandably break.
In this case they need a dedicated teacher, a person they can ask uninformed
questions to. StackOverflow is the wrong tool for that.

~~~
lists
Speaking from my experience as a self-taught programmer, IRC convos generally
follow the same trajectory as OP specifies.

------
sergiotapia
I joined StackOverflow when it was about 9 months old, it's completely
different now and I would not recommend it for new developers. The vast
majority of moderators and people who close questions are among the worst
dweebs I have ever spoken to online.

They have some minuscule, irrelevant taste of power, and it immediately goes
to their heads. And in their eyes they are correct.

Instead, opt to go to a forum. For example, if you develop with ember go to
their forums, meteor, go to their forums, elixir? They have a slack channel.
Etc. Anything but stack overflow.

------
padseeker
What are the three great virtues of a programmer: laziness, impatience, and
hubris?

What would compel those who hang around Stackoverflow to be complete assholes
to those who ask questions? Definitely hubris, and most probably impatience.

As a mediocre programmer I've been subject to ridicule from experts. I
remember when I was trying to learn ExtJS (before is was Sencha) and for the
life of me I could not get past a bug. I went on the ExtJS posting board.

Along the way I noticed one guy who answered replied to a lot of posts, but
frequently not with an answer. It was more often than not to ridicule the
original poster. Sometimes he would help but more often than not he would make
a derogatory comment. I eventually broke down, and decided to post a question
on the board, and within a short period of time the aforementioned guy
replied, but did not provide a real answer. Something about 'you clearly don't
know how to debug'. Yes dumbass, I can't figure it out that's why I'm asking.

I don't think any particular field has a shortage of arrogant know-it-alls
that take pleasure in lording over the masses and gain pleasure out of
humiliating those who they perceive as being beneath them. However programmers
can be a funny lot, and without going too far out on a ledge there are quite a
few of us who are brilliant at code but not so much in other areas of our
lives.

Plus I have to wonder how many of us programmers have been on the receiving
end of abuse in other areas of our lives, and take that repressed frustration
out on others in the area we have confidence in.

------
AcerbicZero
Personally, I find StackOverflow to be one of the most useful online resources
for general/random programming questions. Its not a place that tolerates a
great deal of willful ignorance, and does almost nothing to help you if you're
not willing to help yourself.

Also, I'm not surprised to see a bunch of comments taken from
r/learnprogramming, a subreddit dedicated to helping beginners, being somewhat
critical of StackOverflow and its style.

------
sanderjd
I enjoyed this article a lot. It has some really good advice on both the
beginner and professional sides that I'll definitely be keeping in mind going
forward.

But I think the article, and the comments here, have a bit of a blind-spot:
teachers and/or mentors. As much as people seem to want to believe that it's
easy to self-learn programming, the issues brought up in this article are
among those that give the lie to that idea. There would be tension in any
field if untrained beginners were asking questions in the same forums used by
experienced professionals.

Questions like "javascript while loop not working" demonstrate a fundamental
lack of understanding that professional support forums like SO and IRC are not
designed to address. Most fields recognize that those sorts of fundamentals
are best learned with the support of teachers who can evaluate what is missing
in a student's mental model and answer questions in a way that builds
knowledge. I don't see what makes us think our field is so different.

------
alexchantavy
The programming professional culture described in the article is a grown-up
version of hacker culture seen in old newsgroups and IRC rooms. It's somewhat
of a rite of passage for a beginner to first lurk in these communities and
learn just enough to know how to ask the right questions to not get yelled at.

~~~
ktRolster
Oh, you reminded me there's actually a tutorial for that:

[http://www.catb.org/esr/faqs/smart-
questions.html](http://www.catb.org/esr/faqs/smart-questions.html)

------
fridek
This is just a tip of the iceberg. Junior questions on stack overflow and
general attitude towards learning people how to work with the vocabulary and
the basic concepts are sort of addressed by many great tutorials
(codecombat.com <3), podcasts and in general helpful people that are out
there. But try to even formulate an advanced question, like "how should I fit
this idea into my existing 200+ classes system". Even if you describe your
problem in less than one page of text, there is no place to ask how to design
stuff. I suspect most people just make enough mistakes to become this senior
architect person who gets to say "oh yes, we did try that in the 70s, it won't
work because X".

</rant>

~~~
Piskvorrr
Perhaps that is another issue - "MYYYYY question was cloooosed, that is a
_MORTAL INSULT TO ME_ " instead of accepting that mistakes _do_ happen, and
even I make them. Did I go out to find knowledge, or did I actually want a pat
on the head for being a good schoolboy who _never makes a mistake_?

This is a (mostly subconscious) theme in most of the SO flamewars: "they are
attacking _me_ for trying to find out the Truth" vs. "I'm trying to get to the
root of his _question_ , and he's just being stubborn" (I have seen such
pointless bickering from both sides; hopefully I have learned something from
that?).

------
Shog9
Over the past few years, we've put together a couple of (reasonably short)
guides to asking questions on Stack Overflow; if you're a beginner (or simply
struggling to learn the Stack Overflow way of doing things), it wouldn't hurt
to read them:

\- [http://stackoverflow.com/help/how-to-
ask](http://stackoverflow.com/help/how-to-ask)

\- [http://stackoverflow.com/help/mcve](http://stackoverflow.com/help/mcve)

Disclaimer: I work for Stack Overflow, but these were mostly written by folks
who don't and who just wanted to see new users have an easier time - I just
edited them.

------
j45
I find beginners also can adopt this know it all attitude, and if something
isn't in the scope of their understanding, it's either not relevant or capable
of being understood.

Curiousity, interest, cooperation is the key of creating new beginners.

------
badloginagain
The absolute worst experience is when the top link on Google is on a
Closed/Duplicate/Invalid Stack Overflow, where the answers and comments are
all on how the question is bad- especially when the question is almost
verbatim to the search.

The problem with SO is that there isn't an alternative with a user base large
enough to get that critical mass of answers. That means that there are no real
alternatives to the very well defined limitations of Stack Overflow.

Without an alternative, it puts contributors in an adversarial position
against askers- trying to close as many questions as possible to try and keep
the mission statement alive.

------
jjuhl
All I wish for is that more beginners would read (all of) "How To Ask
Questions The Smart Way" [http://www.catb.org/esr/faqs/smart-
questions.html](http://www.catb.org/esr/faqs/smart-questions.html) before
asking. That would help a lot I believe.

------
AndyKelley
I appreciate the discussion this article is bringing to the table, and I
mostly agree with it. I'm going to pick on the one thing that I disagree with.

The article said that professionals should _not_ say: “why would you want to
do that?”

I think this question is quite possibly the best thing about asking for help
in a programming community. What better way is there to learn about
programming than the Socratic Method?

What this question means is that the professional is dedicated, not to simply
finding the short term answer to the beginner's question, but to helping the
beginner actually understand the problem, and what the range of solutions are,
and what the best solution might be. It teaches the beginner to not get stuck
in a rabbit hole and look at the big picture. It teaches the beginner to do it
the right way instead of the easiest most obvious way.

~~~
greenyoda
Exactly. When I'm helping people solve problems, I find that "why would you
want to do that" is one of the most useful questions to ask. The questions
that people ask are very frequently about preconceived notions of what the
solution to some problem should look like. If you ask about what the actual
problem is that they're trying to solve, you might be able to suggest a much
better or simpler solution, or inform them that the problem is solved already
(e.g., there's a method in the API that does just what they're trying to do).

------
onetimePete
The RTFM reply s are the equivalent of teaching a man locked in a box to
become a magician, by putting a Houdini-manual on top of the box.

Its arrogant from the new users perspective, and basically just a result of
the human mind purging negative moments, like ones own beginners frustration,
lost in time.

------
xlayn
While it address the situation on stack overflow, this is a problem in general
with communities:

    
    
      -It's my opinion that with enough time communities are 
       driven and shaped by the leaders this has at least the
       following two aspects
        -The leaders (assuming they were elected or emerged from
         the community) will strength the core values of the
         community (look at it as the identity).
        -Previous statement can also be read as: they will make
         everything they can from prevent the community to 
         become something they don't like
    

How do you prevent people with strong __insert here characteristic or
property, e.g. technical __background and therefore after some time taking
leadership from driving the community that way?

On the other hand (and I speak for myself here) when I started learning
programming I were extremely frustrated with my first Java class for a desktop
application, you copy paste something, modify it and then got into a situation
where you ask for help.

Years later I did understand all the reasons why my approach was incorrect:

    
    
      -you can place logic inside the class or outside of it
         -You later learn that code should not repeat itself
          something called *one source of truth*, how that
          drives code from instances to the parents from where 
          it its inherit
            -you later learn or discover that; that's the same
             principle behind normalization on databases
              -then you learn that behavior respects the same
               rules and hence interfaces and contracts
                 -then you can understand easily mef and maf for
                  example
                    -....
    

for that basic point above I would have need to be told to read and learn
about a lot of things, if you get to the other side, the simple question
becomes a really long explanation and tutorship about something.

Maybe this exemplifies and proves the necessity that can be addressed by a new
community, _Ask and learn_ community with rules looking forward to address
this kind of learning.

------
s4chin
As a self taught programmer, I went from a beginner to an intermediate level
by learning from websites and books. My suggestion to beginners would be to
read some stuff about the technology they want to use, then read and implement
a few tutorials where they will make example apps, etc. This clarifies the
terminology and makes it easier to describe the problem, read docs, etc.
Because 99% of beginner problems have already been answered on StackOverflow.
I have had some bad experience with SO but it was mostly due to not searching
properly. I definitely understand how beginners feel. But if someone kept
asking me how to reverse an array in C++ repeatedly, even I would be pissed.

------
JayDouglass
SO is not for beginners, because beginners do not know enough to ask the right
questions.

------
32bitkid
There are only three reasons why people answer questions on stackoverflow:

1\. fake internet points 2\. a genuine interest in the question/problem 3\.
get paid to do it

I don't know anyone who sticks with stackoverflow very long if #1 is their
primary motivation.

And group #3 is a pretty small percentage of users whose companies have off
loaded support onto SO, but they are paid real money to answer whatever
question someone posts, so they will put up with a lot.

But leaves, in my opinion, #2 is being the majority of people actually answer
questions on stackoverflow. Which I think breaks down to an aspect of
question-asking that is often overlooked. Given that I am not just waiting
around to help you, then it is up to you, question-asker, to motivate me to
_want_ to take time out of my day to answer your question.

At the worst, are people who asks questions with a chip on their shoulder, as
if the internet is broken or the people who wrote the documentation committed
some personal foul against them, and its up to the rest of the internet to
make it up to them. I have _absolutely zero_ motivation to help that person.
Then there are the people that but no effort into either composing the
question or finding thier own answer, a question that can be answered
trivially enough by copying the title of the question into google and looking
at the results. Again, you have failed to motivate me to answer your question.

Then comes the good questions, the ones that tell a story, that _entice me_
into wanting to help this person achieve their goals. I _want_ to help you,
but _have other things to do_ , give me a _reason_ to procrastinate and help
you figure out your problem/misunderstanding. Tell me a story of what you are
trying to do, what you tried and failed, let me see your thinking process that
went into it. It's up to you to build a social bond that I _care enough_ to
_help you_.

That, to me, is your job as "the asker". Make me want to help you, and when
it's done we can both feel good about what happened. If you can't take the
time to do that, then there is little point in me helping you. I, honestly,
have more important things I _should_ be doing.

------
nanodano
I've been programming for ~20 years and I use Stack Overflow ALL THE TIME. The
thing is...I've literally never ever posted a single question. Everything I've
ever asked has already been answered.

------
gglitch
This discussion is making me think that Stack Overflow has a solid opportunity
to rethink how their architecture/approach could be redesigned to minimize
questions that get closed due to redundancy or other reasons. One could
indefinitely kick the can by saying the user should have known how to use SO
better, but the questions keep popping up and getting closed. I for one
personally have only ever found useful data downthread in closed questions.
You could say that means the design is working, but it would still seem like a
ridiculous, even risible design.

------
ctstover
1\. Sounds like a market opportunity for a beginner oriented forum, that
somehow incentivizes experts to help constructively.

2\. The number one sign an expert is an impostor is the way the play the role
of a teacher and student.

3\. The main thing I hate about SO is the illogical ban on questions that
recommend something. At least 80% of my searches that land on a SO page are
like, "this is blacklisted by some troll master, because it encourages people
to post links to cool and interesting things that might be outside of the
box".

~~~
Piskvorrr
SO was never supposed to be a site for Eeeeeeeverything And A Kitchen Sink.
"Cool and interesting things outside the box" is pretty much Reddit's tagline.

------
PaulHoule
Code your way out of this one.

Google is awful for programming research for instance if I look for javadocs
it is random if I get jdk 6, 7 or 8.

Same for the other dependencies in my code despite the fact that I use maven
so the versions of everything are specified.

The how do I question has to be managed on an individual and project basis
because in a certain projects we do it the same way so the system has a
property we need and we don't care what the stackoverflowers think...

------
jejones3141
A worthwhile article; thanks. I do think it could be improved with a link to
esr's "How to Ask Questions the Right Way".

------
pmarreck
1) Wheaton's Law.

2) You have to enjoy mentoring/assisting. If you don't, then don't do it, but
also obey (1).

------
agentgt
Not that it justifies the behavior I'm curious if there are any disciplines of
where there isn't friction between professionals and beginners. In academia I
noticed a similar friction. I would imagine politics to be similar...
sports... they won't even let you play if your not good.

------
swayvil
The "Programming Professional", as a rule, suffers from a kind of mental
disease. He is deformed, clumsy, awkward, violent, narrow, infantile, dwarfish
and wretched.

These people need therapy. But instead they are encouraged and exploited.

------
dustingetz
Does this generalize to diversity? Friction between people of diverse
background and mindset.

------
known
Pair programming is suppose to fix it.

~~~
ktRolster
The ideal of pair programming:

    
    
      The student learns at the side of the master
    

The reality of pair programming:

    
    
      "Why doesn't this guy ever wash his  hair! -_- "

------
legulere
It's almost laughable that there's no work to identify the most common
mistakes beginners do and let compilers etc. explain them. You probably could
catch most of them.

It's also ridiculous through how many hoops you have to jump to start
programming. Take python, which is touted as a begginner friendly programming
language. First you need to install it (most people use windows or os x, which
both don't have python 3). Then you need to get an text editor. You're
recommended to use the python repl, but it lacks syntax highlighting and
autocompletion.

~~~
teach
There actually has been quite a bit of work on this front. DrScheme, for
example.

It's a very, very hard problem, though. And computers cannot, in general,
figure out what's wrong with broken code.

~~~
Piskvorrr
Sure, it's a very hard problem to _solve_. It's much easier to _warn_ against
80% of _potential_ errors - the algorithm isn't "smart" enough to fix them,
but is smart enough to give the developer a push.

