What does a software architect do?
Oliver Goldman breaks down the definition of a software architect, and reviews some common tools and practices that potential architects will want to study.
If you work in software, you may have met someone with "architect" in their title—and perhaps you've wondered exactly what that means. Or, you may have noticed that architects tend to be the most senior and accomplished members of their teams—leaving you wondering what it takes to earn that title for yourself. In short, what, exactly, does a software architect do?
Software architects govern the organization of software systems over time. Let's break that definition down:
- Govern: Architects design software but, usually, they do so cooperatively with others on the team. Architects govern that work through principles and processes so that these individual efforts come together into a greater whole.
- Software system: A software system can be a library, and application, a service, or even some combination of the above. Architects operate at different scales, depending on the scope of their responsibility.
- Design...over time: Few software systems are "one-and-done", suitably addressed with a static design. Most will gain new capabilities, scale up for greater use, or migrate to new platforms over time. Architects anticipate and plan for these changes.
Software architects play an increasingly important role in software development as systems live longer and evolve more rapidly than ever before. Once, a major application might have shipped an update only every 18-24 months. Now, even major systems ship an almost constant stream of updates. Software architects help create the process and structures that smooth the way for each iteration.
Architects use a variety of tools and practices in their work. Whether you're interested in becoming an architect or just want to understand what they do, you'll want to learn more about:
- Architectural patterns and styles. Over time, architects have found patterns and styles that work well and can be applied to multiple systems. Architects use these in their work, and often share their learnings and variation with the community.
- Technical visions. Vision papers describe a future state of some system, and often explain the forces that are, or are anticipated to, drive its evolution over time. Vision papers help architects identify and share the forces they see shaping their system.
- Architectural principles. Principles are beliefs that help guide decision-making. Architects identify principles for their systems to help them and others make decisions as they work towards their technical vision. While principles can evolve, good principles tend to change slowly, if at all.
- Standards. Standards are specific, technical guidelines to which design and code should adhere. Standards are set to drive consistency. For example, standards might dictate the use of a certain programming language, thus making it easier to share code throughout the system.
- Process. Architects govern systems that are in a constant state of change. By adopting a process to manage changes carefully and consistently, they make it easier to bring focus to the technical challenges at hand. Examples of common processes are Architectural Decision Records (ADRs) and Requests for Comment (RFCs).
- Diagrams. Architects use visual diagrams to document, explain, and evaluate complex technical designs. There are many types of diagrams, each corresponding to different views of a system: how the code is structured, how it's deployed, and so on. Ideally, diagrams are expressed using formal notations, such as the Unified Modeling Language (UML).
Architects are typically amongst the most senior members of a team because it takes time and experience to learn these skills. If you're interested in starting down the architect career path, make time to learn about diagrams and architectural patterns and styles. And if you're already on that path, look for opportunities to round out your knowledge and skills—there is almost always room for improvement on processes, standards, visions, and more. As your skills and experience grow, you'll find yourself making ever-bigger contributions to the governance of your system over time.