SQL Server and .NET Training and Career Development (part 2)

In Part I of this series, I discussed the role and value of conferences in the career development of SQL Server and .NET developers. In this article, I move on to discuss online technical forums, focusing on what to do before you post on a newsgroup or forum in order to derive maximum benefit from them, and avoid trying the patience and goodwill of the forum community.

Part II. Forums

In Part I of this series, I discussed the role and value of conferences in the career development of SQL Server and .NET developers. In this article, I move on to discuss online technical forums, focusing on what to do before you post on a newsgroup or forum in order to derive maximum benefit from them, and avoid trying the patience and goodwill of the forum community.

Flipping the Bozo Bit

A number of years ago, Jim McCarthy, in his book, Dynamics of Software Development, included a short chapter called “Don’t Flip the Bozo Bit.” The thesis of the chapter was that, when someone in your workgroup says something foolish, or asks a silly question, or in some other ways shows a lack of common sense or technical prowess, your natural predisposition is to “Flip the Bozo Bit,” meaning that you discount all future communications from the person involved. The thesis, rightly, goes on to identify this “bit flipping” as a negative and ultimately counterproductive reaction that will cause you to miss out on subsequent sensible and reasonable ideas from the offending individual. That said, it is a natural response, and it is in your own long term best interest to avoid having others discount anything you have to say.

The same thing happens in newsgroups and forums. When you ask an inappropriate or silly question or give a foolish response, the other members of the forum may tend to “Flip the Bozo Bit”, and treat any future posts from you with suspicion. You may realize you’ve been bit flipped immediately, when you get a RTFM (Read the, um, Fine Manual), or you may just find that you get few responses to your future questions. These days, it is critical to your performance on the job that you leverage the knowledge of the entire community who are using the same technologies and/or products as you. If you do not use these resources correctly, you will find yourself at a competitive disadvantage. As a moderator on the http://www.asp.net/ forums, I have seen a number of people ruin their online reputations just by not thinking before posting.

In saying all this, I don’t intend to paint a picture that is too intimidating- especially for newbies. Don’t be afraid to post. Newbies especially will inevitably ask the odd silly question and people accept that (especially if you explicitly identify yourself as a novice). Furthermore, if you follow the guidelines in this article you’ll minimize the risk of people flipping the bozo bit, and maximize your chances of being given an intelligent and helpful response when you post on a forum or newsgroup.

Forum Faux Pas’

People who post regularly on forums are there because they genuinely like helping people. They are usually a friendly bunch who will forgive the odd “senior moment” and are generally tolerant of someone who is clearly trying hard to find their way but has misunderstood a concept. However, they are all busy people, donating their time for free amidst hectic work schedules, and there are certain forum behaviors that really will have them reaching for that bozo bit. So, before you hit the Send button on your next message to a newsgroup or forum, make sure you can answer “no” to the following questions:

Is this question off topic?

One of the cardinal sins in a newsgroup or forum is posting an off-topic message. If the newsgroup or forum is dedicated to SQL Server, posting a message asking about how to access an Oracle database is probably off-topic.

In very limited cases, in newsgroups or forums with limited numbers of readers who know you well, it might be appropriate to post an off topic message. However, even then you should preceded the subject with [OT] and instruct any replies to be sent to a personal email address.

Am I asking someone to do my homework for me?

I’m talking quite literally here about students who post homework questions on forums and expect forum members to do their work and thinking for them – though the concept can equally be applied to “lazy” developers.

When your professor said you could use the Internet to research the answer to a homework question, he or she likely did not expect for you to post the exact question on a forum for someone else to answer! Veteran forum contributors are very adept at spotting these, and questions such as, “What are the characteristics of an Object Oriented Language? Describe these characteristics” will generally get the cold shoulder. If you have a homework question to answer, the solution may be on the web, but asking for a volunteer on a newsgroup or forum to directly answer the question for you is not the correct approach.

Am I asking a question that is answered in the documentation?

Asking a question that is clearly and concisely answered in the documentation will likely get you a terse RTFM response, if anything at all. As Tom Kyte points out in his blog, the RTFM response serves no real useful purpose and can be counterproductive and intimidating, especially for the newbie. However, it is an unfortunately common response from frustrated forum users (GIYF – Google is your friend – is a more-recent variant).

