When I read about this I always think about Joel Spolsky's observation about 15-minute distractions that affect programmers. When you start thinking about your day in those terms, telling the people talking to you to get bent (in nicer terms) starts to be justified.
Here's the simple algebra. Let's say (as the evidence seems to suggest) that if we interrupt a programmer, even for a minute, we're really blowing away 15 minutes of productivity. For this example, lets put two programmers, Jeff and Mutt, in open cubicles next to each other in a standard Dilbert veal-fattening farm. Mutt can't remember the name of the Unicode version of the strcpy function. He could look it up, which takes 30 seconds, or he could ask Jeff, which takes 15 seconds. Since he's sitting right next to Jeff, he asks Jeff. Jeff gets distracted and loses 15 minutes of productivity (to save Mutt 15 seconds).
This is an example of my least-favourite type of HN story: "Devs are clever; users are stupid". While it is not untrue it misses the underlying problem: Devs are generally bad communicators and have an unrealistic assumption about the language and technical understanding of their users which they translate into "users are stupid".
To get a feel for how this feels consider the last time you took a car to be fixed and had to talk to the mechanic, or the first time you took clothes to be dry-cleaned. It feels belittling, doesn't it?
I don't think this article assumes "users are stupid"--I understood it more as "many users are bad communicators". I also don't think developers necessarily have an unrealistic assumption about the technical understanding of their users. That doesn't mean that it doesn't get frustrating sometimes.
Your mechanic example isn't convincing to me (I don't remember ever feeling belittled talking to a mechanic or dry-cleaner). Trying to debug a problem that someone else is having with your code is more like a mechanic trying to fix a car solely by talking to the owner on the phone while the owner, who doesn't know the ins and outs of car maintenance, has the hood open and is holding the only wrench he owns.
This is an example of my least-favourite type of HN story: "Devs are clever; users are stupid".
Do two things: Comprehend these stories as a description of the impedance mismatch. Design your systems with this data in mind.
To get a feel for how this feels consider the last time you took a car to be fixed and had to talk to the mechanic, or the first time you took clothes to be dry-cleaned. It feels belittling, doesn't it?
Amazing how many people and institutions encounter the mismatch and do nothing about it. It sucks. It sucks = Pain. Pain = opportunity.
That's a myth IMHO, there is no evidence that this is true.
Besides, I don't think the author claims that "users are stupid", but that they often don't take the time and diligence to make their case as clear as possible, because they lack awareness that the open-source devs are doing them a favor.
Apart from that, I do fear that writing this article probably won't help solving the problem.
That's a myth IMHO, there is no evidence that this is true.
I have observed a few devs who are not so good at understanding a different point of view while they are also fairly attention getting. I think this is where the idea comes from. Also, it's pretty hard for a non-dev to understand a dev's POV, which adds to the communications problems.
All is true. But please, nobody comes from doctors saying they're bad communicators. They say that they are educated. Some people accept that they don't understand and just heed the advice or ignore it altogether or something in between, while others try to learn enough about medicine to understand what the topic is.
But everybody is an expert on software - since their mother told them so. I'm sick of being patronized by people who refuse to pick up the tiniest bits of the craft saying "no, no, no - that's not my job" - while they are clearly working in a field they haven't the slightest clue about.
Software has to be the only field where ignorance is used as a badge of honour: "I don't need to know anything about how it's done, I'm a project manager."
I'm an excellent communicator, I can figure out how to talk to anyone about anything (I'm a hustler by nature), but when people start talking down to me on a topic I dedicated half of my life to. I make them remember.
But please, nobody comes from doctors saying they're bad communicators.
Actually, my girlfriend complains about this all the time. (She's African American.)
There have also been a number of recent studies that support this. In many cases, doctors have already decided the diagnosis after only 18 seconds. (So they completely tune out the rest, which is not always optimal.)
But everybody is an expert on software - since their mother told them so.
Everyone's also an expert on their own bodies. Ballplayers have been saying for years, "everyone in the stands is an expert." Programming isn't unique in this regard.
I'm an excellent communicator, I can figure out how to talk to anyone about anything
Possible red flag here. It's the other direction that's the hard part. Also the vital part.
Ahh yes, the "it is always the developers' fault" mentality. It couldn't be that sometimes the developers have bad communication habits, but sometimes the users really are acting like assholes, could it?
Let me guess: you have never actually worked in the field, or if you have, it was some trivial job like CSR-1.
Mechanics are clever and drivers are stupid. How many people take their car in and try to tell the mechanics what the fix is rather than describe the problem?
It's not about being clever or stupid at all. It's about being inconsiderate or unthoughtful. People of all stripes are guilty of that. Having been on the wrong end of it enough times I try very hard to give just a little thought to the role of the person to whom I'm speaking. When I go to my mechanic, I am the user and I want to make it easy for them to help me.
Your analogy falls apart because there isn't such a thing as an open source mechanic. I develop open source software and I get tired of things like feature requests that amount to "please rewrite this project to do the exact needs of my project/site."
If it's a reasonable request, I'll try to look at it, otherwise, tough luck unless you want to become a client. If one of my clients came to me and said "I did something and some other thing broke" I wouldn't snap at them, but when it's someone who's getting free support, then it's on them to take part of the responsibility to provide as much information as possible.
This is specific to FOSS project right? So "some Devs are clever; some devs are stupid" is more correct.
Joking aside, the (user) devs should provide as many information as possible per question since back-and-forth communication cause friction which resulted in their problem got resolved slower.
Also the (user) devs should self-reflect, isn't it annoying to receive bug report without adequate information?
"Be verbose. As verbose you can be. If you can say something in one sentence or three paragraphs (with three overlapping or identical examples), choose the latter. Searching for signal in lots of noise is a favourite pasttime of many developers."
At one shop I worked at, the devs just started filtering the output of one tester to the trash. Not that she didn't have something useful to say. It just wasn't worth dealing with the other 99 posts that were noise.
It's similiar to my dating tactic:
"Want to go for a drink with me?"
"Want to go for a drink with me?"
"Want to go for a drink with me?"
"Want to go for a drink with me?"
"Want to go for a drink with me?"
"Want to go for a drink with me?"
"FINE YES!"
You should reverse-engineer your dates: "You really don't wanna go a date with me." Unfortunately it works. Problems will arise when your date will realize she really shouldn't have gone on a date with you.
Even better solution: ask to be paid for (non developer-to-developer) support. The best way to prevent DOS is to have a price. Not that it makes interacting with such jerks fun, but at least you get something in return.
If anyone wants to contribute to a FOSS project but aren't confident about their coding chops: fleshing out bug reports and clearly defining their scope will make a HUGE difference.
I think this illustrates why FOSS hasn't taken, and probably won't take the "mainstream" by storm.
Users communicating directly with developers is a nice idea that sounds good at first, but unfortunately it can't really work when
a) there are many orders of magnitude more users than developers
b) users are not technologically advanced enough to provide the developers with useful (and preferably only useful) information about the bugs
This means that developers are effectively DoS:ed to death when trying to directly support a piece of software with lots of non-tech-geek users. What could solve the problem would be a group of people between developers and users which could translate normal language to and from tech-speak, and evaluate the importance of different bugs. I guess this can be automated to some extent with bug-tracking software, but I don't think it's enough when the software in question has lots and lots of users.
Here's the simple algebra. Let's say (as the evidence seems to suggest) that if we interrupt a programmer, even for a minute, we're really blowing away 15 minutes of productivity. For this example, lets put two programmers, Jeff and Mutt, in open cubicles next to each other in a standard Dilbert veal-fattening farm. Mutt can't remember the name of the Unicode version of the strcpy function. He could look it up, which takes 30 seconds, or he could ask Jeff, which takes 15 seconds. Since he's sitting right next to Jeff, he asks Jeff. Jeff gets distracted and loses 15 minutes of productivity (to save Mutt 15 seconds).
http://www.joelonsoftware.com/articles/fog0000000068.html
The entire discussion about the zone is enlightening. If you haven't read it, do so; it'll make you think during your day.