Ralph Johnson defined architecture as “the decisions that you wish you could get right early in a project.” 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. Kevlin Henney explains how uncertainty, lack of knowledge, and options can be used to drive both a system’s architecture and its development schedule.
Kevlin Henney is an independent consultant, speaker, writer, and trainer interested in patterns, programming, practice, and process. Kevlin has been a columnist for various magazines and websites and was an associate editor of IEEE Software. He is coauthor of A Pattern Language for Distributed Computing and On Patterns and Pattern Languages, two volumes in the Pattern-Oriented Software Architecture series. He is also editor of 97 Things Every Programmer Should Know.
©2016, O’Reilly UK Ltd • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org