Developers commonly make use of web search engines such as Google to locate online resources to improve their productivity. A better understanding of what developers search for could help us understand their behaviors and the problems that they meet during the software development process. Unfortunately, we have a limited understanding of what developers frequently search for and of the search tasks that they often find challenging. To address this gap, we collected search queries from 60 developers, and surveyed 235 software engineers from more than 21 countries across five continents. We asked our survey participants to rate the frequency and difficulty of 34 search tasks which were grouped along the following seven dimensions: general search, debugging and bug fixing, programming, third party code reuse, tools, database, and testing.
We find that searching for explanations for unknown terminologies, explanations for exceptions/error messages (i.e. HTTP 404), reusable code snippets, solutions to common programming bugs, and suitable third-party libraries/services were the most frequent search tasks that developers perform, while searching for solutions to performance bugs, solutions to multi-threading bugs, public datasets to test newly developed algorithms or systems, reusable code snippets, best industrial practices, database optimization solutions, solutions to security bugs, and solutions to software configuration bugs were the most difficult. Our study sheds light on why practitioners often perform some of these tasks and why they find some of them to be challenging. We also discuss the implications of our findings for future research in several research areas, i.e. code search engines, domain-specific search engines, and automated generation and refinement of search queries. (Read More)