In software engineering, architecture is a concept difficult to define precisely. One word is used for very different concepts such as functional architecture, data architecture, solution architecture or enterprise architecture. In addition, boundaries between architecture and design are unclear. Some say they are similar concepts. Others argue that they are complementary concepts with different levels of abstraction.
The real question is not what architecture is or is not. The real question is whether or not architectural analysis is useful for your project. And most of the time, if your are developing software-intensive systems, the answer is YES. It is where pragmatism comes into play.
Many methodologies try to define the architectural work that you should complete. Some fundamentalists recommend that you define your architecture before you start your development. Dogmatic theoreticians say that architecture is a waste of time and that only code matters. Pragmatic architecture is about adopting the approach that works best for you. And what is best for you is not necessarily what is best for others.
The pragmatic architect focuses on essential concrete tasks and prioritizes the work according to the value it brings to the project. The pragmatic architect is open-minded and never refuses to consider a solution just because it is not the trend of the year. The pragmatic architect revisits the design as the development of the system progresses.
Your goals during p.r.a.g.m.a.t.i.c architectural activities
- P: Promote collaborative work that involves all team members
- R: Reduce risks and uncertainties
- A: Adhere to minimalism and simplicity principles
- G: Gather key elements to outline the architecture during your initial timed-boxed iteration
- M: Modify the design throughout the development lifecycle to adapt to emergent needs
- A: Address both functional and non-functional requirements
- T: Try out theoretical concepts and leverage past empirical experience
- I: Invest in known requirement instead of hypothetical future needs
- C: Concentrate on tasks that support the development team
As architects, we must value pragmatism and practical experience over dogmatism and theory.