This is the third post in a series of blog posts discussing Lean Architecture principles. Each post discusses one principle. Applying these principles results in an architecture (process) that is better connected to the business, better able to deal with change and more cohesive.
The second principle we discuss applies to an important faces of architecting and is called "Think Big, Act Small".
One of the main goals of an architect is to develop avisionof a system. This vision is essentially the architect’s elevator pitch of the system. The goal of developing a vision is to gain common understanding of the general scope and direction of the system. This vision isn’t necessarily a paper artifact; it’s more of an image in the architect’s head. This vision should be known to every stakeholder involved in the system. It’s the architect’s duty to effectively communicate this vision. It’s important to stress that a vision is not the same as a design. A vision sketches the general direction and boundaries for a system. A design is a detailed description of the technical solution. The architectural vision encompasses more: from covering strategic directions to matching business criteria.
Developing a vision and communicating it is one thing, realizing this vision is quite something else. So how do we get from having a vision to implementing a system according to this vision? The answer is found by looking at agile principles; many agile methodologies propose feature driven, incremental development. The same principle can be applied to lean architecture: take small steps, introduce small projects. These projects result in independently usable parts. Applying this strategy helps to prevent waste, each project delivers components that add business value.
During implementation, the architect should coach teams in order to guide development. The architectural vision provides guidance for the general (technical) direction of the (sub-)projects. For example, the architect may choose the general architectural style of the system, or a set of general high level patterns. The implementation teams are free to choose whatever design they see fit, fitting within this general style.
By thinking big, the architect can guide the teams into the general direction of his vision. The small steps help to prevent teams from falling into the pit trap of scope creep. It’s often very temping to “just” add this feature or component, because we will need it in the future anyway. The small steps provide clear scope boundaries.
As an example, consider the following situation. A Greenfield project, aiming to replace the complete production system of a chart-producing company. The whole new system is thought up before hand, big design up front style. Now it’s very temping for a technical architect to just use the existing blue-prints, and keep working till the project is “done”. So in this case the vision is more than clear. However, applying the “think big, act small” principle, it is better to introduce smaller sub-projects and give users time to gradually get used to the new production system. This approach also shows any misconceptions faster, giving you time to provide steering.
How does the principle contribute to the 3 C's of architecture? A better cohesion is achieved since the “small steps”, the projects, are developed so they each deliver a separately usable component or application. These elements have a high cohesion. On a higher level of abstraction, the architectural vision and the coaching of the architect(s) guides the development of the system as a whole in a cohesive way.
Connection with organizational goals (both business and project) is improved since the architect’s vision basically establishes how the system supports the business. The ‘small steps’ enable the architect to develop business value in an incremental way. This enables business stakeholders to stay in control, there are more vectors of control. Also, due to the constant involvement in projects, feedback, lessons learned, are immediately incorporated in the architectural vision.
Changeability. Each of the components or applications of the system are developed in the highest grade of isolation possible. These developments are guided by the architectural vision. The development of parts in relative isolation also enables changes in isolation. The small steps also provide a higher level of flexibility business-wise. It is easier to adapt a small component or application to fit into a new business direction.
Think Big, Act Small is an important principle from a business perspective. “Thinking Big”, having an architectural vision, ensures there is a strategic vision on how the system contributes to the business. The vision contains strategic scenarios, matching the business side to the more technical side of the system. “Act Small” ensures the business has plenty opportunity to inspect the results of the smaller projects and provide feedback. From a financial perspective, smaller projects require a smaller up front investment, reducing the financial risk of larger systems.
This was the third post in a series of blog posts on Lean Architecture principles, the next one will follow in about a week.