The primary responsibility of the Architect is a holistic look at the system. He should know things such as:
Non-functional requirements to the system and how do the architecture reflect them.
Stakeholders’ development plans for the application and why the architecture does not hinder this development in the future.
Components are in the system and what are their responsibilities.
Interfaces and available connections between components.
Technologies, standards, and limitations used to create the application.
Can clearly tell where to find a certain functionality of code, as well as which components may communicate with database and how.
He should have a wide knowledge of available tools, popular standards, and work techniques. Such knowledge is indispensable to make right, strategic decisions for the project that are difficult to change later.
Understand and take into account needs of all roles involved in the project. In particular: end users, the project sponsor, UX designer, programmers, QA etc. Making decision or imposing any restrictions he must consider their impact on the work and their needs.
Take care of the soft aspects of working in a team: providing a breath of freshness in applied technologies and techniques, mentoring developers in a team, splitting appropriate challenges for everyone in a team.
Architect applications using DDD concepts and adhere to clean architecture that is scalable on micro-service level.
Requirements
An architect that has 10+ years of experience in software development including 3+ years in architecting enterprise applications.
Excellent knowledge and proven success in DDD, CQRS and Event Sourcing architectural concepts.
Excellent knowledge of Java or Kotlin.
Excellent knowledge of NoSQL databases preferably DynamoDB.
Very good knowledge of AWS ecosystem
Very good communicator and mentor.
Have the ability to spot discrepancies in business requirements before development starts