To understand Microsoft developers’ typical tools and work habits and their level of satisfaction with these, we performed two surveys and eleven interviews with developers across all business divisions. This report provides a summary of the resulting data. From the set of potential problems we gave them, the top three that Microsoft developers agree they have are: understanding the rationale behind a piece of code (66%); having to switch tasks often because of requests from teammates or managers (62%); and being aware of changes to code elsewhere that impact their own code (61%). The most notable take-away from the data is that developers go to great lengths to create and maintain rich mental models of code and don’t rely on external representations. The mental nature of these models requires frequent, disruptive, face-to-face meetings to keep individuals’ models in sync, which greatly slow the rate at which a newcomer to a team can become productive. These interruptions also burden more senior development team members, as they have to recover what they were doing in the code following the interruption from team members.