Role and Characteristics of Software Architect

Software Architect is a vague term, and is having varied responsibilities in different Organizations and Environments. However if we talk about well accepted concept, a Software Architect is responsible to architect the system and lead all technical initiatives in the system. Software Architect is actually a senior technical person and often an ex-developer who has acquired a good level of skills across the products and platforms and having good experience of life cycle of applications. So Software Architect lead the project (or projects) for all technology related activities. She is a technical lead, and hence should have good technical skills as well as should be a good leader also. She leads the whole team around architectural decisions and implementation, and around technology related quality aspects. Here is an abstract list of responsibilities from which an architect own some or all as per the environment: 
  • Keep an eye on new technologies coming in market and pick which can add value to the system
  • Prototyping for new tool or technology
  • Submit proposals for the development of Project with a long term vision of System requirements and architecture both while keeping in mind the priorities of business
  • Technical Documents
  • Converting business requirements to technical level requirements, so that team can understand these
  • Define over all architecture and interaction of various layers and components. A durable architectures, which is abstract enough to be independent of any third party API, and even abstract within different layers of system
  • Bridge between developers, project managers, and business experts
  • Good skills of communication to make every stake holder understand the technical decisions in their language
  • Ensure the technical directions of system and choices among various available options
  • Often have experience of mixed technology set or at least understand these 
  • Mostly initiate the in-house framework development and define the roadmap for the framework development
  • Suggest solution for complex problems in System
  • Review the implementation process and design for performance and quality
  • Set quality parameters
  • Release various guidelines for implementation
  • Mentor the team for technical knowledge
  • Knowledge builing exercises and work as mentor for team
  • Exploration of new technologies and tools, and propose right one to team
  • Proposal for process and execution considering technlogical changes, requirements and project requirements

Architect usually makes all important decisions for project related to technology. She should have final say in this domain. The architect does this because a single mind is needed to ensure a system’s conceptual and technical integrity.

Architect must be very aware of what’s going on in the project, looking out for important issues and tackling them before they become a serious problem. So she should be involved in all important project discussions and decisions. When I see an architect like this, the most noticeable part of the work is the intense collaboration. Probably, in the morning, she spends time with any developer to help him for any complex problem. Then in noon, she participates in a requirements analysis meetings with business analysts, and help them to understand the technical consequences of some of their ideas in non technical terms. After noon, she might be attending a knowledge building session with the team members. And before leaving, she might be attending a high level meeting of Project Management Team including key stake holders to define the future road map of project. Next morning, she might be having a project planning meeting with Project Manager to help Project Manager in defining the next deliverable and delivery time lines.

In many ways, one of the most important activity of Architect is to mentor the development team, to raise their level so that they can take on more complex issues. Improving the development team’s ability gives an architect much greater leverage than being the sole solution provider and thus running the risk of being an architectural bottleneck. Moreover, with the growth of team, architect would be able to meet the growing needs of architecture and would be able to spend her time on more advance assignments. This leads to the satisfying rule of thumb that an architect’s value is inversely proportional to the number of implementation decisions she makes in low level design.

Many of the times, it seems like a overlap between Architect and Project Manager Role. However both roles works in parallel, hands in hands, in a successful project. Both has different set of responsibilities in project. When Architect is the owner of technical decisions and directions in project, Project Manager is responsible for resources and to deliver the desired solution within given time, cost, and quality parameters with given resources. So Project Manager is the owner of resource planning, scheduling, and delivery.

Architect must have a good hold on domain also. Future road map of technical architecture is highly integrated with functional architecture. Hence Architect will be able to contribute best when he is good in domain knowledge. Moreover there are many patters which are recommended for a specific domain, for dealing some specific type of problems in those domain. So with domain knowledge, Architect can utilize this available knowledge. Domain knowledge is also useful when Architect is understanding the requirement and mapping these with technical stack.

Architect should have broad set of knowledge in technology, which will give her the bandwidth to think across the technology stack available in market and to choose the best available option. Designing skill is also important for Architect, to design a robust, extensible and scalable system. Further Architect must have good experience on any one programming language. This will help her in code reviews for quality and performance, to understand any existing implementation like legacy code or any open source solution, and also in solving the problems of team. If she is good in one programming language, she can utilize her skills at abstract level to learn and understand any new language quickly. Moreover, Architect may need to code in some of the complex modules or in prototypes. So this is an important skill.

There are few non-technical skills where an Architect should be good. These skills are like communication,
negotiation, decision making capabilities and being aware about Organization Politics. As she needs to interact with most of the key stake holders of project, including technical and non-technical both, she should be good in communication. This skill will help her to make them understand the project technical terms in non-technical language and to give them a broad overview of project future in term of technology. It may also help her to communicate the technology limitation or boundaries to non-technical business people to make important decisions for priorities and deliveries. And here negotiation skills goes hand in hand with communication skills.

Decision making capability is very important as she is responsible to make all technical decisions for the project. So Architect should be able to take quick and right decisions. A weakness in this skill can make other people to loose confidence in Architect. Further Architect should also be aware about the Organization Politics so that she know what people think about project and where the power resides to communicate the right things about project to right person. Project is running within Organization and hence is affected by Organization Politics also. So being aware about it is important to keep project in right direction.

So here we have discussed about the role and characteristics of Software Architect. As we said initially, this is a vague term. Hence any comment or knowledge point is welcome to make this discussion more rich.

People who read this post also read :


Post a Comment