GOTO Amsterdam (June 13-15, 2016) is a vendor independent international software development conference with more than 60 top speakers and 800 attendees. The conference covers topics such as Microservices, Rugged, JavaScript, Post-Agile, Data, Spring++, Connected Worlds & Philosophy.

Adam Tornhill, Founder and CTO at Empear AB

Adam Tornhill

Biography: Adam Tornhill

Adam Tornhill is a programmer that combines degrees in engineering and psychology. He’s the founder of Empear AB where he designs tools for software analysis. He's also the author of Your Code as a Crime Scene, has written the popular Lisp for the Web tutorial and self-published a book on Patterns in C. His other interests include modern history, music and martial arts.

Twitter: @AdamTornhill

Presentation: Embrace the Past: How Software Evolution Lets You Understand Large Codebases

Track: Security & Rugged / Time: Wednesday 14:30 - 15:20 / Location: Graanbeurszaal

To understand large software systems we need to look beyond the current structure of the code. We need to understand both how the system evolves and how the people building it collaborate. In this session you'll learn to mine social information such as communication paths, developer knowledge and hotspots. It's information you use to improve both the design and the people-side of your codebase. The techniques you'll learn are based on software evolution. They use data from the most underused informational source that we have in our industry: our version-control systems.

You'll see how that information lets you identify code that's hard to maintain, code at risk for defects and even detect architectural decay. Each point is illustrated with a case study from a well-known codebase like Roslyn, ASP.NET MVC, Scala or Clojure. This is a new perspective on software development that will change how you work with legacy systems. Come join the hunt for better code!

Prerequisite attendee experience level: advanced

Workshop: Code as a Crime Scene

Track: Workshops / Time: Monday 09:00 - 16:00 / Location: Verwey Kamer

We'll never be able to understand large-scale systems from a single snapshot of the code. Instead, we need to understand how the code evolves and how the people who work on it are organized. In this workshop you'll learn novel analysis techniques to support both those technical and organizational decisions around your codebase.

The techniques are based on software evolution. They use data from the most underused informational source that we have in our industry: our version-control systems. Combined with metaphors from forensic psychology you'll learn to analyze version-control data to:

  • Identify the code that's most expensive to maintain amongst millions lines of code.
  • Predict the modules that are most prone to defects.
  • Detect architectural decay and learn to control it.
  • Analyze different architectures such as layers and microservices.

Since large-scale software development is also a social activity, we'll make sure to cover techniques that let you:

  • Build a knowledge map of your codebase.
  • Understand how multiple developers influence code quality and what you can do about it.
  • Get a psychological perspective on the challenges and pitfalls of large-scale development.

We'll analyze systems written in different languages such as C#, Java, and Scala to illustrate that the techniques you'll learn are language agnostic. Once you've finished this workshop you'll have a completely new way to look at your codebase and a powerful toolbox.

Style
This workshop is delivered in a practical hands-on style. We'll mix theory with hands-on analyses. The exercises are done by analyzing real-world systems to find real problems.

Audience
This workshop is for programmers and software architects. While we use Git for the exercises, the techniques aren't limited to Git and we'll also discuss how you use them with other version-control systems such as Subversion and Mercurial.

Preparations
Participants need to bring their own laptops. You'll receive detailed installation and preparation instructions before the workshop.

Workshop seats are limited.