Software Developers Using Signals in Transparent Environments
One of the main challenges that modern software developers face is the coordination of dependent agents such as software projects and other developers. Transparent development environments that make low-level software development activities visible hold much promise for assisting developers in making coordination decisions. However, the wealth of information that transparent environments provide is potentially overwhelming when developers are wading through information from potentially millions of developers and millions of software repositories when making decisions around tasks that require coordination with projects or other developers. Overcoming the risk of overload and better assisting developers in these environments requires a principled understanding of what exactly developers need to know about dependencies to make their decisions. My approach to a principled understanding of how developers use information in transparent environments is to model the process using signaling theory as a theoretical lens. Developers making key coordination decisions often must determine qualities about projects and other developers that are not directly observable. Developers infer these unobservable qualities through interpreting information in their environment as signals and use this judgment about the project or developer to inform their decision. In contrast to current software engineering literature which focuses on technical coordination between modules or within projects such as modularity or task assignment mechanisms, this work aims to understand how developers use signals to information coordination decisions with dependencies such as other projects or developers. Through this understanding of the signaling process, I can create improved signals that more accurately represent desired unobservable qualities. My dissertation work examines the qualities and signals that developers use to inform specific coordination tasks through a series of three empirical studies. The specific key coordination tasks studied are evaluating code contributions, discussing problems around contributions, and evaluating projects. My results suggest that when project managers evaluate code contributions, they prefer social signals over technical signals. When project managers discuss contributions, I found that they attend to political signals regarding influence from stakeholders to prioritize which problems need solutions. I found that developers evaluating projects tend to use signals that are related to how the core team works and the potential utility a project provides. In a fourth study, using signaling theory and findings from the qualities and signals that developers use to evaluate projects, I create and evaluate an improved signal called “supportiveness” for community support in projects. I compare this signal against the current signal that developers use, stars count, and find evidence suggesting that my designed signal is more robust and is a stronger indicator of support. The findings of these studies inform the design of tools and environments that assist developers in coordination tasks through suggestions of what signals to show and potentially improving existing signals. My thesis as a whole also suggests opportunities for exploring useful signals for other coordination tasks or even in different transparent environments.