Fortunately, SQL Server users have free access to product documentation that is quite good. The standard documentation for SQL Server is known as Books On-Line (BOL). BOL is installed with the developer tools for SQL Server, and is generally updated as the product is updated. Alternatively it is available online, here.

BOL can be accessed either by use of an index, or it can be searched. The index is good, but be aware that the first entry you land on might not necessarily be the one you want. For example, when I search my copy of the SQL Server 2005 index for UPDATE (the T-SQL statement), the first entry I find (highlighted in figure 1) actually provides information on the SQL Server Mobile command.

230-ReillyFig1a.gif

Looking further down, you can see ” UPDATE Statement (SQL Server)”, which probably has the information you want.

The quality of the documentation in BOL does vary. In my opinion, the T-SQL section provides a model for how all documentation should be written. In addition to the detailed explanations, there are almost always examples that demonstrate exactly what you need. Unfortunately, the documentation for some of the other products is less clear. If you have looked at the documentation, say so. If you do not understand what the documentation has to say about the problem you are having, do be specific about what has you confused.

Is this a Frequently Asked Question?

For regular and dedicated forum contributors, nothing is more frustrating than being asked the same question hundreds of times. It is for this reason that newsgroups often provide a frequently asked questions (FAQ) page. In addition, many web forums also allow messages to be “pinned” to the top of the forums list that provide solutions to common problems or that illuminate the true meaning of confusing error messages.

A classic example of such a pinned message can be found on the http://www.asp.net/ forum dedicated to Microsoft Access:

“FIX: Operation must use an updateable query – error when using Access.”

Many developers understand what this error massage means in a traditional desktop application: not all queries are updatable, and this message might be returned when, for example, Access cannot update the query because there is no unique identifier included in the query that will allow it. However, users are often totally befuddled when they get the error in an ASP.NET application. While it speaks of the lack of an updatable query, the reality is that the error is most likely caused by a lack of rights to the folder where the Microsoft Access database resides.

You certainly want to read the FAQs and pinned messages before you post a question. Even if you are not having a problem, they can save you a lot of time. FAQs are asked frequently because they happen all the time. Perhaps the problem has not happened to you yet, but it probably will someday.

Getting Useful Responses

If you always make sure that you follow the previous guidelines, then your only real concern is how to present your problem clearly and in a manner that is as conducive as possible to helping your fellow forum members help you.

Essentially, you need to:

  • Explain what you are trying to achieve (and why, if necessary)
  • State the problem clearly
  • Include the smallest possible, complete test case (including scripts to create and populate test tables)
  • Briefly describe the research/solutions you’ve already tried

So, before you post a forum question, carefully consider the following questions:

Is my question too generic?

Asking a question like “How do I read SQL Server data from a C# application” is way too generic and unlikely to elicit any responses beyond those suggesting that you R the FM, or that more information is required.

There are plenty of possible solutions to this type of problem. You need to do some research and try to pinpoint the technique that is best suited to your needs. Then take your best stab at the code. If the code has problems, then you will have a specific question to ask, and the code will provide a jumping off point for those who will help you. People will be much more inclined to help you if it’s clear that you are trying your best to help yourself.

If you are unsure of the best approach, then someone will usually be willing to offer pointers, providing that you clearly present what it is you need to achieve and why, along with a brief summary of the routes you’re considering.

Am I providing specific information about my problem?

In addition to answering an FAQ for the hundredth time, the other sort of post that drives people crazy is the one that describes a situation and then says “It doesn’t work. Why?”

Huh?

Exactly how does it not work? Is there an error message? Is there some symptom in the data itself, such as old data being saved? Does the problem occur every time? What version of the product are you using? Explain your problem as clearly and in as much detail as you can. You may have been pondering the problem for hours but other users will be coming to it fresh and you can’t expect people to immediately “get” what it is you need unless you take some time and care over the explanation.

If there is an error message, then see the next but one question. If there is no error message, and it literally just does not work, then specify that this is the case, and make sure you provide a concise test case.

Have I included the code?

You should include the smallest possible section of code that can show where the problem is occurring. Including code shows that you are working towards a solution, and will encourage others to help you out. Try not to re-type the code. Copy-and-paste is best, because if you mistype the code in the post, people might spend time correcting your typing error rather than getting to the bottom of the real problem.

