Neal Ford

Software Architect, ThoughtWorks

Neal Ford is a director, software architect, and meme wrangler at ThoughtWorks, a global IT consultancy that thinks disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. Neal focuses on designing and building large-scale enterprise applications. He's an internationally recognized expert on software development and delivery, especially in the intersection of Agile engineering techniques and software architecture. Neal has authored magazine articles, seven books (and counting), and dozens of video presentations and has spoken at hundreds of developers conferences worldwide on the topics of software architecture, continuous delivery, functional programming, and cutting-edge software innovations.

 

Talks on Wurreka:

A key building block for burgeoning software architects is understanding and applying software architecture styles and patterns. This session covers basic application and distributed architectural styles, analyzed along several dimensions (type of partitioning, families of architectural characteristics, and so on). It also provides attendees with understanding and criteria to judge the applicability of a problem domain to an architectural style.

While many attendees learn from abstract concepts, others prefer to see concepts in action. This session eschews software architecture theory and instead illustrates the process of architecture design using two concrete examples: Silicon Sandwiches and Going, Going, Gone. For each of these problems, Neal shows how: to determine architecture characteristics to find architecture quanta to scope architecture characteristics to create and iterate on component desgin architecture characteristics & component design leads to architecture style selection to document important architecture decisions Each step of the way, the two example problems illuminate the stages of architecture design and the considerations architects must make at each stage.

An evolutionary architecture supports incremental, guided change across multiple dimensions.

For many years, software architecture was described as the “parts that are hard to change later”. But then microservices showed that if architects build evolvability into the architecture, change becomes easier. This workshop, based on recent book, investigates the family of software architectures that support evolutionary change, along with how to build evolvable systems. Understanding how to evolve architecture requires understanding how different parts of architecture interact; I describe how to achieve appropriate coupling between components and services. Incremental change is critical for the mechanics of evolution; I cover how to build engineering and DevOps practices to support continuous change. Uncontrolled evolution leads to undesirable side effects; I cover how fitness functions build protective, testable scaffolding around critical parts to guide the architecture as it evolves.

The software development ecosystem exists in a state of dynamic equilibrium, where any new tool, framework, or technique leads to disruption and the establishment of a new equilibrium. Predictability is impossible when the foundation architects plan against changes constantly in unexpected ways. Instead, prefer evolvability over predictability. This hands-on workshop provides a high-level overview of a different way to think about software architecture.

Outline:

  • Evolutionary Architecture Defined
  • Fitness Functions
  • Exercise: Fitness Function Katas
  • Engineering Incremental change
  • Architectural Characteristics
  • Exercise: determine appropriate characteristics
  • Identifying Architectural Patterns
  • Exercise: components and patterns
  • Evaluating the Evolvability of Existing Architecture Styles
  • Retrofitting Existing Architectures
  • Building Evolvable Architectures
  • Automating Governance

Teams adopt microservices understanding the structure of the architecture but with a poor understanding of how to get all the pieces to communicate–it’s all too easy to accidentally create a distributed Big Ball of Mud. In this talk, Neal describes the foundations of distributed architecture communication and how that applies to microservices. He introduces a new measure, the architecture quantum, to help analyze and identify communication boundaries. Then, the session describes many common microservices communcation patterns:

  • orchestration
  • choreography
  • transactional patterns
  • sagas
  • data caching
  • event patterns
  • CQRS
  • Event sourcing

For each pattern, Neal weighs the pros and cons, summarizing situations where each pattern is applicable.

While teams can pick up the easy parts of agile from books and conferences, some of the engineering practices still present challenges. In this session, Neal covers many of the engineering practices teams struggle with:

  • what are the tradeoffs between feature branching and trunk-based development?
  • what tradeoffs does TDD offer?
  • how can teams avoid adopting the newest technology as a religion?
  • what benefits does pair programming offer? What are the downsides?
  • how can architects and developers help foster organizational change?

Design patterns have existed for decades in the software development world, acting as a well known catalog of common problems and structural solutions. Unfortunately, the seminal book on this topic, Design Patterns, include code examples in C++ and Smalltalk! In the intervening years since the book was released, capabilities and paradigms of programming languages have evolved, but not the design patterns…until now. This talk takes a fresh look at the GoF design patterns, but implemented in modern languages, including modern dialects of Java and C# (not C++) as well as dynamic languages such as Ruby and Groovy and functional languages such as Clojure, Scala, and Haskell. It turns out that some patterns disappear, some change implementations, and others change focus and scope. Come see a fresh look at this pertinent topic and how modern languages simplify and clarify these patterns.

While modern architectures like microservices have take the world by storm, the data world seems left behind. The world gradually migrated away from data warehouses, with too much structure, to data lakes, which had too little structure, and a host of other headaches. Applying some of the same reuse patterns underlying service mesh, Data Mesh is a new paradigm for handling data in highly distributed environments, addressing nagging issues like data quality, applicability, PII, and so on, while still enjoining the advantages of distributed teams and event-driven architectures. This talk highlights the innovations ThoughtWorks is pursuing for this modern perspective on data.

See Highlights of
Wurreka

Hear What Attendees Say

“Once again Wurreka has knocked it out of the park with interesting speakers, engaging content and challenging ideas. No jetlag fog at all, which counts for how interesting the whole thing was."

Cybersecurity Lead, PwC

“Very much looking forward to next year. I will be keeping my eye out for the date so I can make sure I lock it in my calendar"

Software Engineering Specialist, Intuit

“Best conference I have ever been to with lots of insights and information on next generation technologies and those that are the need of the hour."

Software Architect, GroupOn

Hear What Speakers & Sponsors Say

“Happy to meet everyone who came from near and far. Glad to know you've discovered some great lessons here, and glad you joined us for all the discoveries great and small."

Scott Davis, Web Architect & Principal Engineer, ThoughtWorks

“What a buzz! The events have been instrumental in bringing the whole software community together. There has been something for everyone from developers to architects to business to vendors. Thanks everyone!"

Voltaire Yap, Global Events Manager, Oracle Corp.

“Wonderful set of conferences, well organized, fantastic speakers, and an amazingly interactive set of audience. Thanks for having me at the events!"

Dr. Venkat Subramaniam, Founder - Agile Developer Inc.