Software development is a human endeavor that requires constant “foraging” of diverse types of information and making sense of such information, which includes complex, dynamic interdependencies among software artifacts and developers. Implementing a piece of software requires comprehending the code, reasoning about how the new feature fits into the existing code, and the impact of the changes on ongoing work. The technical dependencies among these pieces of software lead to social dependencies among developers, and the need to coordinate changes.

My research leverages human behavior theories (e.g., Information Foraging theory, Transactive Memory Systems) and empirical studies, to design and build better software tools and approaches that help software developers and teams become more efficient. My research approach is interdisciplinary, leveraging research in data mining, program analysis, software design, software visualization, and human-computer interaction.