Thursday, September 5, 2013

Dev Fu: The Art of Search

Originally article written for eImagine Technology Group at

I don't know everything. There, I said it. It did hurt a little to admit, but it had to be said. A lot of what I "know" (heavy emphasis on the quotes) is really derived from countless other developers that have blazed trails through language nuances and outright bugs before me.

As a developer, this is a realization you (should) come to early on. A propensity to waste time beating one's head against a problem instead of taking a moment to see if it has already been resolved by someone before is even something I have looked at in making hiring decisions. Knowing the right problem-solving tactic -- and being able to execute it -- is just as important as what you can remember in order to pass a standard skills test.

In this way, the skill of searching the web for answers has both an art and science aspect to it and knowing the inner-question does not, itself, always present a clear path to issue resolution. It is a combination of being on the right site, using the right verbiage, and following clues buried in the failed searches along the way.

The Right Site
Development languages tend to have their own sites dedicated to the unique issues surrounding their use, however a few sites have popped up that cater to the wider audience and are fairly agnostic to the usual "walled-off communities" that sprung up between the age of user groups and now. One of my personal favorites (and a favorite of those I work with) is Stack Overflow.

By allowing their users to gain credibility from their peers via a "vote up" and "flag" system, the community weeds out junk pretty quickly and lets valuable information rise to the top in this series of Q &A sites. Further, the tagging of questions as belonging to certain platforms and other categories allows fellow seekers of knowledge to quickly slim down the search results to the most likely and pertinent answers.

Stack Overflow is just one example in a multitude of great sites, not to mention the standard search engines that have been a staple of developers hungry for solutions to their most irritating issues. If you are looking for that killer site, ask a coworker. Failing that, do some search engine cruising using keywords related to your language, platform, etc and scan for sites that are consistently linked in results. Those are great signposts that can lead you to your future go-to site.

The Right Verbiage
So, you bookmark the site of your dreams, the massive oasis of greatness that your coworkers can't seem to get enough of, and finally have a need to dig into it. And then the results come back and don't meet your expectations. What could have gone wrong? Here are a few pointers for your next tech search that will get you on the trail faster.

  1. Feed it paste - Have a line of code giving you trouble? Copy the section giving you trouble and paste it into the search. Even though some variable names differ, often this can keep you from having to weed through vague posts that don't have much to do with your specific issue and will actually provide a shortlist of options.
  2. Selective hearing - If you perform the first suggestion enough, you will come across times that you get nothing back instead of too much. When it happens, it is time to trim back. Before pasting the code into the search, drop it into an intermediary like a text editor. Then, selectively remove variable names from it that you chose since, most likely, anyone else might have chosen something different and this can lead to an exclusion that you need. Continue to trim and test the search until you begin getting results back.
  3. Error everywhere - If your problem is producing an error, grab the whole error response and utilize it in searching. Whereas code varies significantly at from developer to developer, error codes and the specific verbiage used in the descriptive text are often fairly unique to your experience and can narrow the results down before you ever add a line of code or function name to the mix.
The Right Clues
Even with searching the best web resource and thoughtfully utilizing intelligent search terms, you can still feel like you are coming up empty. Sure, you are getting results, but none of them contain the answer you need. In cases like this, being search-smart can mean taking in the context of the results that don't directly answer your question and using them to fine-tune your approach. Often the people commenting or attempting to answer the issue you are reading with use certain phrases or make mention of other subject matter that, when combined with your own search, open up a new and different avenue.

When approaching things from this angle, knowing what term other developers universally refer to some mechanism as is crucial. If I am calling a parameter a "filter", but the community has adopted the nomenclature of calling it a "data-screen", things are going to be pretty rough for me until I can connect the dots between the two terms.

When you are having a rough day of resolving your problems and the answer seems elusive, take a deep breath and change your attack vector using these tips. Because it's not about your wording, the site, and the clues - it's about effectively using all three in concert to get what you need.

No comments:

Voice Comments