For relatively large, more than 50 members, Software Development projects, the organization structure is very important. Some, or should I say many?, modern projects apart from Product Management also have dedicated Software Architecture team, which has specific yet significant purpose. Here are some explanations.
Why Software Architecture team
Why Software
- the main focus of the team should be on Software Development aspects,
while Product Vision and Product Roadmap should be defined by Product Management team.
Why Architecture
- the team is responsible for all architectural and structural changes.
Why team
- for big project one Software Architect
role is not enough, the team should be able to solve different, usually rather complex technical problems.
Responsibilities:
- Define Software Architecture and Module Structure
- Decide Software Development technologies, tools and platforms
- Plan, lead and perform major structural changes to ensure future development
- Develop and enforce common Coding conventions, Design rules and Best Practices
- Manage Source Code repo(s), define folder structure, own root folder
- Make strategical and High Level Design decisions
- Review, approve or reject major Source Code changes, resolve conflict situations
- Gradually improve Software Development processes to speed-up Feature Development and increase Code and Product Quality
Basic operation principles:
- A number of Software Architecture team members is 5-7
- Software Architecture team should operate as an ordinary Agile team (SM, PO, Planning, Grooming, Retrospective etc)
- The members of Development teams can be promoted to Software Architecture team if they satisfy requirements (see below)
- The goals of Software Architecture team must be prioritized among other activities
- Software Architecture team must provide the possibility for Product Management team to fulfill short- and long-term product development goals
- Product Owner in the Software Architecture team represents Product Management team
Requirements:
- Exceptional programming skills with several modern programming languages (including C/C++, Python, Java, JavaScript)
- Experience with large Software Projects
- Experience with Project Management
- Expertise in Software Architecture and Design
- Expertise in Software Development Best Practices
- Good understanding of SDLC (Software Development Life Cycle)
- Good knowledge of modern Software Development methodologies
- Good communication skills
- Good knowledge of the domain area
- Good to have experience with Open Source projects
References:
- The Software Architect and the Software Architecture Team
- Software Architecture for Developers (book)
- Software Architecture Roles: Who Is a Software Architect?
- 38 Actions and Insights to Become a Better Software Architect
- The Architecture Owner Role: How Architects Fit in on Agile Teams
- The role, skills, and duties of a software architect
- What is a “Software Architect” and should they write code?
- Should Architects Write Code? You Bet They Should!
- What do software architects really do?