Today at work a visiting colleague asked me what I felt were the most important things to look for in a new software developer hire. My mind immediately went to the usual suspects: a good foundation in modern software development principles, a demonstrated track record of success, and proficiency with the critical soft skills of communication and teamwork. The more I thought about it, though, I decided on a different answer: effective Googling.
As I think back on my career to date, the one technical skill that has probably been more influential in my success than any other is the ability to effectively find information that helps me tackle a novel situation that I’m facing. This scenario comes up many times a day in this line of work: you hit a new error message, you need to figure out what tool to use to solve a problem, or you want to know if others have already produced a solution that you might use.
In software development, you’ll regularly be faced with novel situations big and small which you haven’t seen before. Nothing you’ve learned in school or have worked on previously will be directly applicable to the new situation - at best, you’ll sometimes recognize a pattern that you’ll be able to relate to past experience or you’ll have some intuition about a potential approach. The next step is to gather more information to start to confirm or deny your working hypothesis or fill in your knowledge gaps about the problem at hand. And the key to doing that is effective searching. An effective software developer is an absolute expert at knowing how to gather and bring new information to bear and apply it towards solving novel problems. It’s a core part of their DNA.
A big part of effective searching is crafting the right query string, and there’s more to it than meets the eye. It helps to have a good intution about how search engines work, and to be able to think about the question you’re trying to ask from multiple angles in order to try to mine the most rich vein of query paths. If you take this part of effective searching for granted, try and remember the last time you taught someone new to the web how to search. I can distinctly remember teaching my mother how to search for recipes on Google: it was not at all intuitive for her to know what search string to use. Think about some of the subtlety involved in an effective search string: for instance, how often have you searched an error message and received poor results, and then remembered to remove the line number from the error message and you get the results you need? Seems obvious now, but it probably wasn’t always that way for you.
Besides crafting the right query string, effective searching requires an ability to quickly weed out good information from bad. Some of this comes with practice and experience, and some of this comes from developing an automatic review system for what to trust and what to dismiss. When I think about how I evaluate search results, I realize that I have a fairly complex process of evaluating everything from which site the information is on, the date of publishing, whether there is significant activity in the information thread, considering the surrounding context to see if they’re really talking about the same situation I am, and so on. It all happens automatically at this point for me, but I bet if you take a moment to be conscious about it, you’ll realize you’ve got a similar built-in algorithm that you’re using all the time.
I never realized I was particularly good at searching for and evaluating information online until I watched others do it. Not just my mother from the example above, but also junior developers and even more seasoned colleagues. From failing to recognize when a search would be beneficial to not knowing how to iterate through search queries until you hit paydirt, I consistently watch others struggle to execute a good web search. Over time, I’ve come to appreciate how my proficiency with this seemingly simple task has greatly benefitted me throughout my career, and I have trouble thinking of a single other skill that has had the same impact. And chances are, if I could think of one, I largely learned how to become proficient at that skill through effective Googling anyway. :)