What is a Software Architect?
- A software architect is an expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms. (Source: Wikipedia: Software Architect)
- Software architecture is the fundamental organization of a system, represented by its components, their relationships to each other and to the environment, and the principles that determine the design and evolution of the system. (Source: Handbook of Software Architecture)
Levels of Architecture
Architecture can be done on several “levels” of abstractions. The level influences the importance of necessary skills.
As there are many categorizations possible my favorite segmentation includes these 3 levels:
- Application Level: The lowest level of architecture. Focus on one single application. Very detailed, low-level design. Communication is usually within one development team.
- Solution Level: The mid-level of architecture. Focus on one or more applications that fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams.
- Enterprise Level: The highest level of architecture. Focus on multiple solutions. High-level, abstract design needs to be detailed by solution or application architects. Communication is across the organization.
Sometimes architects are also seen as “glue” between different stakeholders. Three examples:
- Horizontal: Bridge communication between business and developers or different development teams.
- Vertical: Bridge communication between developers and managers.
- Technology: Integrate different technologies or applications with each other
Architect's Technology Roadmap
Suggested Books
- Refactoring. Improving the Design of Existing Code by Martin Fowler
- Enterprise Integration Patterns written by Gregor Hohpe
- Design Patterns: Elements of Reusable Object-Oriented Software by John Vlissides, Ralph Johnson, Richard Helm, Erich Gamma
- Experience and Knowledge Management in Software Engineering by Kurt Schneider
- Clean Code by Robert C. Martin
- UZMO — Thinking With Your Pen
- Agile Estimating and Planning by Mike Cohn
- Designing Data-Intensive Applications by - Martin Kleppmann (If you do anything with data, analytics, data science this is a must-read).
Suggested Roadmaps
Reference
System Design: The complete course
Learn how to design systems at scale and prepare for system design interviews
https://www.karanpratapsingh.com/blog/system-design-the-complete-course

My Top Software Architecture Resources
Here are my top books and resources on software architecture. All of these are really great sources...
https://dev.to/remast/my-software-architecture-resources-g38

8 Places to Learn System Design and Software Architecture for Technical Interviews | HackerNoon
Hello folks, if you are preparing for System design Interview and looking for best resources to master Software design and System design then you have come to the right place.
https://hackernoon.com/8-places-to-learn-system-design-and-software-architecture-for-technical-interviews

GitHub - Jeevan-kumar-Raj/Grokking-System-Design: Systems design is the process of defining the architecture, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems theory to product development.
Systems design is the process of defining the architecture, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems ...
https://github.com/Jeevan-kumar-Raj/Grokking-System-Design/tree/master