Patrice Godefroid and Nachiappan Nagappan
Concurrent programming is gaining significant prominence in the software industry, especially due to the advent of multi-core architectures. In this report, we present the results of a survey deployed inside Microsoft in January 2007 to assess the state of the practice of concurrency at Microsoft. Our survey polled 10% of the Microsoft technical staff and collected data for each of the three major business units, namely Microsoft platforms and services division, mobile and embedded devices division and Microsoft business division. Our major findings indicate that the use of concurrency is widespread at Microsoft. Of our 684 respondents, over 60% of our respondent population had to deal with concurrency issues frequently (on a monthly basis). The most popular platforms for concurrent programming inside Microsoft are Win32 and CLR (Common Language Runtime), which are equally popular. Also, multi-threading and message-passing forms of concurrency appear to be equally pervasive. Concurrency bugs take on average several days to detect, reproduce, debug and fix. Most of these bugs are of high severity. Most engineers feel concurrency issues will be more of an issue going forward, and would welcome additional help in terms of language support, libraries, tools, processes and training.