I spend a lot of time in the forums on various web sites, trying to assist people with getting help online. It’s shocking how hard they make it. Let’s talk about it, just a little.
Tell Me the Real Problem
One thing you see a lot is that people, for whatever reason, will absolutely not simply state what the actual problem is. You’ll get stuff like “What SQL Server internal behavior prevents dynamically naming local variables?” And you’re left scratching your head, why on earth would someone want to dynamically name local variables? Only to find out, after lots of comment & discussion, they thought that you needed to rename variables when changing values.
When you get stuck, take a moment to describe the problem, but aim for the root of the problem, not peripheries. “I want to do X. I’m doing X. It looks like this. The results are this when they should be that. What am I doing wrong?” That’s the “magic” formula.
Show Me the Code
In the example above, just showing what was happening in the code would have made everything clear almost immediately. Yet, over and over, people won’t show you the code. They’ll tell you the error. They’ll give you lengthy explanations of obscure business use cases (many of which are screaming for pushback, that’s a discussion for another day). Yet, again, for unknown reasons (although, sometimes, people are convinced that they’re T-SQL is top secret, more on this in a moment), they will not simply paste the code to show us what’s going on.
Now, as to your code being secret, it isn’t. There are only so many ways to write a SQL statement. You have probably not come up with something truly unique that’s going to revolutionize SQL coding. Now, your parameter values are potentially secret, certainly. Your table & column names may also be secret (or they may not, shockingly enough, a lot of us will name our customers table, Customers). You may have local variables or parameter names that are proprietary. Fine. Change them, then post the code.
Probably the single biggest “trick” to getting help online is to simply post the code.
Oh, BUT
Please, use the tools on the different web sites, whatever they may be, to mark your code as code. Where possible, format it, please. Please! Can you easily read that single line of T-SQL that scrolls a half a mile to the right on the screen? Me neither.
Give Me Data
You can’t tell me “It’s slow” and expect me to understand that, in fact, you mean that it takes longer to run than you want, or it’s using more resources, or, what have you. Instead, let’s have a “I’m trying to do x. This is the code. The performance time is 42 seconds and it should be 42 milliseconds. It’s using 42 cpu and 42 memory and 42 i/o. I’ve included the explain/execution plan (or here’s a link)”
I get it. You might not actually know about how to measure performance, or what an explain plan is. That’s OK. Just don’t get mad when we ask you for that information. Simply say, “New person. Not sure what that is, why you need it, how to get it.” We’ll start helping you with that then.
Also, since I am primarily talking about databases, give me data too. Your data set, structure and data, may be unique. Cool. Give me an example set of data so that I can work with it as I attempt to answer your question. Don’t force me to build my own tables and fill them with my own data to figure out your problem. Provide that stuff.
Some problems are silly simple. Some are not. They all require information, in varying amounts, so if you’re getting help online, give me the data.
Please Respond
People regularly post a question, provide some follow up, then disappear into the night. I may have posted several additional questions, or some good help. Yet, I don’t know if things worked out, if the advice helped, if they’re still stuck or what. Just let us know what’s going on.
My favorites are the ones where someone will post a question. They’ll get a bunch of comments or requests for data. No response at all, until, a day or three later, you see “Same problem, any help?”. You scroll back up and easily see several requests along the lines above, yet, no response.
Please, respond, even if it’s just to say you don’t understand.
EDIT: One more point from the comments. If you solve the problem on your own, let us know what that solution is. Lots of people search the forums for answers before they post a question (good habit by the way). If someone sees your question and it matches their problem, you could help them by saying how you solved it.
Remember, You’re Not Paying Me
I’ve got a problem. I want to help. Yes, that is a problem. It makes me keep going back to the forums and trying to help out.
YET!!
You’re not paying me.
I frequently will only answer forum questions in the morning. And then I won’t look at them again until tomorrow. I get it, for you, your problem is URGENT. I totally understand. Yet, it’s not a part of my job to get you your answers in a timely fashion. Heck, I might even go off for the weekend. Please remember, you’re not paying for a service here, so if you have to sometimes wait for answers, that’s just the nature of the beast.
Some Additional Help
I’m not trying to assign homework here. However, if you want to take a moment, Jeff Moden has a great post on how to post data on forums. It’s a useful read because posting data with questions is important. Gail Shaw wrote a nice post on how to ask performance questions. This covers in a lot more detail several points I made above. Both of these are extremely useful.
Getting Help Online
I know this has come across as a bit of a rant. I really don’t intend it that way. Instead, I’m hoping that some explanation as to why so many of us who try to help out online, ask you for so much information. It’s not about making you work for answers or something nefarious like that. Instead, it’s about making it easier to understand what the core issue is. If I know what you’re trying to do, I can help better. It’s about know what your code is doing, again, so I can better help. If I have enough data, I can readily answer your questions (or find someone who can). So, please, help me, help you.
The one that frustrates me is when the person asking for help posts in the forum that they figured out the problem and does not provide what they did to fix the problem. To me this is like asking everyone else to be generous of their time and effort and refusing to return the generosity.
Good point. A lot of people will search prior to asking a question. If they see the same question, having the answer there would sure help.
Have you never worked in any kind of help desk or IT Support role? Missing code examples or details pales in comparison to what most help desk technicians deal with when they get requests like “Report broke” or better yet “computer broke’. With online forums you’re usually dealing with someone that has some minimal level of computing knowledge and simply just doesn’t realize some needed details are missing. Imagine getting a request with the subject line “Query Broke” and nothing in the details except “Query Broke”. I’ll guess you’ve not got a request for help that vague.
Now let me throw one back at you. What might cause someone to be hesitant to post actual code? How about unnecessary and unwarranted berating of the user over the code instead of just helping with the issue? I used to be very active at SQLServerCentral.com and after enough instances of it I got tired of being critiqued for something that was not mine. In my case I have to work within a pre-defined DB. I can add some things, make some changes but I can’t re-design a table or a stored procedure created by the vendor who’s application uses the DB simply because it’s not of good design. Even if I note within my initial post that this is the case, that what you are about to see is not of my design I still inevitably get at least 1 sometimes more responses critiquing the design instead of helping me figure out how to do what I need to do. The best way to drive people away and or get them to be more vague next time is to be critical of them instead of helping them.
I’m not citing you out specifically but there are more than a few SQL Gurus out there who could learn to be a little more polite themselves. Often those seeking help especially if their new and epically if their in the position they are not by choice but because they were the unlucky developer choose to play the role of the SQL guy (because many development groups don’t treat the SQL/DB Side of their application seriously) simply don’t know what is needed and while articles like Jeff Modems are great the person still needs to know such an article exists.
There are also issues with NDA, someone may not be able to post the actual code and while yes there are tools/sites you can use to scramble code so you’re not violating an NDA that’s back to the same issue of you don’t know what you don’t know. Those tools/sites were available for many years before someone told me about them.
If you want to help then do not assume the person requesting help is as knowledgeable in how to ask for help as you are. If key items are missing like code let them know optionally including a link to Jeff’s Best practices article. If afterwards the requestor continues to be unhelpful themselves than that’s on them but don’t assume that initial post is lacking because the person requesting help thinks their code is super secret or they just want to be difficult; they probably just don’t know what they need to know to get the most from online help.
OH, no doubt people are heinous to one another online. Never for a moment would I deny that. And yeah, I’ve personally been attacked for posting questions that were “stupid” or “I was doing it wrong” or any number of other non-helpful responses. Right there. And, maybe another post in the future talking about how we ought to be treating people is in order.
I guess this did come across as more of a rant than I intended. I was worried about it, but still wanted to post it anyway. Quite frankly, sometimes it’s difficult to help people online. And yet, broken me, I’m still trying. The intent here wasn’t to berate people, but to try to inform them why they’ll get so many requests when all they desire, and I get it, is an immediate, and hopefully simple, answer to the question.
Also, yes. Years in support and on call. Close to decades really.
Nice article, Grant. Thanks.