What is the big picture?
Ensuring that the code works toward your overall vision rather than against it
Whenever we talk about software architecture, undoubtedly we'll end up talking about the "big picture", but what exactly does this mean?
Put simply, when we're thinking about software development, most of our focus is placed on the code. Here, we're thinking about object oriented principles, classes, interfaces, inversion of control, refactoring, automated unit testing and the countless other practices that help us build better software. If you have a team of people that are *only* thinking about this, then who is thinking about the other stuff?
- Cross-cutting concerns such as logging and exception handling.
- Security, such as authentication, authorisation and confidentiality of sensitive information.
- Performance, scalability and availability.
- Audit and other regulatory requirements.
- Interoperability with other systems in the environment.
- Operational and support requirements.
- Consistency of structure and approach across the code base.
- Evaluating that the foundations you're building will allow you to deliver what you set out to deliver.
All of these things can be thought of as the "big picture" and generally require you to look at your software system from higher levels of abstraction.
This doesn't mean that the detail isn't important because working software is ultimately about delivering working code. No, the detail is equally as important, but the big picture is about having a holistic view across your software to ensure that your code is working toward your overall vision rather than against it.

