Taming complexity is a challenge of every large-scale software project. Traditional metrics and techniques are inadequate. That leaves us with intuition. And human intuition is unequaled when it comes to assessing the quality of a design. But intuition is prone to social and cognitive biases that are hard to avoid. Human expertise also suffers from a lack of scalability. As such, intuition rarely scales to encompass large software systems and we need a way to guide our expertise.
We need strategies to identify design issues, a way to find potential suspects indicative of code smells, team productivity bottlenecks, and complexity. Where do you find such strategies if not within the field of criminal psychology? Inspired by modern offender profiling methods, we'll develop techniques for identifying weak spots in our code. Just like we want to hunt down offenders in the real world, we need to find and correct offending code in our own designs.
The session will combine research on software evolution with findings from different fields of psychology. The basic premise is that there's a wealth of information stored in how we interact with our code. By mining our interaction patterns we're able to get early warnings on potential problems and directions for refactorings and future development.