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: