Aug. 28, 2022

The Software Architect as a Coach and Mentor

The role of software architect may or may not exist in your organisational context. Either way you know you do the work of an architect when you are the person who leads the architectural design. In other words, you have the final say or a great influence over the final decisions on the main components of your software, frameworks, and other technologies to be used, maybe the assignment of team members to various parts of the project.

Furthermore, you will have responsibility over communicating the architecture whether formally through documentation or informally through discussions, whiteboards, windows, walls, or flip-charts. In many cases you may also be held accountable for ensuring that the agreed architectural decisions are adhered to and possibly you will be involved in any evaluation process.

If this is your role whether it is a title used in your organisation or not, then you are leading developers of different skill levels daily. Whether the model is very formal and hierarchical or a more modern servant-leader style of leadership - you are leading.

In terms of effectiveness, it means that an architect should:

  • Ensure that team members understand the architecture and its implications
  • Empower team members in ways that allow them to contribute to the architecture – this could involve including them in brainstorming sessions
  • Ensure that team members are au fait with the patterns and technologies selected through identifying and providing the necessary training resources
  • Providing team members with feedback on any work done
  • Work alongside team members both imparting knowledge and learning from team members
  • Encourage feedback from team members who often will have great insights that can improve the architecture and improve work processes.
  • Allow team members to assist in maintaining an up-to-date documentation of the system’s architecture.

This being said, the role of software architect as a coach and mentor is an important one and contributes not only to the creation and maintenance of quality software but also to the development of mature developers who are integrally involved with and aware of the current structure of the software and the range of influencing factors and how these things will and should evolve over time.