2017 Edition

KEVLIN HENNEY | The Architecture of Uncertainty

Creating software architecture in a world of change, uncertainty and incomplete knowledge


Ralph Johnson defined architecture as “the decisions that you wish you could get right early in a project, but that you are not necessarily more likely to get them right than any other”. Given our inability to tell the future how can we design effectively for it? Much project management thinking is based on the elimination of uncertainty, and advice on software architecture and guidance for future-proofing code often revolves around adding complexity to embrace uncertainty. In most cases, this is exactly the opposite path to the one that should be taken.

During the day we will look at how uncertainty is an intrinsic part of software development and that responding to change calls for attention to detail, a good view of the big picture and a willingness to experiment. Rather than being a problem in development, uncertainty, lack of knowledge and options can be used to partition and structure the code in a system.


Kevlin Henney is an independent consultant, speaker, writer and trainer based in the UK. His software development interests are in patterns, programming, practice and process.

Kevlin has contributed to both open- and closed-source projects, and his work has inspired and has been the basis for a number of utility libraries and testing frameworks. He has been a contributor and columnist for many software development magazines and websites, including The RegisterBetter SoftwareIEEE SoftwareJava ReportC++ ReportC/C++ Users JournalEXE and Application Development Advisor.