If at all possible, do not post pages and pages of code. Get the problem reduced to the smallest possible piece of code that demonstrates the problem. Surprisingly often, you will actually solve the problem yourself as part of this process.

Am I asking a question about a specific error message?

If you are, then you need to first go to Google (or whatever your favorite search engine is) and enter the exact error message. You may well find that the cause of the error is already documented, or at least find pointers for where to look for the cause. For instance, many SQL Server errors might suggest you look for details in the SQL Server log.

If your error message contains no information specific to your location (such as a file or machine name) then you can simply enter the exact error message in quotes. If it does contain location-specific information then only surround in quotes those parts of the message that are generic. For example, if the error message is:

WizBang Severe Error “c:\test” file not accessible.

Then you should search for “WizBang Severe Error” and “file not accessible”. Note that programmers are not always the greatest spellers, so it is possible that you will have to enter the error message with misspellings, so long as you capture the message exactly using cut and paste.

While I said that you can use any search engine, there are certain advantages to Google. If your Web search does not provide an answer, you can click on “Groups” just above the text box where you enter your search and your search will be run against newsgroups.

Google is Your Friend

I mentioned earlier that GIYF is becoming quite a common alterative response to RTFM – and it’s true that it often seems that there is little that Google doesn’t know. However, judging by some of the questions that still get asked in forums, I’m still surprised by how many people seem to give up after the most cursory of searches.

Google, and most other modern search engines, provide advanced search feature, such as shown in figure 2:

230-ReillyFig2.gif

Using this feature, you can specify:

  • Exact words or phrase that must be present
  • A set of words where at least one word that must be present
  • Words that must not be present

The other options on that advanced search screen are self explanatory. Especially useful is the ability to search a specific domain, and to use the date restriction to limit the search to more recent entries. On submitting the advanced search form, you are presented with your results, as well as the specially marked up search text that was used to obtain them.

NOTE: All of these advanced features can be accessed from the basic search feature by using the appropriate special mark up options. For example, to search for an exact phrase, you simply enclose the phrase in quotes. The book, Google Hacks, offers many useful tips on effective Google searching.

So, an advanced search for results featuring “Douglas Reilly” from the last three months and that don’t mention ASP.NET, will look something like Figure 3:

230-ReillyFig3.gif

I can see that one of the top four entries are on FindLaw, and in no way related to me. Going back to the advanced search screen, I add “FindLaw” to the words to omit, and I get the results shown in Figure 4:

230-ReillyFig4.gif

Where to Post

So, you’ve read the relevant manual, checked the FAQs, searched Google, prepared your test cases, and you need help. Knowing the right place to post a particular question will improve your chances of receiving a quick and useful response. Obviously there are a large number of forums and newsgroups to choose from so here I’m just going to mention the ones that I have used frequently and found helpful:

  • The ASP.NET forums – in addition to purely ASP.NET queries, these forums have very active sections covering Microsoft SQL Server and Microsoft Access.
  • The MSDN Windows Forms forum – not nearly as active as the ASP.NET forums, but also worth searching and posting.
  • The SQL Team forums – covers all areas of SQL Server, including a good New to SQL Server forum and FAQ page.
  • The Wrox Programmer-to-Programmer forum – a good place to ask general .NET developer questions.

Conclusion

The Internet is an indispensable resource for anyone doing any sort of software development work. If you are not leveraging the Internet newsgroups and forums to assist you in your job, then you are costing yourself valuable time, and costing the folks who pay you, be they an employer or a client, money.

But getting useful responses from forums takes more than a computer and an Internet connection. You need to think before you post, else you risk having people “flip the bozo bit” and treat your posts with suspicion.

Don’t:

  • Ask off-topic questions or ones that are clearly answered in the manuals or FAQs
  • Expect people to do your work and thinking for you
  • Assume people have the time or patience to wade through a ream of incomprehensible code and explain “why it doesn’t work”

Do:

  • Do your basic research. Read BOL, search Google.
  • Explain your problem clearly and in detail. You are close to the problem, other forum users aren’t.
  • Supply concise, working test cases.
  • Spend time on the forum helping others – it’s a 2-way street.

If you follow these basic guidelines then you should maximize your chances of getting the answers you need, will be a valued contributor to a healthy and active forum, and will be neither a giver nor receiver of an RTFM.