Online research skills are critical for software programmers. It's how you learn any language, by searching for error messages and looking up reference material.
Online research is not opening a web browser, going to a search engine, and then typing in search terms. The ability to do research is a skill you learn from practice as well as reading and training. For example, search engines allow you to enter complex search terms to include or exclude topics and search one website or many. You also need to know how to validate a resource is reputable and their answers accurate.
For programmers, online research most often involves typing error messages into a search engine, clicking result links and then reading and evaluating possible answers. You might get lucky and find your answer in one or two clicks. More often, however, to fix your problem, you have to click half a dozen links or more, read each page carefully, and try different solutions. It's often the case two or more solutions work but one solution is more efficient. It's also possible to not find an answer; in those cases, you need to find a reputable online forum for your language and post your question.
This article describes how to do online research and help coders find answers to programming and computer science questions.
Search Engine Basics
Everyone knows Google is a search engine. They may know Yahoo! has a search engine. There are a number of other search engines, too. All these search engines take your search terms as input then return a page of links.
Most or all search engines let you enter complex combinations of search terms, sometimes through an Advanced Search screen. And many search engines allow companies and individuals to pay money to have their ad appear in the search results page when you search a specific word or word combination.
If you don't know these basics, now you do know.
These points are important to keep in mind as you use search engines:
- Learn the difference between paid search results and organic search results. Organic results are generated by the search engine using its own methods. Paid search results are advertising. It is possible, even likely, clicking a paid ad leads to information you need. But you should never accept one search result unless it completely meets your needs.
- Don't assume the results on the first page of search results are the most relevant. Skim at least 50 results. While websites do trick search engines, to get links to their content on the first page of search results for specific words, it's more likely a search engine does not have thorough results for your search terms on the first page. What appears as search results depends on many factors, including but not limited to the content on the site, how many links point to the content (and the reputation of the sites that link), the number of links from Twitter, Facebook, and other social media, and other factors.
- On the search results page, before you click a result, look at the website URL listed for the link, usually at the bottom of the result summary for the link. A questionable site usually will have a questionable URL, for example, boo3678.com probably is less reputable than a blog URL with a person's name, a URL with a recognizable company name, or a URL related to the topic. There are sites built to deliver malware by gaming search engine results and then having people click links on their site pages. Because people search often for song lyrics and cheat codes for games, sites with song lyrics and game cheat codes often are scam sites.
- Once you click a search result, carefully evaluate what you find. Read comments, if any, to learn how others view the information. Look for an author name, publication date, and contact information. What links does the author provide to validate their content? If the website is useful, bookmark the link and save the content, for example, email the link to yourself. However, do not stop at one result. Read several results to confirm you have the information you need.
- Be skeptical. Use several search engines, several search terms, and look at a large number of search results. Never assume the top result is the most relevant. Too positive or too negative language can be a warning sign.
Guidelines for Internet Research
There are several important guidelines to follow when you do online research:
- First, know what you need to find. A student research paper, for example, requires more focus, rigorous evaluation of results, and recording of sources than finding an answer to fix a coding error. Know what you need to find out and how you will use the information. Most important, if you don't know what you need, you don't know when to stop. You might find more results than needed and waste time. Or find too few results and be inaccurate.
- Use good tools. This includes at least two or three search engines, as well as web browser plugins like AddThis to email URLs to yourself and software like Evernote and Pocket to store and tag articles. Your web browser also should have the ability to create and manage bookmarks, for example, organizing bookmarks into folders. Your browser also should have an easy to find History page with links to sites you have visited.
- Choose your sources. An academic or technical topic requires different sources than a search to learn the name of Justin Bieber's monkey. While there are many different kinds of websites, generally they are company sites, blogs, forums, magazines, or communities. Forums and community sites, for example, might need to have their infomation validated while data found on the Nature magazine site is more vetted before publication (and their articles often include alternate views and/or refutations).
- Choose different key words and phrases. People think about a topic in different ways and use different words. You'll get the best results if you develop a list of terms based on variations of terms and different words people use to describe the same thing.
- Validate your results. A site with medical information with drug ads is less likely to be credible than a medical journal with the same information and no ads. While not always true, a messy page design can indicate the site information is less credible than a site with a clean well-ordered design. There are many exceptions to this, however. For example, many coders are experts in their fields and don't have time to worry about their page design. If you find a person or site is deemed credible by other authoritative sources, likely you can ignore the average (or worse) page design.
- Pick your results. This includes storing links, notes, and any other useful information in the form of emails or notes in Evernote or similar service.
Advanced Search Techniques
In addition to trying different combinations of key words and phrases in any search engine, the Google search engine in particular provides extra ways to refine or expand your search results. For example, you can search with synonyms or by price range. Or search for words found only in a page title. Some of these techniques work in other search engines, as well. The Google Guide (link below) is an excellent start point to discover these techniques.
Here are some common and useful ways to refine or expand your search results:
|Some or all of the search words must appear in the title (intitle:) or all search words must appear in the title of the search result pages (allintitle:).|
|define:||Returns a quick definition of any word or short phrase.|
|compare:||Returns a comparison of two or more items, for example, butter and margarine (compare:butter and margarine).|
|..||Returns a range of data, for example, price ranges ($10.00..$20.00) or date ranges (2000..2012) or other range.|
|~||The tilde (~) character before a key word will also search for synonyms of the word. For example, ~female will also search for women.|
|–||The short dash (-) character before a word will eliminate all search results with the word. For example, -women will remove any search results with the word women.|
|*||The asterisk (*) character between two key words acts as a wild card to match one or more words. It must be used within quotes, for example, “Francis * Coppola” should return “Francis Ford Coppola” the film director. However, using an asterisk to get variants for a word does not work; bicycl* will not return data on bicycles and bicycling because the operator does not appear between double quotes.|
|The word OR in all capital letters or the pipe (|) character between two words will search for content with one or the other key word provided but not content where neither one or the other word. For example, blouse OR shirt works the same as blouse|shirt.|
|cache:||Searches only in Google’s search result cache files. This is one way to find results that may not appear on the web, for example, if a web page is broken or removed. Search cache:yoursite.com to search any cached results for your site.|
|link:||Find all links to a specific web URL, for example, a link to an article on a website (link:http://yoursite.com/article-url).|
|site:||Limit results to a site or site section, for example, site:nytimes.com or site:nytimes.com/business works. Also can limit results to a top level domain, for example, site:edu to search only school sites. Leave out search words and use only site:yourdomain.com and search results will display all indexed pages for the site.|
|source:||Will limit search results to the source you specify, for example, election results from the New York Times (election source:new york times)|
Note these search operators may change over time. Also remove any space between operators and the initial key word, for example, site: http://yoursite.com does not work but site:http://yoursite.com does work.
More search operators and details can be found at GoogleGuide.com, linked in the Learn More section below this article.
Internet Research for Coders
Most software programmers do internet research to solve a problem. They might copy an error code on their computer screen then paste it into a search engine to see if anyone has a solution. Or they can state the problem and type it into a search engine.
Software debugging lends itself to problem definition. And the better definition you have, the more likely you are to find the exact answer.
For example, to code part of a WordPress template in PHP for this magazine, I wondered if PHP had a "greater than or not equal to" comparison operator. It might look like ">!=" in code. Not exactly a stupid question but, I soon discovered, not really the right question to ask. However, because I defined my question well enough, I wound up on a Stack Overflow forum page where my answer was buried in a comment about another answer. Someone said in passing, "split the comparison." Translation: there is no "greater than or not equal to" comparison operator in PHP. However, if you code "if ( (x is greater than y) OR (x is not equal to y) )" you get the best result.
This dynamic — a good problem definition + intuition + luck — makes online research for coding problems a fun treasure hunt. Chances are you find your answer. Chances are the answer will not always be laid out exactly as you expect.
If you are truly unlucky, and there is nothing to be found online through search engines to solve your programming problem, the next step is to find the best online forum for the language or topic and post your problem. Stack Overflow has become one excellent start point for most languages and technologies such as WordPress. Search these forum sites first to be sure no one has posted your problem before. If there are no answers to your problem, then post your problem. Make sure to state you searched the forum (maybe include the terms used) and found nothing. State your problem, how you got to the problem, what result you expected, the result you got instead, solutions you tried, and details about your technical environment.
Remember the Scientific Method learned in school? You know: observe, measure, hypothesize, test? Those are the types of details you want to provide when you ask for help on a software forum.
Also, and this is critically important, when you post a question on a forum (or copy/paste an error message into a search engine), be sure to remove security-related information. For example, remove file folder paths from error messages. Basically do not publish information others can use to hack a computer. You will notice on forums people are very careful about what identifiable data they include and exclude.
Generally people are happy to help on a forum if you provide actionable details and show you tried to help yourself. It's also useful to see if you can answer other questions on the forum to pass the good karma along.
In other research cases, coders know the canonical reference site for the language they're coding in and need details about specific functionality. For example, they need to learn how to parse an array in PHP so they go to php.net and type array into the search box to find a list of array functions for that language. Then they review the possible functions, look at the examples, scan the comments, try promising code to see what works, and move on to their next coding problem.
Another point: most people learn coding through endless online research of error codes, "how do I do x?" questions, and browsing search result pages. Even if a coder takes university courses and earns a computer science degree, online searching makes all their classroom work compile into experience and real domain knowledge.
Finally, a good integrated development environment (IDE) software tool for coding also includes help and auto-complete for some or most programming languages. If your question or problem has to do with how to implement a function, it’s possible a good software programming tool has the answer. For example, PyCharm when used to code Python will auto-complete your code, check your code for errors, and other tasks in the background. It might save research time if you find a great software editing tool for your language.
Internet Research Projects for Teachers
Below are a few internet research projects I found while researching this article. In looking at a range of sources, it appears these are key concepts to teach students:
- The visual and conceptual differences between paid search results and organic search results. Plus why the difference matters.
- How to tell if an online resource is trustworthy and reputable. How to evaluate information found online.
- Details about the web browser interface, for example, location of the URL bar, how to find history links, and how to bookmark pages.
- How to define their research problem and other project details, for example, sources, citation standards to use, and audience.
- How to use AddThis and other software tools to store results and take notes.
The Maine IRT materials (link below) were especially interesting because they included discussion between students to help them understand online research questions and results, for example, What is the web? And what is the source for your name?
This article is only a start point to learn the basics of online research. Links below include even more detailed descriptions of the research process, as well as links to search engines, software tools, and course materials.
Online Research Techniques
Become an Expert Google Searcher in One Hour
A free online seminar from O’Reilly by Stephan Spencer and Nancy Blachman.
Online Research Course Material
Tools for Online Research
Also In The December 2013 Issue
Troy Hunt is a software architect and Microsoft Most Valued Professional (MVP) focusing on security concepts and process improvement in a Fortune 50 company. He's based in Australia.
If you use a password you created that is less than eight characters, your password is vulnerable to hacking. Here are three ways to create and use secure passwords online.
Coding securely doesn't have to kill the joy of programming. In fact, learning how to code securely provides insights into languages and computing.
How to code an HTML email like the ones you open every day turns out to be an offbeat software coding challenge.
How to tell if a web page is secure is one of the most basic yet least obvious ways to protect your data online.
One key computing skill is the ability to use command line interface (CLI) software to enter commands to control a computer. Here are some options.
Lua is a comparatively simple programming language used in a wide range of places, from digital TVs to video games to phone applications. It's also designed to be simple to use and lightweight.
Here is how three programming languages handle a common problem: how do you organize and keep track of useful data?
Some of the most common commands you'll need for a command line interface (CLI), in a Linux command list.
Must read stories about computer science, software programming, and technology for September 2013.
Links from the bottom of all the October 2013 articles, collected in one place for you to print, share, or bookmark.
Here is a deceptively simple math puzzle at least 1200 years old.