Once again, I’m returning to Brazil. This time I am teaching a Test Driven Development and Refactoring course for Teams that Innovate. As usual, I’m excited to be making the trip and I look forward to taking some time to catch up with some old friends and to make some new ones!
I’m also looking forward to returning to CAP/INPE on August 15, where I will be presenting a seminar on the topic “Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work.” This talk will examine the paradoxes that underlie Big Balls of Mud, what causes them, and why they are so prominent. I’ll explore what Agile Practices can help us avoid or cope with mud. I’ll also explain why continuous delivery and TDD with Refactoring is not enough to help ensure clean architecture and why it is important to understand what is core to the architecture and the problem at hand. Understanding what changes in the system and at what rates can help you prevent becoming mired in mud. By first understanding where a system’s complexities are and where it keeps getting worse, we can then work hard (and more intelligently) at sustaining the architecture. Additionally, I’ll talk about some practices and patterns that help keep the architecture/code clean or from getting muddier.
Saturday, August 16, I’ll be back in São Paulo, where I’ll be taking part in a Software Startups event at the University of São Paulo. As always, if you will be in the area, get in contact!
Preparing for Agile PT
I’ve taken to the skies again. This time I’ve crossed the pond to visit beautiful Portugal for the Agile PT conference. I’ve attended in the past and am excited to visit again. Of course, I’m also looking forward to hanging with Ademar and others that I’ve gotten to know through the years.
At this Agile PT I’m hosting the Panel and Retrospective of Agile Portugal 2014.
I spoke with a smaller group yesterday about Adaptive Object Model. The title of the talk was “Adaptive Object-Model Architecture: How to Build Systems That Can Dynamically Adapt to Changing Requirements”
And here’s the synopsis:
Architectures that can dynamically adapt to changing requirement are sometimes called “reflective” or “meta” architectures. We call a particular kind of reflective architecture an “Adaptive Object-Model (AOM)” architecture. An Adaptive Object-Model is a system that represents classes, attributes, relationships, and behavior as metadata. It is a model based on instances rather than classes. Users change the metadata (object model) to reflect changes to the domain model. These changes modify the system’s behavior. In other word, it stores its Object-Model in XML files or in a database and interprets it. Consequently, the object model is adaptive; when the descriptive information for the object model is changed, the system immediately reflects those changes. We have noticed that the architects of a system with Adaptive Object-Models often claim this is the best system they have ever created, and they brag about its flexibility, power, and eloquence. At the same time, many developers find them confusing and hard to work with. This is due in part because the developers do not understand the architecture. This talk will give a description of the Adaptive Object-Model architectural style and will make it easier for developers to understand and build systems that need to adapt to changing requirements.