News: I was awarded an NSF grant on "Overcoming Novice Programmers' Misconceptions of Program Behavior".
If you are interested in doing a Ph.D. with me, send me an email.
I design and build more usable software development tools by applying human-computer interaction methodologies to software engineering with the goal of increasing developer productivity. Lately, I have been integrating predictive models into development environments in the form of recommendation systems and intelligent program analyzers. See my research statement for more details. Projects that I have worked on include:
Reviewing code. The process of code reviewing is utilized by most major tech companies; however, it is extremely time consuming. We designed CFar, an automated code reviewing system at Microsoft, to enhance the collaboration among developers during code reviews.
Navigating code. Developers spend an inordinate amount of time navigating code in an effort to understand and modify it. We designed the Patchworks code editor to make revisiting relevant code significantly more efficient.
Refactoring code. Although most code editors provide ample support for restructuring code, visual language environments do not. We designed Yestercode and CodeDeviant to aid developers in refactoring and testing their code.
Information Foraging Theory. We applied a theory of how people seek information to the domain of software development. To do so, we conducted a series of empirical studies of developers debugging Java code using desktop and mobile development environments.