If you’re going to get into any sort of technical job, you’re going to have to ask questions. A lot of questions. Unfortunately, too few people understand how to ask questions properly. Asking questions is a skill. It has to be learnt.
Here are a few of the most common mistakes I see people make every day on Stack Overflow, or on other technical forums…
1. Not enough information
“I installed Orchard, and it doesn’t work. Please help”
Put yourself in the shoes of someone trying to answer this. Can you really imagine anyone can? What are you expecting the answer to this could be?
How does it not work? What did you do? What were you expecting, and what happened instead?
Ask yourself: is there enough information for anybody who’s not you to figure out what the problem is?
Notice how asking a question that is too vague will only get you more questions in return. This is a sure sign, that you should learn to read and interpret.
2. Too much information
“[wall of text explaining your setup with a luxury of irrelevant details…]
Why does the screen flash blue when I click the green button?”
The people who are likely to be able to answer your question can’t invest a lot of their time understanding all the specifics of your business, nor should they have to. It’s nice of you to spend the time to give all those details, but that doesn’t mean you should expect your interlocutors to spend any time reading them.
Focus on the details that are immediately useful to answering the question. Distil the question itself to be free of any specificities that make it only applicable to your specific case. Not only will you make it more likely that anyone will read it to the end and answer it, the probability that your question and its answer may be useful to others is improved.
3. Aggressive rants
“I CLICKED THE F$#%ING GREEN BUTTON, AND THE SCREEN DIDN’T FLASH BLUE. I CAN’T BELIEVE PEOPLE BUILD PIECES OF S&*T LIKE THIS AND THEN EXPECT US TO USE THEM.”
Don’t insult the people you’re asking answers from, and don’t insult their work either. Stay civil and professional. That’s a simple one to understand. I can’t believe that people can be so thick in the head that they can’t understand something that F$#%ING SIMPLE :p
4. More than one question at a time
“Where is the green button? What will happen if I press it? Is it normal that the screen flashes blue? Should I build my web site with a CMS? What time is it?”
This one is subtle, and is more about human psychology and common cognitive abilities. If you ask more than one question at a time, you’re lowering your chances of getting a good answer to any of them. Human beings are not good at multitasking. Make it easy for your questions to be answered by asking them one by one. Doing so will also avoid creating a messy and frustrating thread. Last but not least, your questions are going to be more googleable if they are isolated and stand on their own.
5. No question at all
“I pressed the green button. The screen flashed blue.”
Be sure that your question actually is one. Sometimes, symptoms like those in #2 can be seen, but no discernable question can be extracted from the verbose mess. Have a clear and concise question, that makes it very obvious what you’re asking, and that ends with an actual question mark. We should not have to figure out what your question is. You have to tell us.
6. Expecting people to work for free, or to do your homework
“My boss asked me to evaluate Orchard vs. Umbraco. Please send me a spreadsheet of strengths and weaknesses of each, with a dissertation of why your preferred system would be the right choice for my business.” … [five minutes later]… “Why has nobody answered my question? Is this project dead?”
“Give me teh code”
“What does ‘CMS’ mean?”
There are many people out there who are spending a lot of their time answering questions, so it’s easy to get carried away and expect those same people to do for free work that you should normally pay them for, or that you should do yourself.
You must do a minimum of basic research before you ask the community to solve your problems. Any question that is likely to be answered with a link to Wikipedia or to LMGTFY is simply not worth asking. The answer is already out there. You are doing yourself a disservice by being lazy, you’ll look like an idiot, and your question is not going to help anyone else.
Do not ask people to do your research or your homework, or if you do, be prepared to pay them for it.
Ask questions, lots of them: it’s the best way to learn. There are people out there who are eager to give you answers. But for this to happen, you need to treat question asking as a basic technical and human skill. I’m only aiming at the low-hanging fruit here: there is much more to this than a blogger could hope to address in a simple post. Consider your own weaknesses and work on them. You are going to notice the quality of the answers you get rise steadily as you do so. You are also going to learn how formulating the right questions often gets one halfway to solving the problem.
CMS is extremely important strategically for any web company. About 35% of web sites use a CMS, and the top ones are all PHP (WordPress on its own is more than 20% of all web sites). In other words, if you care about the market share of your web platform, you need a good CMS running on it.
Before I left Microsoft, I was working on Orchard. I’m one of the people who founded and built it, from within the ASP.NET team, with great support from management, even after I left the company.
Today, the team has one engineer working full-time on the platform, and that’s marvelous. It’s not just any engineer either, it’s Sébastien Ros, one of the best developers I know. Microsoft is one of the main sponsors of the Harvest conference, and they also use Orchard in several web properties.
For all these reasons, I’m having a really hard time understanding the deafening silence from Microsoft’s web platform team about CMS in general, and Orchard in particular. Updates on what’s new on the platform never include Orchard. For instance, when I asked some of the Scotts (Hanselman and Hunter; and yes, you have to change your name to Scott in recognition of the great Gu if you want to join that team) on Twitter about why there wasn’t a video about Orchard among their great new batch of “Building Modern Web Apps” videos, I got what looks like a knee-jerk reaction from Scott:
@shanselman: @bleroy @coolcsh and the DotNetNuke one and the sharepoint one and the umbraco one and the sitefinity one? You're welcome to make them.
I have several things to say about this.
1. I did make videos, lots of them, on my own time, and others do too. None of them have been relayed in any blog post or tweet that I’ve seen from the team. And of course, we’re talking about Microsoft producing new videos here, not some guy making a YouTube clip…
2. There are videos about WebAPI, but not about ServiceStack; or about MVC, but not Nancy (although to be fair, Nancy does get some official support from Microsoft). Microsoft talks a lot about NuGet (an Outercurve project, like Orchard), but not of OpenWrap. Scott’s argument does not seem to be a valid comparison.
3. Yes, you should absolutely talk about and support the .NET CMS ecosystem. Why exactly shouldn’t you talk about DNN, Umbraco, Orchard, and even Sitefinity? They are all beautiful platforms that help the .NET ecosystem grow. Indeed, why not have Microsoft contribute to DNN and Umbraco as well?
We love C#, we love ASP.NET, and we love Orchard. Does Microsoft? http://www.asp.net/orchard
UPDATE: I got an answer from Scott Hunter on Twitter: "@coolcsh: @bleroy @shanselman @sebastienros We might have an exciting announcement around Orchard soon. We will try and push more." This makes me quite happy. That's all I'm asking for and I thank Scott for it. Cheers, carry on then.