Is Normalized Systems the Next Big Agile?
We just finished reading Ron Jeffries’ latest post on “Bad Agile,” titled “Developers Should Abandon Agile.” It put us in mind of what the late Jim Gray said after he joined Microsoft: “The only thing that good developers need is to create product that people use.” Yes, developers want the freedom to create code—but management wants command and control. And when Agile is subverted to give more command and control to management, Agile loses its ability to help developers in their journey toward creating product.
Consider that the first principle of Agile is “individuals and interactions over processes and tools”—a principle that heralded the advent of self-directed teams. Self-directed teams need the freedom to create product with minimal oversight, and management’s job is to make sure they do not overreach as they play out their role of overseer. That’s how Bad Agile begins.
Since 1994, The Standish Group have been calling for smaller projects as a way to improve project success. We called them “microprojects” back then; they are now more commonly known as “microservices.” Microservices are a place for “Good Agile.” Developers create product, and management is happy to see product being delivered and used. A quality, delivered product is the best place for management’s oversight. We have seen companies create thousands of microservices with happy and healthy self-directed teams.
However, there is one big problem with microservices: They are discrete projects, but they need to interact with each other discrete projects. This causes conflicts. The known cure for these conflicts is middleware, but middleware can only manage a finite set of them.
Nowadays, emerging projects tend to entail unprecedented scale, complexity, integration, and real-time interactivity. Existing popular engineering methods and tools are not suited to develop and operate large-scale systems-of-systems projects, or thousands of microservices either. Normalizing the complexity of current software design is the major challenge.
To meet this challenge, the University of Antwerp created Normalized Systems. Normalized Systems takes the best parts of the Agile process—iteration, self-directed teams, microservices, and continuous delivery—while resolving this new problem of service conflicts. The Normalized Systems approach allows applications and systems to evolve over time in an iterative fashion. This constant evolution has a major side benefit, too: It reduces technical debt while making systems current and usable.
Organizations that have implemented Normalized Systems together with Scrum and DevOps have seen significant improvements in product delivery. Users of have seen considerably higher developer and customer satisfaction. Management oversight is almost non-existent, and teams have the freedom to create good-quality product. They have Good—not Bad—Agile!
By James Johnson and Hans Mulder