As most of you know, that there are various phases in architect's career progression and one would choose the path depending on their experience, expertise and preferences. Believe me, being a software architect is not easy but one thing is guaranteed that the journey will be a fantastic one with it's own share of learnings and un-learnings, in each phase.
Through this article I am going to detail out the expectations and responsibilities that are needed while taking up an architect role in each phase, and also provide necessary guidance.
Following are the various types of architect found in any organization. In general, they have standard set of responsibilities but at times may vary from organization to organization, leading to confusion around the definitions. However, the definitions that you find below is more general and not bound to any specific organization.
Chief Architect - Takes the top most position in the hierarchy, and also the most toughest role to play. They report to CTO/CIO, participates in board meetings and has decision-making capabilities in terms of organization goals, technology choice, and allocating budgets for large-scale projects. They run the ARBs (Architecture Review Board) and usually have the Principal or Enterprise Architects working under them (if not reporting directly) on various objectives of an organization. There can be only Chief Architect in an organization.
Principal/Enterprise Architect - Is the one who has holistic view of organizational goals and objectives, and ensures that the architectural, and technical designs are aligned to it. They are expected to have deep and broad understanding of technology landscape so that they can make the right decisions in terms of architectural designs and recommendations, such that the decisions made have both short term and long-term goals met.
Solution Architect - Works with other architects to understand the requirements and arrive at a solution. Of course, the solution is not generic but depends on the requirements or a problem statement. They would breakdown the requirements and categorize them accordingly (for e.g., application refactoring, rearchitecting, cloud migration, data processing platform, etc.), work with one or more architects (such as application, data, cloud, etc.) and picks the feasible design and technology that solves the problem. They consider organizational objectives and apply necessary architecture principles, best practices and guidelines while designing the solution. They also focus on creating reusable artefacts such as reference architecture, reference implementation, frameworks, and libraries. Solution architects are expected to be hands on and at times code while building prototypes or doing PoCs (Proof of Concepts).
Application Architect - Gets involved in the architecture and design of one or more applications. They must ensure that the application design meets all the requirements. They may also recommend the technologies, frameworks and design patterns that are necessary for an application, and is expected to work on an alternatives when the need arises. They work closely with the development team providing the guidance with necessary standards and best practices for an application, and involves in the review of detailed design and code. Application architects are expected to be hands on and are skillful in the area (frontend, backend, integration, APIs, etc.) that they are considered as an expert.
Data Architect - Responsible for organization's data management aspects such as data sources, strategy for storage and retrieval mechanisms, monitoring, backup, archival and recovery options. Depending on the requirements, they design and model the data for applications and ensure all the security principles are applied to store the data in a secure manner. They may also support the development team with the data modeling, and help them in writing optimized queries in the code that's written to store and retrieve the data.
Some organizations have a role called Information Architect, which is quite similar to data architect role, but they differ in such a way that is more concerned with how the data would be used and presented to the user that could potentially influence user experience. They may get involved in the usability testing to gather feedback from the users and understand if any changes needed to the data to better user experience. In such cases, they might play both information and data architect roles, or work with the data architects to remodel the data if necessary.
Cloud Architect - As organizations embrace cloud infrastructure more and more, for the deployment of applications and services, it has become essential to have a dedicated cloud architects who will handle the cloud strategy and adoption. Based on the requirements, they work on picking the right cloud provider and model (IaaS, PaaS or SaaS), and work closely with solution architects and enterprise architects in strategizing the cloud adoption - be it migration or the design of cloud-native applications for the greenfield projects. Moreover, they are also responsible for the management of cloud resources including monitoring, and create necessary policies and governance to avoid misuse of resources.
Due to high adoption of public and hybrid clouds, cloud architects are expected to be vary of security concerns that it could bring in, and hence work with security architects and define the strategy and guidelines with the usage of tools and services in securing applications and data deployed on cloud resources. One of the challenge that cloud architects would face is in bringing the cultural change within the organization including leadership team. There will be a paradigm shift in the way the resources will be configured and deployed to the cloud, when compared to the traditional on prem deployments. It brings in drastic change both in terms of processes that the team will have to adopt to, and the need to learn new tools and services. Cultural change and adoption of new processes will not be possible without the approvals of leadership team (decision makers), and hence the cloud architects will have to put an additional effort in communicating the same and convincing the leadership team.
Mobile Architect - With the advent of smartphones, almost every organization wanted to cater their services through mobile channel, and today we have millions of mobile apps out in the market. They should understand the pros and cons of developing mobile applications based on various approaches such as hybrid, native, responsive and progressive web apps, and take a call on the right approach which is feasible and viable from organization perspective. One should be aware that most of the mobile apps depend on the backend services to serve the data, and hence the architects are expected to understand the underlying aspects of backend services such as communication patterns, API contracts, distributed nature of services, and caching capabilities. And not to forget, to use the right set of tools to capture the usage metrics, and address reporting, error handling and monitoring capabilities.
As the mobile apps are consumed by the end users, user experirence and securing of mobile apps remains paramount importance. They will have to work with Data Architects and Security Architects, and involve in the usability testing and vulnerability testing aspects and ensure that the concerns and any gaps identified during the process are addressed.
UI Architect - They will share similar set of responsibilities like those of mobile architects, as the UI applications are also consumed by the end users, which means the user experience and security are of paramoount importance. The only difference would be in the underlying technology stack and design patterns that shall be used while writing applications.
DevOps Architect - As you all know that the DevOps is a strategy applied to bridge the gap that was once existed between various stakeholders, mainly the Development and Operation teams, especially in the traditional project execution models. This strategy brings in a cultural shift with new set of processes, technologies and tools, and hence it is essential for DevOps architects to know the right set of tools that could potentially be used by both the development and operations teams, automate the process and manage operations.
Security Architect - Responsible for creating guidelines, tools and infrastructure to secure the applications, data and the underlying infrastructure. They conduct necessary assessments and vulnerability testing to confirm on the security requirements, and identify any potential vulnarabilities that could harm the applications, data, infrastructure and eventually users. The security architects are expected to be familiar with security standards and best practices, and apply necessary techniques and actions to overcome potential threats found in the systems.
Test/Automation Architect - Plays a key role in building the testing methodology and processes in an organization by collaborating with other stakeholders such as Test/QA Manager. They are the decision makers in picking the tools, techniques, and automation frameworks, and also owns the test infrastructure. In the DevOps setup, they will closely collaborate with the DevOps engineers/architects in provisioning the test environments that are critical in the release cycles. Additionally, test architects play a role of mentor and provide technical guidance and support to the test team members. As the automation space is continuously evolving, it is essential for them to be aware of the latest trends and technologies, thereby helping the test team to help improve in the processes and overall productivity.
A decade back, I got into architect role by becoming a Technical Architect, much before the organizations started embracing cloud, mobile, and other technologies. It took me around 10 years to climb up the ladder to Principal Architect after being an Application Architect, Solution Architect and Senior Solution Architect. Throughout my career, I stayed very close to the technology, coding on regular basis (as part of projects, PoCs, prototypes, practices, etc.), learnt new technologies, languages, embraced new processes and cultural shift (due to Agile, Microservices and DevOps initiatives) in various organizations, and many more. These are the ones that helped me to stay relevant and focus on on my career goals. Being a strong believer of continuous learning, I learnt one or the other thing from my each project, colleagues of various organizations and last but not the least - industry experts and leaders. In this era of ever changing technology landscape, it is quite relevant to stay connected to the technology, and an ability to communicate the domain language.
No matter what role you are playing already, or would like to be in the future, it is essential for you to,
be hands on
firm understanding of technology landscape
keep an eye on latest trends both technical and domain wise
be open-minded to learn new technologies and programming languages
be cross-functional
make an honest effort to improve communication skills (only on need basis), and
learn from mistakes