The level of the architect’s involvement in the project should be certain and not very deep. When architects create extremely detailed software designs, they begin micromanaging the work. This is one of the reasons why architects are often misunderstood and people don’t like getting directions from them. The role of the architect is defining top-level partitioning of the system, not designing individual components or classes. These tasks are part of developers’ and tech leads’ jobs. Unclear responsibilities of architects cause unnecessary harm and conflict between roles. Taking the creative work from engineers and tech leads steers to having no architects in the future because the next generation of architects will grow within that group. When they get no design challenge, they cannot grow properly. Keeping a good amount of system design and managing it should be in the direction of leading and coaching. Architects define top-level partitioning and top-level design. They can suggest a way for implementation. But they shouldn’t dictate and be open to accepting other ways to implement and even sometimes forego the credit for suggested improvements.
- Related Note(s):
- 42: What to Consider While Designing a Software System;
- 19c: How to move faster in organizations;
- 33: Elevating Others Around You;
- 10a: Growing in IC track in Engineering;
- 21: Efficient Code Review Process (The changes I wanted to do in one of my teams);
- 15: What should you do when your manager delegates a task to you;
- Source(s): Mythical Man-Month by Frederik P. Brooks Jr.;