Runar Ovesen Hjerpbakk

Software Philosopher

Software Design, Team Work and other man-made disasters

Adam Tornhill - @AdamTornhill

“Software development is a social activity”

Code reviews vs. you are not your code.

Constructive criticism.

You are your code, in order to improve we need to embrace this.

“We are anything but rational”

Pluralistic Ignorance - group bias where everyone public supports an idea that they don’t agree with in private. Common in every project.

Fight your biases.

Bias reducing social hacks. Assign the role of “Devils Advocate” in every discussion. Remember to rotate the role. Also scheduling a follow up meeting after taking important decisions. Prevent your emotions from dictating your decisions.

Base your decisions on data.

Software Design


The evolution of clean code.

Feature, late night bug fix, scope creep. The pristine program becomes a mess.


Measure your complexity trend using your SCM.

Your code doesn’t lie, but context matter. And not everything can be deduced from the code. For instance, Temporal Coupling, measured from the evolution of your code.


Team Work

Code that changes together must be maintained by the same team!!!

The DBA - where change request go to die.

Conway’s Law!


How to use Conway’s Law on legacy code? Create a communication diagram from your SCM. From that you see who should be communicating. Compare it to your formal organisation! These difference must be understood.

Share the same context.

Communication anarchy. “The architecture could not support the way they worked with it”.

Align your architecture and your organisation.


Man made disasters

The number of programmers predict the number of bugs.

Fractal Figures. Inspect your SCM and look for modules with contributions from many different programmers. Code changes for a reason, the module has too many reasons to change.

Main developer becomes av knowledge owner. Use it to man your teams.


80% of the code is created by 20% of the developers. Be wary of your knowledge gaps.