Note: this is a past event Check out the current event!

Adam Tornhill

CTO at Empear


Guide Refactorings With Behavioral Code Analysis
Thursday 14:00 - 14:50
Technical Debt
Legacy Code
Team Work

Your rating:

Many codebases contain code that is overly complicated, hard to understand, and hence expensive to change. The pressure of new features and user needs makes it hard to stop and backtrack, and the longer we wait, the worse it's going to be. Mix in the people side with frequent organizational change and the siren song of a system rewrite becomes more and more attractive. It doesn't have to be that way, and in this presentation you'll see how easily obtained version-control data let us uncover the behavior and patterns of the development organization. These behavioral code analysis techniques provide a sweet spot to prioritize and guide refactorings. We cover refactoring techniques that reduce excess complexity, address hidden implicit dependencies, and discuss architectural restructuring that reduce inter-team coordination needs. Since behavioral code analysis also lets us consider the social side of  code, such as refactoring modules that are under development by our peers, we explore novel patterns that help us limit risks and code conflicts. The specific examples are from real-world codebases like Android, the Linux Kernel, ASP.NET Core MVC, and more.

Watch the talk    Check the slides


Code As A Crime Scene: Fix Technical Debt with Behavioural Code Analysis
Tuesday 9:00 - 17:00
Technical Debt
Legacy Code
Your rating:

Most organizations find it hard to prioritize and repay their technical debt. The main reason is the scale of modern systems with million lines of code and multiple development teams where no one has a holistic overview. So what if we could mine the collective intelligence of all contributing programmers and start to make decisions based on data from how the organization actually works with the code?

In this workshop you learn novel analysis techniques based on data from the most underused informational source that we have in our industry: our version-control system. You'll learn to:
  • Identify the code that's most expensive to maintain amongst millions lines of code.
  • Detect architectural decay in both layered and microservice systems.
  • Identify implicit dependencies across service boundaries.
  • Measure how multiple developers influence code quality and what you can do about it.
  • View your codebase from a social perspective and see how different organizational patterns influence the code you write.
  • Use behavioral code analysis to guide refactorings.
The practical exercises use CodeScene and Git for demonstrations, but this workshop isn't about tools. Rather, it's about pragmatic techniques and analyses that apply to systems of all scales. At the end you'll be able to base both technical and organizational decisions on data.


The workshop blends theory and practice in a hands-on style where we analyze real world codebases.


Participants need to bring their own laptop with a recent Java run-time (at least Java 8), a Git client (at least 2.15). Detailed preparations will be sent out in advance.
All participants are encouraged to take this opportunity to analyze their own codebase: just bring a local clone of your Git repositories.


Experienced developers, architects, and technical leads.

Programming languages

All techniques are language neutral and we show that by analyzing systems written in C, C#, Java, JavaScript, Scala, and many more.


Adam Tornhill is a programmer who combines degrees in engineering and psychology. He's the founder of Empear where he designs tools for software analysis. He's also the author of Your Code as a Crime Scene, Software Design X-Rays, Lisp for the Web, and Patterns in C. Adam's other interests include modern history, music, and martial arts.