One of the most important things for a programmer to know how to do is find information and tools that he needs. The Internet makes it very easy to do this in general. In fact, it makes it so easy that people who are new to the scene may be frustrated by how often they are told to "go do a simple search" to get the answer to a question. Here, we try to share the few simple tips that you can use to be successful in following such advice, and stop asking us questions you could answer for yourself in 20 seconds.
Web-crawling search engines
The standard search engine of this type is Google. Web-crawlers attempt to index the entire web by following all the links they can find. If something is on the web and meant to be available to the public, then chances are that you can find it with Google with a very small amount of work!
A Google search is the usual first step in looking for information on a technical topic. The trick is to try to make your search as general as possible while still narrowing down results enough. You can read Google's search tips for some short but helpful advice here. Don't give up if your first search doesn't return pages that help you. Try some other phrasings of your search query. Also, although Google uses clever algorithms to try to display the most relevant pages first, you'll probably want to view several pages of search results if you don't find what you want after a couple of query rewordings.
All in all, after a few search attempts, you'll soon become quite competent.
USENET
USENET is a network of Internet discussion groups that well predates web message forums. You can get lots of great help on them, and engage in many interesting conversations. They're also arranged in a mostly canonical hierarchy, allowing for search engines like Google Groups to search through the text of most USENET postings ever made! This is very handy for finding answers to technical questions. Chances are someone has asked your question before and that the answer is recorded.
Of course, USENET is not the right place to search for generic information. People rarely post lengthy content. For example, to search for a good Perl tutorial, ordinary Google would give better results. If you search for why Windows returns ERROR_NO_MORE_ITEMS after a call to CreateProcess, not searching on Google Groups means hours of browsing MSDN for unhelpful information.
Link directories
The standard site of this type is the Open Directory with its many mirrors, with the Programming category of particular interest here. Directories rely on human editors to pick out the highest quality web sites and arrange them in a category structure based on subject. This requirement forces them to index much less information (and often less up-to-date information) than web-crawlers can, but they often make up for that in quality of what they do contain. Open Directory is very helpful for finding the acknowledged "best" web sites on certain subjects, and you should always check it if a Google search fails or if you're interested in getting more information about a topic.
Finding free software
Whether you're looking for compilers, libraries, components, or any other kind of free software, there are lots of resources available to help you find them. Besides the usual search tools mentioned above, there are a bunch of quality sites with directories of free software.
freshmeat, the oldest popular directory of OpenSource software. You'll mostly find UnixOs software here, but sometimes projects will also have versions for WindowsOs or other OperatingSystems.
SourceForge, the standard provider of hosting services and more for OpenSource software projects. A vast majority of popular OpenSource projects today have moved to SourceForge, and you can search through information on all these projects on the SF web site. You might also want to keep SF in mind if you find yourself starting an OpenSource project and in need of hosting.
Tucows, a directory of FreeWare and ShareWare software. The fact that the software it offers is "free" (at least for trial or time-limited versions) is really only of interest to those of you stuck using WindowsOs or another commercial system, of course.
If you're using a UnixOs for which pretty much all software is OpenSource, then you can safely ignore this one.
