Home

Software development is a human endeavor that requires constant gathering 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 aims to understand the cognitive processes of humans and build inclusive technological support to help both professional and end-user programmers (e.g., data scientists, website designers) become more efficient and less error-prone.

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