Wednesday, December 5, 2012

Let me Google that for you.

Every so often one will see posts from people trying to encourage others to contribute back to open source communities, such as that for Python. Over the years I feel I have done my fair share, and having done that, I cant but help feel a bit jaded these days about where things are currently at. To explain why, let me chronicle how I see things as having evolved over the years.

When Python first came out I recollect sucking down the source distribution as separate little shar files that were posted onto the alt.sources USENET news group. There was a bit of documentation with it, but not much. If you had a problem you hoped you could work it out yourself as there wasn't really any forums back then that you could go ask for help about it.

A few years later the comp.lang.python news group was created and there was at least then somewhere you could go. You could try and troll through the archives for the news group if you had access, but history was generally limited by how much your news server kept and it wasn't exactly the best resource for trying to find out much about what others were trying to use Python for. Because help was hard to get, one really appreciated it when you did get an answer to your problem and people showed that appreciation.

The Python news group has always been a quite civilised place in that respect, but the same can't be said of all news groups at the time. People often only had small pipes down which news feeds came, so the last thing you wanted was people being idiots in the way they dealt with others on the news group, or as far as what expectations they had over what you would do for them. News group etiquette evolved, including how you could help yourself by asking good questions so as to get the best response. Such good practices were collated in posts like How To Ask Questions The Smart Way.

Some books eventually became available and these were the first really broad resource where you could learn about the language, but also about the myriad of things you could do with it. If you were like me, you would buy up every book you could find on the topic in the hope that you would find that one nugget of information in it that would help you with the specific problems you were working on.

Next up came what we know today as the Internet and that is when people started posting online their own resources, be it articles on how to do something, or their own code libraries. Initially you still had to know where to go to find this information, but by asking on news groups and looking through hand crafted meta index sites you could be lucky. This was all made a lot easier when search engines such as AltaVista and eventually Google came along, albeit that you still had to actually do the research to find what you wanted.

News groups and also mailing lists were still important forums when you had questions, but these partly started to be replaced by question and answer sites. Right now the most prominent question and answer site for developers is Stack Overflow. Unfortunately, such sites have also been the start of the rot that is setting in.

In the past when people have freely given up their time to help others by answering questions, or posting useful information online, it was genuinely because they did want to contribute back. Sure some may have done it just to make a name for themselves, but I would say that most would do it because it felt good to be able to help. Quite often the people who were answering were more than just knowledgable people, but the actual people who wrote the software you were trying to use.

The question and answer sites have changed that now. These days it is a game, where the goal is to win as many badges and accrue as many points as possible. This is more and more devaluing the responses one does get. This is because those who are answering are increasingly not those knowledgeable people who actually understand the problem and know the answers, but the people who are best at using Google to find the answers from elsewhere and then cut and paste them as the answer.

A lot of the time this does actually provide the answer someone wants, but at this point the person who is asking the question is no longer dealing with someone who genuinely cares about understanding your problem properly and come up with the best solution. No longer can one see the person answering as a trusted advisor whom you might form an ongoing relationship with and this I believe is having the effect of changing the behaviour of the people asking questions. This attitude isn't limited just to question and answer sites like Stack Overflow, but is starting to leach out into other more traditional forums such as new groups, mailing lists and IRC.

Increasingly, those who have the questions are just treating all these forums like a help desk. They no longer expect to encounter the real experts, nor try and form any relationship with those who may be trying to help them. They are just in there to get want they want, leave and get on with their work.

More and more they cannot even be bothered to try and research the problem themselves by using Google, nor even explain what their problem is properly. The idea therefore of asking questions in a smart way so as to get the best response is vanishing. Instead people will just throw a question out their in the hope they get an answer back by the time they have come back from getting their coffee.

To me this is slowly destroying the relationship building which actually creates a good community. People asking questions just don't appreciate any more the people who are trying to help and those knowledgeable people who were once willing to help, can no longer be bothered because it more and more comes across as a thankless tasks. What is enjoyable in replying with an answer which is the same as saying Let Me Google That For You?

So it is all well and good to try and get in and contribute back to a community, but if you want to feel you are getting something out of it and feel that you are building those good relationships which are the foundation of any good community, you should be careful about how you go about contributing back.

Personally I wouldn't bother with Stack Overflow unless you want to play the game. Commenting on posts in Redit isn't much better. IRC has a better level of community interaction, but sometimes channels are dominated by a small group of individuals who can be quite biased in their opinions, which can be a turn off and not really that productive when someone wants to find out about something that those dominant people don't like.

To me therefore, mailing lists or news groups with a large diverse following are still the best forums available if you really want to interact with and become a part of the community. Local Python user groups and attending conferences can also be worthwhile, but you have to work a lot harder by reaching out rather than just sitting back and watching.

