Why do programmers help each other without pay?
What are some analogies to other professions?
For a lot of them - they're doing it from work - so technically they are being paid lol :-)
To get more Stack Overflow rep.
Because it's fun.
I like learning from other people, and if I can contribute back, that's cool.
But really, for me at least, it's fun.
I help because people on Stack Overflow have helped me. Returning the favor seems only right.
I do it for purely selfish reasons.
I'm tired of seeing really awful code in production systems. If I can do a little bit now to help bad programmers do a little bit better, then maybe I'll have fewer fires to fight in the long run or when I switch to different companies.
I like to help people out because as much help as I give, I also take.
To tell you the truth... StackOverflow feels like a game to me.
I browse the site, filled with puzzles I can solve and I get points for solving them properly. Yes, sometimes you get beaten by someone with a less thorough answer than you (I like to answer in the most thorough way possible), but it is very rewarding to see you have helped someone solve their puzzle!
Also, for the past week, I wasn't able to sleep until I had hit my 200 cap on SO.
Karma
Some things are more important than money.
I can't link to other professions as I don't know them, but I believe this is a general human trait.
I believe, that helping out a fellow programmer allows to both build credibility for yourself and improve your overall understanding of the underlying problem, programming language, etc.
The non-selfish reason is simple professional courtesy. There have been far too many times in my career when I have a problem that I just can't get past, but a different set of eyes finds the solution immediately. If I can be that set of eyes for someone else, I'm happy to help.
The selfish reason is self-promotion. Pro bono help here and there can build reputation (in the general sense) which might lead to new contracts, book deals, etc.
To show off....its all about the rep
Because they need a "third place" besides home and work. They might tend to be working hard and not have much free time, so virtual communities are attractive. Like Joel said in 2003 [1].
[1] http://www.joelonsoftware.com/news/20030228.htmlLike Welbog [1], i'm tired of seeing poorly-written code. I'm also tired of seeing poorly-written questions on other forums. I don't ask a lot of questions, anywhere - I google them first, and chances are i'll find a match. But it's also rather likely that the match i'll find has been asked so poorly that it has failed to garner any useful responses*. So my goal when i signed up for SO was to gain enough reputation so that i could edit such questions, hoping that others would do likewise. Having done so, i tend to only answer questions that interest me in some way - i'm not especially entertained by the rep game.
A side-effect of these motivations is that i consider "Don't do it" a valid answer [2]. I don't care that your boss is forcing you to build a routine that punches users in the face, and told you to build it using nothing but cryptically-named global variables for state... If there's even a slim chance that i'll ever have to use such software or look at such code (and since all Q&A is public, that chance is pretty good...) i'm going to do my best to dissuade you. Selfish? Yes. But i don't think SO needs to be yet another site packed full of bad ideas and ugly hacks - again, there's always the MSDN forums if that's what you're into...
*The MSDN forums are particularly bad in this regard. Often the only response will be a request for clarification and a link to an article on the general topic - apparently, MSFT folk are unaware of how flaky MSDN links are...
[1] http://meta.stackoverflow.com/questions/10092/why-do-you-help-in-stackflow/10103#10103In Spanish we say: "hoy por ti, manana por mi", which roughly translate to “Today I can help you, tomorrow perhaps you could help me”.
That warm feeling when you get the accepted answer on Stack Overflow.
I love what I do. I want other people to enjoy it too. It's hard to enjoy something when you've been stuck in the same rut and banging your head against the same problems over and over. When you finally find a solution to the problem, the avid programmer wants to share it with the rest of the programming world.
Answering questions here also advances the art of programming in general and will hopefully create better programmers who will then find and conquer increasingly difficult challenges. Its how we as an industry grow. The last Hanselminutes podcast with Uncle Bob [1] touches on that to a certain extent.
[1] http://www.hanselminutes.com/default.aspx?showID=189For me the reason is simple. By sharing my knowledge for free, I will hopefully encourage others to share their knowledge for free too. Thus, I share a little and gain a lot back from the community for a simple amount of generosity.
I'm old enough to remember the time when the Internet was still a little infant, crying for it's feeding bottle. To learn something new, you had to go to school or buy a book or visit the local library. Gaining new knowledge was slow and sometimes expensive too. When I learned about SQL back in 1988, I had an advantage over others simply because working for IBM gave me access to some of their resources about a technique that was extremely new back then. Learning more about programming in general meant that I had to subscribe to several magazines and hope they would contain some useful articles. To make things more complex, I lived in the Netherlands where such magazines were very limited, thus I had to order them from abroad, making them even more expensive.
The Internet took away the borders for sharing knowledge. As a result, people started to share their knowledge, hoping the Internet would become a huge, cheap knowledge tree. And that's succeeding extremely well even at a point where publishers start to get into problems because no one buys their dead-tree magazines anymore. (And almost no one is willing to pay for subscriptions when the same information can be found somewhere else for free.)
Furthermore, sharing your knowledge will grant you a bit of fame, for which you can be recognized by others. Share a lot and your name becomes well-known at the Internet, making it easier to get a new job and some interesting offers. (Share your email address online and you'll be spammed into oblivion, though...) Just consider the number of companies that are analyzing the topics here at SO/SU/SF/Meta just to find some good candidates.
Sometimes, the things you share online can be used against you, though. If you e.g. share knowledge about how to pick locks, make explosives or your personal view on the monarchy in Thailand and why it should be abolished then you might end up in legal problems.
By helping others learn, you teach yourself, also nice to see if there are better ways of doing things than a suggestion you have made
A large part of my help is to return the favor. I know the pain and difficulty associated with having a programming problem, and the relief that can be garnered from receiving a practical, proven answer from an experienced developer. Its much more useful and complete, in general, than spending hours pouring through documentation. Also, there are questions that documentation just can't asnwer. Others have done this for me, and, even if I viewed it completely selfishly, I need to do it for others just to help the community go 'round and have my questions answered in the future.
It also helps me realize which questions I can answer confidently. If I can't give a solid answer to a question that I am ready for others to criticize, I need to read the answers that come in!
My feeling smart[1] lobe is wired to my pleasure centers.
Also, reputation is like crack cocaine.
[1] resp. being a smartass :)
http://xkcd.com/386/ sums it up for me :)
What comes around goes around. Always.
I help because I like rep. (Don't we all?)
But, there is always that voice in the back of my head reminding me that sometime I'm going to have a really big problem on a project, and there is going to be a bunch of people on StackOverflow that can help me, while simultaneously debating whether the question belongs on Serverfault.
Putting answers on the web. SO is an answer archive.
There are professional mailing lists in a lot of different domains such as journalism [1] as well.
Scientists are even more extreme. In a lot of cases it costs a scientist to publish a paper. They don't work directly for money but they work for reputation and get funding based on their reputation. Scientists also have mailing lists.
There also the factor that programmers are usually more likely to use technology such as mailing lists, IRC while a lot of other professions are much more likely to pick up the phone and call someone.
[1] http://www.politico.com/news/stories/0309/20086.htmlBecause of the very same reason why people are editing articles in and writing articles to Wikipedia [1].
[1] http://en.wikipedia.orgBecause I might have to work with you some day.
This site just makes you addicted ... reputation ^^
But it is very interesting to just follow the activity of a few people (top users like Jon Skeet for instance [there are more ... but Jon is just example #1] or MS employees like Eric Lippert) and see their answers to challenging questions. Great insight!
Just for Fun :)
Learning & Helping others.
Sure, I do want to be high-ranked. But, my area of knowledge is shallow, I guess.
There are others who have very in-depth knowledge of things & they are good people to learn from.
Because you learn by helping other. And knowledge is valuable.
Sometime, the feeling of doing a good act by helping someone let you clear your mind and focus for the rest of the day.
As for the analogy, just think of a plumber who tell you how to unclog a pipe that is blocked by ice. He just told you how over the phone and he didn't charge you.
Because programmers are the only people who completely understand programmers, their mindset, the issues they face, and sometimes you just need help. It is nice to relate to fellow peers.
For the females of course.
You can make utilitarian arguments and you can make spiritual/religious/karmic arguments. Strangely, both arguments resonate with me.
I do it for selfish reasons (rep) and because I believe what goes around comes around and I believe in the golden rule and, most importantly, it makes me feel kinda good.
Another thing is that you're not just helping one other programmer; you're effectively creating or adding to an extremely large knowledge base, thusly helping the community.
For nearly every programming question I Google at work or home, there are about 3-4 StackOverflow links on the first two pages of results, and probably at least 75% of the time at least one of them answers my question.
The way I see it is: why not give back a little?
FOR THE BADGES!
To put down the answer somewhere so you can refer to it later
I do it to make me look smot.
I think it's a way to flex your 'Programmer's' muscle. Day to day work problems are not that often or intense. It's almost akin to physical training in the army. They don't need to run every day in combat but they're ready because they 'trained' up. I see a problem on a forum and I don't know the answer but could figure it out, that's one more merit badge under my belt
I would say a desire to help, this is on what old groups like sci.math and comp.sci existed on. However I think its the reputation system that makes the difference. Without it I would just post a link to some site which would help the poster. However, knowing that I'm somehow going to get something in return (recognition in this case) drives me to actually write a nice answer.
This [1] video is by a games designer who initially talks about gaming modern social-network based gaming, but he goes on to why scoring systems like Xbox achievements were a success and how these could be extrapolated in the future (ex getting points for brushing your teeth in the morning, getting points for walking more, etc). I guess Stackoverflow provides one such motivational system.
[1] http://g4tv.com/videos/44277/dice-2010-design-outside-the-box-presentation/To succinctly expand (heh!) on @BenW [1]'s answer:
Mastery.
Jeff Attwood's recent blog post [2] reminded me of Dan Pink's talk on drive and motivation, which boiled down to three things that motivate us:
Autonomy, Mastery, and Purpose.
It's an awesome talk, and I highly recommend it. Lately I've been thinking a lot about the talk and I've realized (or perhaps been persuaded) that my own motivations fall along those lines. And one of the best ways to achieve mastery is, as @BenW suggested, teaching others so that and in doing so I teach myself.
I can't yet claim mastership like Jeff and Joel and Jon Skeet, but I'm working towards it and Stack Overflow is part of it.
[1] http://meta.stackoverflow.com/questions/53056/whats-your-motivation-to-help-others-at-stackoverflow/53057#53057Ranking doesn't really matter to me. I don't frequent the site too often but when I do come around to ask a question of my own, I like to try to answer a couple if I am so able. Who knows, maybe it's good for karma!
Information exchange mutually helps them in their skills and knowledge of the field. It is to their(our) mutual benefit over time to share information.
Because you are going to get paid very well and become popular (you share, you learn, sometime you taught)
ultimately all the learning will get you the better job with better pay... :)
Because they want other people to help them for free as well.
I'm on the other side, answering far more than I ask. But that's because most of the questions I've wanted to ask have already been asked, and I use SO a lot to find answers to things like this. I answer questions to give something back.
I use the site to learn and get new ideas. That is the motivation for me. Other people's programming problems tend to be quite boring after a while.
I learn a lot from SO (and some other sites) just by following the questions and sometimes trying to answer one or another question.
analogies to other professions
:
the teachers of the
gliding club
[1] I am (not a real profession) also teach without any pay. The only reward they get, despite spreading their knowledge, is being airborne and collecting flying hours.
I answer posts because:
it's brain exercise: when you solve interesting problems posed by others, it helps you improve your own skills.
to learn from others: sometimes you think you had the right or best answer... Until someone comes along with an even more elegant answer that you did not think of.
let's admit it: getting your rep score up does feel like a game, except that it's not something mindless like Angry Birds ( most popular iPhone game).
satisfaction when you get appreciation for having helped someone
A lot of it is CV++