In Septmber 2017 our ThoughtWorks CTO Rebecca Parsons together with Neal Ford and Patrick Kua wrote a book titled Building Evolutionary Architectures: Support Constant Change. The book contains a lot of useful tips and insights on how to steer software architectures to meet evolvability goals which you care about to drive your product forward.
Unfortunately the book did not contain any reference to the frontend space.
Rufus Raghunath and I, co-leaders of the internal TW Frontend Community, decided to put together a presentation which explores how to apply some of those evolutionary architecture techniques to UI development.
Most recently we had the opportunity to give our talk at the very first O’Reilly Software Architecture Conference in Berlin. Enjoy the talk and feel free to reach out to me on twitter if you have any feedback.
Evolutionary UI: Change as a first-class citizen in the modern frontend world
by Rufus Raghunath & Giamir Buoncristiani
In this talk, we will show how the principles of evolutionary architecture can be applied to UI to prioritize changeability. We’ll consider several approaches to making a modern UI application more evolvable, such as the controversial microfrontends pattern, and examine specific “fitness functions” that will keep you and your team honest to your requirements without sacrificing evolvability. We’ll also discuss the tradeoffs you make when you choose a more evolutionary frontend architecture, and provide a framework for thinking about how much future change you’ll need to account for.
One of the challenges we are likely to face when we build an Evolutionary UI is keeping UX consistent. UX Designer Shawn Lukas and I have been working on a presentation to share some of the learnings from our current project where we helped streamlined communication between designers and developers across 5 cross functional teams in 2 different timezones while working on a single page application composed by 10+ micro-frontends.
Stay tuned for this upcoming talk:
UX in the Era of Micro-Frontends: Building consistent User Experiences in highly distributed systems