Role of architect
- Being a technical coach
If we use analogy of football game, the role of an architect in a software project is that of a coach in football. Architect is to know and guide his team about all latest techniques and work methodology, correcting them where needed.
- Taking delivery ownership
In general in software industry it is seen that architects design and recommend technologies and methodologies, but if a software project fails to deliver/has issues, the blame goes on either team or “project manager”. The failure is generally put with execution, which may not be entirely fair. Architect of an project has and should take an equal ownership of the project and there by being part of its success or failure.
- Being a coach who plays- very important!
Have you seen a football coach? He goes on field and shows things to team members by “doing” them. Doing is important. An architect who has not written a single line of code fr years, would be for sure far less competent to understand the problems being faced at ground level. One of the the techniques which can be effectively used here is to go for pair programming for small stories (In case of Agile projects). This way the architects would not get bogged down by daily routine of “doing work” at the same time, will have there hands on going on.
Its important to do/code, but at the same time architect has to keep a track of the 10K view of things.
- Understand more than application architecture
Software systems are getting more and more complex and its important for the architects to understand not only how the application in question works, but a bigger picture as in how the application is going to interact with other applications.
- Dev process, team org.
Architects in general leave it upto the project manager to define and manage the team, the development process and documentation part of it. Its imperatively important that architects do attend the daily stand up and “listen” to team members and understand the issues being faced in dev process and team dynamics. Architects should also be part of the retrospects and reflect on the areas which need improvement and areas which are strong points of the team.
- Manage technical debt
Its important for an architect to manage the technical and design debt in an project.
- The last word: Documentation
Most of the developers, agile practitioners are anti-documentation types, going by the argument that “code” is the “document”. While the process of “documentation” may not be important, but the process of design and thinking is important. Also there are multiples metrics collected in a typical SDLC cycle, but its important to see what is really useful and sustainable over the lifecycle of the project. As Deming puts it
“The most important things cannot be measured“
The thoughts expresses in this post are not of the speaker nor of the organizations mentioned. They are interpretation of the attendee who attended the sessions