I've been using ColdFusion for a long time. When I started back in late 1997, I was a very novice programmer. There wasn't much in the way of mailing lists, online forums, or books. There was no Google, and there were no blogs. As a result, I developed what I'd consider a pretty self-reliant nature on the subject of programming. I had to read the documentation, experiment, and try things out. And doing this, I was able to solve my problems.

I am a member of a number of public discussion forums and mailing lists, and have been for many years. I moderate several forums and lists. Over the years, I've tried to help others by answering questions or pointing them in the right direction to solve their problems. I'd like to hope that I've helped save some people some of the pain and time that I had to go through when I was learning ColdFusion.

Lately I've been seeing a disturbing trend: a rapidly increasing number of what I will call "lazy questioners". Sure, some of these folks have always been around. But in the last six to twelve months it seems like the number of these people has been making a rapid upturn.

On the one hand, this might be good news: it seems to indicate that more new people are coming into the community. I think that's great. However, what I don't think is great is their approach to asking questions.

If you are also a member of one or more forums or mailing lists, have you also noticed the increasing number of questions like these?

  • How do I invoke a trigger from ColdFusion?
  • Why doesn't this work: <cfif IsDefined("#url.id#")>...
  • Why does my if block always run: <cfparam name="url.id" default="0" /> <cfif IsDefined('url.id')>...
  • How do I zip something in ColdFusion?
  • What is wrong with my query? [paste SQL]
  • This doesn't work please help me. [paste 300 lines of code]
  • Why doesn't this work? #XMLParse( [string with invalid xml characters in it] )#
  • Will this work? [paste code]

The list really goes on and on, these are just a few of the ones I recall seeing recently. If you're asking yourself "what's wrong with those questions?", I'll tell you: either they're horribly presented questions or they could be solved in 30 seconds just by doing a Google search or actually looking at the documentation.

So what's the problem? The next response is probably "just ignore the question if you don't have anything nice to say." That's a valid response. And it would work, provided that everyone else also followed it. But they don't. When questions like these come up (daily at this point), at least one good-natured person decides to try and help. They politely provide a useful answer. Which is admirable. I often do this myself. But after thinking about the overall situation, I've come to the conclusion that it's actually a harmful choice. Here are some of the reasons why:

First, all this does is encourage the questioner's laziness. In fact, it encourages laziness for anyone asking a question. Why would someone bother to find an answer on their own when they see they can just ask someone else and know they'll get an answer?

It also means the person probably hasn't really learned much. They certainly haven't learned how to find the solution to a similar problem when (not if) they encounter one. The old adage "Give a man a fish, feed him for a day. Teach a man to fish, feed him for a lifetime." has never been more applicable. Answering a lazy question almost guarantees more lazy questions in the future. The questioner is banking on the generosity of others, and allowing them to shift the time and effort onto a bunch of other people. And, unfortunately, it works.

Which leads directly into the next negative result, which is an overall decrease in the usefulness of the list or forum. Lazy questions decrease the signal to noise ratio of a resource. They take time and attention away from valid and well presented questions. And it's not just the initial answer. Often, when a lazy question is answered, it triggers a long exchange where the questioner says "that still doesn't work" or "what about this variation". In response, the kind folks answering keep feeding into it, many times offering additional information that the questioner would have discovered themselves if they had put even minimal effort into solving their problem through Google or the documentation.

In essence, I think the ColdFusion community is too forgiving of lazy questions. I might get flak for saying this, but it's true: we're too nice when it comes to this issue.

Now to be clear, I'm not saying we should be mean, or that we should stop answering questions. We should absolutely keep answering questions. I certainly will keep trying to help people. But anyone asking a question should understand that there is a certain minimum level of effort that should be met before you ask. To me, the minimum level of effort is:

  • Have you actually tried to run the code? What was the result?
  • If there is an error, be able to provide the exact error to the best of your ability
  • Have you read the documentation?
  • Have you searched Google?
  • Have you searched the past threads/messages?
  • If the problem is SQL-related, have you run the query directly against the database, outside of CF?
  • If you plan to paste code, have you eliminated all extraneous code and limited the code to only what is involved in the problem?
  • Have you attempted minimal debugging with cfdump, cfabort, or cftrace?

This is not a lot to ask. In fact, this should be done out of common sense and common courtesy. If someone chooses not to meet this minimum level of effort, they should be met with a terse, blunt response, and NOT the answer to their question. There is a much more general and lengthy resource on this subject at the Smart Questions FAQ.