Whether things will get worse or better I don't know. Right now though things definitely seem out of balance to me. I just hope that it doesn't become the new status quo. The Python community has always been an open and accepting one, I wouldn't like to see it dragged down because of changing attitudes brought on by quick fix question and answer sites.


Unknown said...

A lot of what you say resonates with me. More generally I'm concerned at the shade SO casts over other sources of information. If you do google for a programming related issue then not infrequently SO entries occupy the first several entries on the results page. This may reflect the quality of the answers but it concerns me that we may end up with a mono-culture. It may sound a bit strange but when searching for something I quite deliberately avoid the SO responses from the search engine as the same information is often available elsewhere and I don't want SO to become the only game in town.

Michael said...

I'm occasionally disturbed by the quality of upvotes on StackOverflow. Note that I'm not concerned with the exchanges themselves, but the pattern of reputation is frustrating, and for exactly the reasons you give. I use SE all the time, but frequently find myself racing to submit answers and writing quick solutions for people rather than explanations or, better yet, leading questions. This is not how I like to teach.

The problem is, ultimately, that the highest echelon of smart, technical people don't get a second vote; that the moderators are essentially elected, and the curve is strongly skewed toward the neophyte (each individual vote is more likely to come from a person more ignorant of the subject matter than yourself), of whom there are far more. StackOverflow is a democracy disguised as a meritocracy, and that is its primary flaw, in my opinion.

Unknown said...

"To me this is slowly destroying the relationship building which actually creates a good community."

This is probably the biggest fault on SO. SO replaces the language's community with it's own.

Another issue is the closing of questions, which is a problem when the answer changes (i.e. code is deprecated). For developers, a three year old answer might be helpful... but sometimes is not.

Persepolis said...

I disagree for two reasons:

* People asking the same questions (perhaps with different variations) means that Google is a richer source of answers when searching. If both "how to I add to a list" and "how do I append integers on my list" are represented I've got a better chance of finding information.

* The reality is that StackOverflow has never failed to give me an acceptable answer to my question. Sure, there's always one or two replies that mis-read the question or provided bad information in a hurry to get points, but some one always contributes a meaningful response.

So while I agree that people need to invest more time in their own research, because it will make them better programmers if they have to work harder for a result, the information is available to me outside of the confines of a stuffy, antiquated mailing list or weighty tome that can't speak back.

robbyt said...

Just wanted to say "Thank You" for all of the contributions that you (Graham) have made to the python and open source community. Your passion for open source is an inspiration. Don't let the noise of the internet negatively affect you or your contributions :)

Christian Heimes said...

Great posting, Graham!

The paragraph about IRC and biased opinion made me smile. The word 'thread' in #python has a similar effect as 'Jehova' in a certain Monty Python movie ... :)

Graham Dumpleton said...

@Persepolis I think you miss the main point I am making. That is that the changing attitude to want the quick fix means that people are no longer engaging with the people in the community. Because of that no lasting relationship is formed and so the community doesn't grow in the way it once was. In the past when people would make the effort to engage and communicate then I would get to know the people who were asking the questions. I would also get to know quite a bit about what they did and the problems they were trying to solve. So, I became that trusted advisor who they could come back to and get help from time and time again. I didn't mind this as they had made an effort to communicate and build the relationship. That simply does not occur any more because people just take their answer and run. It is very much the people asking the questions who do that that are loosing out, because they are ignoring the potential of getting a much broader understanding of the issues because of the narrow focus they are allowing themselves to be constrained by.

esacteksab said...

N00b here. I've haven't been shy regarding the Python Community (or lack there of community in my experience).

Your post made me want to respond.

As a n00b to programming, Python, and more specifically Django (background is Geek/Sys Admin), I've found it difficult to create the relationships you talk about. Relationships I've been able to create in other communities.

Though, it's easier today to ask a question in a forum, and not get shamed to death, it is completely possible to be simply ignored. This is more frustrating rather than telling me what I'm doing wrong or why my question sucks. The Django community is BIG on "read the source!" or "read the docs" even when you have and they respond "admittedly, that part is lacking, read the source!"

In an effort to seek out a mentor/advisor/tutor, I've had zero luck, even offering to pay an hourly rate to "coach" or "advise". Ideally I wouldn't have to pay for a mentor/advisor, but I'm desperate!

Regarding SO and Google. When I was bashing my head against the wall with learning Django, I found it more beneficial to skip Google and go right to SO. I will not post on SO/SE/et. al. That "community" is driven by ego, an elite mindset of STFU, GTFO n00b.

Regarding asking the "right" question -- as a n00b, I don't understand! I might know what I want, but I don't know what it's called. How do I ask the right question if I don't know what it is called? Yes, I can Google, perhaps it will get me there, or close enough so I can ask a better question. But I'd ask there be _some_ leeway allowed as I try and explain myself.

I promise, I'm asking a question, because I've Google, read, searched till my eyes and fingers bled, and all I've got left are tears!

