Summary
This chapter discussed the importance of innovation as a means to achieve software differentiation as a primary business goal. To aim for relentless improvement in digital transformation is the strongest play in the age of “software is eating the world.” Software architecture was introduced, along with the role that it plays inside every company. The chapter explored how the effects of Conway’s Law shape the communication paths inside organizations and teams, and the ways it impacts the software produced by organizations and teams. Discussing the importance of communication brought the topic of knowledge to the fore. Knowledge is one of the most important assets in every company. To obtain the best results with software, knowledge must be raised from tacit to shared. Knowledge cannot be shared without proper communication paths, and competitive advantage can’t be achieved without either. Ultimately, bad communication leads to incomplete knowledge and poorly modeled software—and then to the Big Ball of Mud as the best possible outcome. Finally, we focused on the original #agile mindset and how it can help teams to get unstuck and focus on the right goals.
The principal points made in this chapter are as follows:
Innovation is the most important aspect of digital transformation. Innovation leads to profitable differentiation from competitors, and should therefore be a strategic goal of every company.
Software architecture must support the inevitable change without extreme cost and effort. Without good architecture, the best alternative is bad architecture, which eventually leads to unarchitecture.
The Big Bull of Mud is often the outcome of broken communication that can’t possibly lead to deep learning and shared knowledge.
The people in organizations must exchange knowledge through open and nuanced communication that can lead to breakthroughs in innovation.
Monoliths are not necessarily bad and Microservices are not necessarily good. Choosing one over the other based on purpose is a result of an informed decision.
Chapter 2 introduces strategic learning tools that can help mitigate poor communication and set the bar higher for enterprise culture. By applying these tools, you can learn how to make informed decisions based on experimentation, and how they can affect the resulting software and its architecture.