Here are a few situations where I say the questioner's laziness should be called out:

  • The answer could be found by simply reading the documentation on the tag or function, and it is obvious that they have not
  • The answer could be found with a 30 second Google search
  • The questioner is asking an advanced question on a complex subject when it is clear they have limited understanding of the subject or what they're even asking about, and they're expecting a free class on the subject (i.e. "I don't know much SQL, but how do I write this complicated query")
  • The questioner is asking if something will work when they haven't even tried to run it
  • The questioner is asking others to write their code for them
  • The questioner is pasting huge amounts of code and expecting others to sift through it

In many other communities, lazy questions are met with harsh responses that range from "RTFM" to "JFGI" to derisive abuse. I'm not asking the community to go down that road. I love the fact that for the most part, the CF community is a very open and encouraging place. I just think that a small but growning number of people are taking advantage of that generous spirit. It's time to impose some minimal expectations on those who would ask for our time and assistance.

I'm expecting this to trigger some interesting feedback (hopefully nothing too rough, but if you disagree and can point out some flaw with my logic here, by all means go for it). What do folks think about this issue, and what is the best way to deal with it?

Comments Comments (18) | del.ico.us del.icio.us | Digg It! Digg It! | Linking Blogs Linking Blogs | 1965 Views

Comments

  • # Posted By charlie arehart | 3/27/09 4:35 PM

    I think it's a fair comment and concern, Brian, and I agree with your proposed solution. I'd say it's what I do, with a tendency to point people to specific articles, blog entries, or docs with more on a subject. Some people rib me about that when they're my own articles, but I'm simply most familiar with those. :-)

    Indeed, perhaps part of the challenge for some is they may not themselves be familiar enough with available resources to point to specifics, which makes them perhaps then able to offer nothing more than what seems an RTFM comment, but really, at least if they *know* that something's well documented they could at least confirm that in an answer. Of course, some things really aren't so well documented, but that's where blog entries and articles often fill in the gap.

    We used to be able to point to articles in the CFDJ (if you could stand the popups and auto video playing.) Now we have the FAQU but for the most part it's not available online, but at least if one knows an article may have covered it, it's worth mentioning. As you say, we need to teach people to fish.

  • # Posted By Michael Evangelista | 3/27/09 4:42 PM

    As one who was able to come pretty far pretty quickly based entirely on the generous helpful nature of others in the CF world, I am fairly sympathetic to both parties. On one hand - c'mon noobs, at least try google, try rtfm, make an attempt to answer it yourself - I joined experts-exchange.com and found lots of help there, $10/month... (and then, if you still really cannot figure it out, hell yes - please ask, that's what the ask-machine is there for!)

    On the other hand, I think the problem is not so much the growing number of level-1 questions - I agree this shows the CF community is in a surge, which is great for all of us - but rather the fact that very few people who get to 'level-2' stick around to help answer the next generation of level-1 users. Like with the main Adobe forums and many other user support groups, a small percentage of people (the level-3-and-above folks, mostly) are trying to ( and in some cases outright expected to) answer all of the questions from folks on all levels.

    If the 'stick around and be part of the community once you've figured it out' movement can catch up to the 'wow cf is cool but why is my code broken' crowd, we'll really have something.

  • # Posted By Sean Corfield | 3/27/09 4:51 PM

    @Michael, I'll point out that many of the 'level-2' folks move on because the signal-to-noise ratio has gotten so poor due to too many 'level-1' questions. Brian's point is very valid: today's 'level-2' folks had to figure most of this out on their own - and there wasn't so much noise on the lists so it was relatively easy to stay current and help people. The noise has gotten so bad now that very few 'level-2' people have the luxury of enough time to handle it.

    I withdrew from most high-traffic mailing lists a few years ago because of time constraints. These days I'm really only on a handful of lists - a manageable number where I can cope with the time necessary to help folks. But I do get very frustrated with the lack of effort a lot of people seem to put into their questions (and their search for answers).

    When I had to learn this stuff, there pretty much was no 'web', let alone Google, and there were few mailing lists (although there was Usenet and IRC). That meant you really had to experiment and learn the basics - even under a deadline - because there were fewer people to ask and they were nowhere near as helpful as the CF community tends to be today!

  • # Posted By Charlie Griefer | 3/27/09 4:53 PM

    Brian:

    I agree that it can be frustrating to see these types of questions asked, especially when it's a pattern that may seem to be increasing rather than decreasing. Like you, I often point these people to the Smart Questions FAQ.

    But I'd like to address the issue from the perspective of the "good-natured" people who often respond with an answer (giving the fish instead of teaching to fish).

    When I'm learning something new, I'll often sign up for mailing lists or forums dedicated to that technology. Right now, for example, I'm on the jQuery mailing list (I consider myself a jQuery n00b). When people post RTFM questions, I do answer them. But I use it as a learning experience for myself. I'll see a question and think, "hmm...I bet I can figure that out." In doing so, I've learned something.

    Back in the day, that's how I learned JavaScript. I hung out in a JS IRC channel, and when people would come in asking the basic questions, most would ignore them. I took the question, ran with it, figured it out, and posted the solution. It helped me out a lot. Whether it helped out the person asking the question... can't say. They just had a fish :)

    Anyway, right now on the jQuery mailing list, I think I'm "that guy". The "good-natured person" that decides to try and help. But not necessarily out of a sense of benevolence. It's mostly to help me. I suppose a happy compromise would be for me to get the learning experience by figuring out the solution, and posting it along with a link to the Smart Questions FAQ :)

    So if it helps any, bear in mind that the folks asking these questions may actually be helping somebody else out by giving them the opportunity to learn something (in some cases, at least).

  • # Posted By Chris Mallinson | 3/27/09 5:17 PM

    Really good post. I completely agree, but I think there may be a reason for this. I am noticing that more and more companies are pushing web development responsibilities on people without any programming background. I have talked to many people in my organization, and in others, who are responsible for ColdFusion websites - mostly intranets - and are not developers.

    ColdFusion has made it possible for a person who knows only a bit of HTML to edit some of the dynamic aspects of sites. I've actually trained some non-developers to edit small parts of our intranet using a few ColdFusion tags. They love doing it, and it's helpful to me. The problem is - their boss now thinks they are programmers, and pushes more responsibility on them when my time is not available. Many posts asking for help with ColdFusion are from people like this.

    I think it comes down to a lack of respect for the talents of programmers, and the idea that instead of hiring a good developer, you can just train people to take on those tasks.

  • # Posted By Andy Sandefer | 3/27/09 5:51 PM

    @Sean
    I'm glad to say that I've only bugged you twice. 1 time you really helped me with a worthy cfform issue and the other time you laughed and told me to stop using SQL Server (I'm not mad - I got a kick out of it and I've also been championing MySQL for a long time).
    @Brian
    I can say that as someone who has been learning a great deal of CF over the last 4 years that for a short time I was highly guilty of sending Ray Camden requests that I should've just figured out for myself. I've really decided recently that I learn and retain much better when I'm forced to go back to the docs. I too can remember way back when I was writing 4GL Client/Server ERP apps and there was no Google, forums, etc. This has been on my mind recently (focusing on beating myself down perhaps!) so I'm actually glad that you've brought attention to this disease - let's call it CF_WillYouSolveIt4MeSoIDontHave2UseMyOwnBrain disease.

  • # Posted By Paul Carney | 3/27/09 6:16 PM

    Brian - thanks for calling people on this. Even in society, we are shying away from calling people on behavior when there is a better way. Kudos to you.

    I also think that Chris's point is dead-on: CF is so easy to learn to use that you exhaust your noob status quickly and then find yourself in trouble, grasping at any lifeline available to you.

    That is why I have always hired people who have programming backgrounds, in some language, because it is so important as you get deeper into the solutions. They may not have a college degree, but they have shown that they have ability to program.

    I hope your post helps a few new folks modify their behavior and use the technical resources (like Google and other searches) first. In fact, I find that every time I do those (and still do after 10 years of CF programming...), I find other little tidbits!

  • # Posted By Sean Corfield | 3/27/09 7:04 PM

    @Andy - and others - I have to say that I really don't mind getting direct IMs with questions (and I'm pretty open about my list of IM nicknames). That's direct, focused and, frankly, fairly low traffic. If I'm busy, I can always say 'no' or (more likely) 'later'. I just don't have the bandwidth to deal with a mailing list or forum that generates dozens of random questions every day.

    Besides, anyone who pings me repeatedly on IM tends to get reminded that I really like iTunes and a gift certificate buys you a lot of 'Q&A credits'... :)

  • # Posted By James Morrow | 3/27/09 9:47 PM

    Good post, Brian.

    I like to try to respond to those types of questions with an appropriate URL or two, along with how/where I found the links.

    My hope is that if I provide the appropriate Google search string, it will help spur them on to more independent information discovery of their own.

  • # Posted By Phillip Senn | 3/27/09 11:38 PM

    Not having a job puts a sense of urgency in your training.
    Also, we might be seeing a "new economy" of education, where people crowd source their tech support.
    Twitter is allowing people to have a hive mind.

  • # Posted By Allen | 3/29/09 8:11 PM

    I think something like the above list of question would be a good one to use for these questions. Seems like the real problem is helping people learn to fish, so to speak instead of just handing it over to them. So help them learn how to trouble shoot the problem and solve it rather than just forking over some code.

  • # Posted By Qasim Rasheed | 3/30/09 7:18 PM

    Well said Brian especially after working with you for few years, I know that you will definitely go an extra mile to help someone.

  • # Posted By Chris Dawes | 3/31/09 8:23 PM

    We have the same problem at the ExtJS forums... I guess the latest generation of programmers are in lifestyle lazy (ie everything delivered now on a plate) so why should forums be different. I guess everyone is just used to Googling the answer... and although even Google is becoming more and more irrelevant without the perfect search phrase, people expect instant answers, and their going to be dissappointed most of the time.

    There's really nothing you can do, except either 1) ignore the post or 2) encourage people to discover the right techniques by linking to a previous post suggesting such.

  • # Posted By Adrian Lynch | 4/5/09 3:44 PM

    I agree with Charlie G, I'm the same (less so now) with jQuery. I want ANY excuse to use it and seeing a question on a list or forum I'm all over it like a rash. Does it help the poster? Who knows. Does it help me? Hell yes.

    Having said that, the "This doesn't work" followed by 800 lines of code style questions, I ignore. 780 of those lines tend to be HTML with nowt to do with the problem.

    There's someone on CF-Talk at the moment who asks questions that exhibit all of the things you've mentioned Brian.

  • # Posted By Rodion Bykov | 4/11/09 6:30 PM

    Good point. If asked, it's better to help someone to understand underlying principles, rather than 'fix the 100 lines of code'. This will teach people to fish.

    It's worth mention that 'googling for answer' is great, but answers will not appear in Google search results, unless someone write those answers at least once.

    I teamed with friend who was tired of rather simple questions of his young nephew, like 'how can I make up my super-duper website'. It's better to write once then tell 100 times and we wrote couple of articles about Web, HTML and stuff. Now we are pointing newbies to that site directly :) Looks like RTFM, but this FM written in easy terms for specific audience.

    From my experience, most relevant and precise answers I'm getting from sites like Livedocs (of course), CF/Flex Cookbook and Flex Examples. This guides me to idea that if I may share something useful, I should put it to any blog and let Google do the rest.

  • # Posted By Matthew | 4/13/09 8:58 PM

    @Brian. Great post. I agree with most of it but would just like to make one comment in defence of the learners/level1s (we were all one of them once). I tend to see a lot of extremely complicated/jargon centric responses from CF gurus out there. I recall getting responses sometimes and having to read up on up to 10 of the jargon words used before I could even understand the response. You may respond that this is good because I will have 'learned to fish' which I agree is very important but sometimes it results in 'learning to catch fish with chopsticks' i.e. takes up so much time and distracts from getting on with the job. Just my 2c.

  • # Posted By Tom Chiverton | 4/20/09 6:55 AM

    I have noticed the trend, yes. I used to reply with either something scathing or a link to the same ESR article, but I've stopped being bothered so much by it. Now I just mark the thread as ignored.

  • # Posted By Matt Quackenbush | 5/8/09 2:34 PM

    @ Brian - This has to be the single greatest post you've ever written. Ever. As you know from our personal conversations, I have long lamented over this exact topic. I absolutely *love* to help people, but I refuse to help -anyone- who does not help themselves (which is just a rewording of your "teach a man to fish..." quote).

    @ Sean - RE: signal-to-noise ratio. Thankfully this thing called 'Gmail' was invented. I use it for all of the lists I'm on (pretty much the only thing I use it for), and have well over 30,000 unread _threads_ in my archives. Why so many? Well, I refuse to open/read any topic such as the ones Brian mentions in his post (and there are even a few people out there whose threads I will completely ignore if they are the original author), but since I don't have to delete anything with Gmail, I just leave them archived in case there happens to be something worthwhile in the thread that might come up in a search later (when I'm searching my Gmail for an answer to a question). Gmail search is pretty damn good. :-)