Joseph Yoder


Founder of Refactory, Agilist, Computer Scientist & author of “Big Ball of Mud” pattern

Joseph Yoder, founder and principal of The Refactory, is an agilist, computer scientist, and pattern author. Joe serves as president of the board of The Hillside Group, a group dedicated to improving the quality of life of everyone who uses, builds, and encounters software systems. He is best known as an author of the Big Ball of Mud pattern, which illuminates many fallacies in software architecture. Joe teaches and mentors developers on agile and lean practices, architecture, building flexible systems, clean design, patterns, refactoring, and testing. Joe thinks software is still too hard to change. He wants to do something about this and believes that you can start solving this problem by using best practices (patterns) and by putting the ability to change software into the hands of the people with the knowledge to change it. On a personal side, Joe resides in Urbana, Illinois, is an avid amateur photographer, motorcycle enthusiast, and enjoys samba dancing!!!

YOW! 2015 Sydney

Sustainability Supporting Data Variability: Keeping Core Components Clean while Dealing with Data Variability


A big challenge in building complex, data-intensive systems is how to sustainably support data variation along with schema and feature evolution. This talk examines strategies, practices, and patterns drawn from real experiences that support new and evolving data-processing requirements while keeping the core architecture clean. As complex systems evolve to meet varying data formats, they can devolve into poorly architected Big Balls of Mud filled with special-case logic and one-off processing. Alternatively, you can isolate core components of your system and protect them from entanglements and unnecessary complexity by designing them to operate on common data formats while providing extension mechanisms that enable processing variations.

QA to AQ: Being Agile at Quality


As organizations transition to agile processes, Quality Assurance (QA) activities and roles need to evolve. Traditionally, QA activities occur late in the process, after the software is fully functioning. As a consequence, QA departments have been “quality gatekeepers” rather than actively engaged in the ongoing development and delivery of quality software. Agile teams incrementally deliver working software providing an opportunity to engage in QA activities much earlier, ensuring that both functionality and important system qualities are addressed at the most responsible moment. Agile teams embrace a “whole team” approach. Although special skills may be required to perform certain development and Quality Assurance tasks, everyone on the team is focused on the delivery of quality software.

Prioritizing and implementing necessary functionality keeps an agile project moving forward. However, it is also important to focus on system quality at the same time. Otherwise, qualities can get shoved aside or wistfully imagined as emerging along with the architecture.