I will post code snippets, repo's, error messages, links to pages I've found outlining why/how I've gotten to where I've gotten and hopefully shed light on what it is I want, or am doing and failing at.

The Python Community feels like a 'members-only' club, and there are no invites available...Or, like Highschool all over again. Python members are at the cool kids table, and I'm left off at that one table.

I won't put all the blame on the Python community (it takes two to tango)...I'm admittedly socially awkward, and look angry, cause that's how I look. So I have my own things to work on, but compared to other communities, the Python community has proven to be the most difficult to break into.

Just my $.03 cents

Graham Dumpleton said...

@esacteksab My main issue with questions for the case where people are asking how to fix an issue, as opposed to how to do something, is that they the information they provide is somewhat lacking. They will only provide what they think is important, often editing it from the original so you can't even be sure exactly what they do have. They will help their situation more by not cutting things to the bare minimum. Include all the relevant configuration, the full error message from logs and very importantly, what they have done to solve the problem so far. Some times you can waste time going through half a dozen exchanges just to get all the details from them and an description of what they have already tried and what different problems that may then have caused, before you can even begin to provide an answer to them. If they stopped being so frugal with the information they would get a better answer more quickly. As to people who ask how to do something, I have a separate issue with them. That is that they will not explain the problem they are trying to solve, only asking about how to implement what they think is the solution. Quite often they are going off in the wrong direction and if they just stated what the actual problem was, they could have been guided towards a more appropriate or better solution more quickly. Unfortunately, people have egos and not uncommon to get brushed off when you ask for what problem they are trying to solve as they cant believe that their proposed solution could be the wrong one.

esacteksab said...

I actually like what you said, describe what you're trying to do/solve rather than the issue you're experiencing. Perhaps I should preface my questions with that.

I feel like I give _too_ much information and perhaps it is information overload rather than not enough information, but I learned a long time ago and follow the philosophy of rather too much, than not enough.

My questions are often more "best practices" or as since you've been there, done that, what's the best way to do this? Python says there should only be one way, clearly there are almost always more than one way to do something. So my questions are "could I have done this better?" or, based on your experiences, would you recommend a better way to do this?

Things along those lines. That's why I'd love a mentor/tutor/whatever. Simply watching someone work, you gather tips/tricks/work-flow behaviors that save you immense amount of time. You can sort of follow their thought process on how they approach/resolve the issue.

You also get an opportunity to say 'whoa, whoa, whoa! what is that?!' and 'how does that work?' or 'what does that do?' or, you shut up, and take notes...then go back and figure out what all those things do. RTFM right?

Graham Dumpleton said...

@esacteksab You have the attitude I would like to see more of. You can see the value that can be had. It is a bit disappointing that you have had a less than positive experience in trying to hook up with the community.

As I said though, it depends a bit on the forum where you are trying to get help. Some forums around specific communities may also not be as welcoming as others. There are channels on IRC where I don't even bother going now because of the specific people who hang out there. I have though found the #pocoo and #django channels to be a good bunch of folks to deal with.

Anyway, you have given me some things to think about. One is whether I myself am giving people this impression of elitism. I feel that I have always tried to be open to helping anyone, but maybe the way I approach it can be better. I can see that with time to help out being in short supply these days, I may come across as abrupt sometimes and that may not be good.

esacteksab said...

You and I have actually spoken before. I opened a support ticket. I hope I didn't ask the wrong question, but you went above and beyond, offering why I was experiencing my problem (link to the bug) and recommendations on how to fix it. I then asked further questions about the service and you presented links to presentations (by yourself and another individual if I remember correctly).

You were nothing but helpful and kind. Not portraying a sense of elitism or any condescending tone towards a newbie. Apologies if you felt my earlier responses were directed towards you, they were generalizations regarding my experience as a whole towards the community.

Graham Dumpleton said...

@esacteksab I didn't see anything as being specifically directed at me. Doesn't mean it isn't a good opportunity to do some self reflection as well. It is when people don't occasionally look at themselves that elitism can start to invade. The conversation is therefore a good grounding exercise.

Brendan said...

Thanks for writing this. I have been feeling the same sort of ambivalence toward SO. I like the idea of crowd sourcing normally poorly maintained FAQs. It also does a good job of presenting the kind of discussion found in mailing list archives which can be awkward to search and navigate. But it does so, as you explain, by sucking participants into a centrally controlled and sadly gamified system.

There has to be a way for communities, like python or django to emulate the success of the SO interaction model but to build their own systems that foster the more substantial relationships you talk about without resorting to pavlovian badge collection games. Maybe starting with Askbot and then thinking about how to integrate forums, irc, etc into community sites?

Mekk said...

A lot of problems were simply brought by scale effects. One can't compare newsgroup visited by hundred people with place flooded by tens of thousands (or more). SO in fact does rather good job of keeping valuable content available in spite of this volume.
I just think they could hide answers for a few hours to eliminate the race.