The Application Architect is generally autonomous in their technical thought leadership in framing technical visions based on strong understandings of the business and economic environment.
The Application Architect is a member of an Agile program's management team and has hands-on technical responsibility for the overall architectural and engineering design for all of the several products being delivered by the program, which may include some of the most complex and mission critical applications for the organization. They are responsible for cross-discipline view on solution development including analyzing technical trade-offs, determining major components and subsystems, and defining interfaces and collaboration between them. The Application Architect understands the solution context and works with the development teams and business users to help ensure fitness for use in the business user’s environment.
In cooperation with Product and Delivery Management, the Application Architect plays a critical role in aligning teams with a common technical direction while they work toward the accomplishment of the Vision and Roadmap. As a program-level leader of the technical staff on the program, the Application Architect will mentor the program staff, challenge their assumptions, and encourage them to consider the tradeoffs among the quality attributes. To establish and maintain their credibility with development teams and other technologists, the Application Architect must be a competent developer as well as be a proactive and persuasive collaborator.
Although the Application Architect has the authority and responsibility over the architecture and design of the applications, the Application Architect will favor guiding teams toward a suitable solution and building consensus with the team such that these decisions are jointly owned and all parties are devoted to the approach. There will be times where the Application Architect must step in and make a decision for a number of reasons (e.g. stopping paralysis, violation of portfolio/enterprise requirements) but these cases should be rare. The Application Architect must keep an eye on the big-picture and make sure that development teams are kept informed with any information that is relevant to their product and helps them align with needs of the organization.
Additionally, the Application Architect is a Lean-Agile leader who understands the complexities of large-scale solution development and applies Lean and Agile practices to address them.
- Align development teams to a common technological and architectural vison of the solution under development
- Facilitate and lead the design and technical architecture for the program
- Consult and contribute to the planning and definition of the product
- Own the high-level design of the solution and evaluate solution alternatives
- Define subsystems and their interfaces; allocate responsibilities to subsystems; understand solution deployment, and communicate requirements for interaction with the solution context
- Work with portfolio and enterprise stakeholders, particularly the Enterprise Software Architects and Enterprise Operations, to ensure alignment with enterprise standards and objectives (e.g.designing for lights-out operations)
- Lead and participate in Program Increment (PI) Planning and Pre-Planning, System and Solution Demos, and Inspect and Adapt events
- Define, explore, and support the implementation of the design to evolve the solution intent; work directly with development teams assisting their implementation, and supporting them as needed
- Plan and develop the Architectural Runway in support of upcoming business Features/Capabilities
- Work with Product Manager, Program Manager, and Product Owners to ensure that architectural components that enable feature delivery are appropriately prioritized and that team capacity is allocated toward their completion
- Support technology/engineering aspects of a program-level Kanban
- Supervise and foster building quality into the systems
- Define and plan training and growth curriculum for development team members
- Contribute to the technical aspects of all program staff’s annual reviews and goals
- Facilitate and manage technical debt backlogs for development teams. The Application Architect should ensure that teams identify and capture their tech debt. The Application Architect, along with feedback from the teams, is responsible for prioritizing the tech debt backlogs (one backlog per team)
- Identify technical risks and work to establish a suitable mitigation strategy
- Fulfill other roles on smaller programs as necessary (e.g. development team Dev Lead)
- Consistently demonstrate good judgment in technical decision making and be able to explicitly convey the rationale and trade-offs that contributed to the solution
- Publish and keep current, any suitable artifacts that represent evidence of design for the current and target states. The artifacts should allow portfolio and enterprise level architects to identify risk, identify opportunities for leverage, provide insight into which qualities the teams are optimizing for, and the insight into the judgement of the technical leadership. Artifact examples include: Quality Attribute Scenarios, Context Diagrams, Module Views, Component & Connector views, Deployment Views, Variability Guides, Assumptions, Decisions, and Constraints Documents