Software architecture consists “… the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution”
Software architecture as the “shared knowledge of the system” and made of “hard to change decisions”. Those decisions mainly influence the internal quality of the software built, such as which language to use, which modular design to adopt, and so on.
What an architect would do:
1. Bring Business and Engineering Together
2. Stay Technically Relevant
3. Help Your Teams to Grow and Perform
Bring Business and Engineering Together
Someone who has the experience of having developed complex or mission-critical systems to look at it, not only from the technical point of view but also from the business perspective. This involves more than just thinking about what technology or pattern to use, but to challenge and suggest alternative solutions on how to achieve the desired results.
The architect would understand the goal we want to achieve, evaluate the current scenario, and then build the design — the architecture — to achieve such a goal
Stay Technically Relevant
Stay technically relevant… means coding!
…it is important to be able to gain the trust of the team…by contributing…by looking at the pull-requests and sharing feedback about the good points and suggestions for improvement.
Help Your Teams to Grow and Perform
The best architecture will only be useful if it gets to see the light of the day, and the teams of developers you work with are the ones responsible for that.
– Share experiences on how to handle the different aspects of the development, from strategies on how to split complex projects, to ways to evaluate and approach new technologies. This is referred to as “Thinking architecturally”, and aims at making them grow and ultimately be comfortable with the new challenges.
– Share specific knowledge on a given pattern, tooling, or approach that is either in use or soon to be introduced. This aims to help them to perform better and perhaps correct or improve certain aspects of the current software in use.