Your job
As software architect, you'll drive architecture decisions on all our products. You will guide 8 other developers in best practices (and also when to leave best practices), keep a high quality standard and make sure domains are separated correctly.
Together with the CTO and Team lead you will determine the future strategy and you will make decisions on questions such as; what short and long term decisions are in play? What is needed for this? What knowledge are we missing in the team? What should the next hire be? Is the ratio between front-end and back-end still correct?
In addition, you carry other responsibilities like;
Together with the CTO and Team lead you will determine the future strategy and you will make decisions on questions such as; what short and long term decisions are in play? What is needed for this? What knowledge are we missing in the team? What should the next hire be? Is the ratio between front-end and back-end still correct?
In addition, you carry other responsibilities like;
- You are driven in explaining your technical choices to other stakeholders and your team. You can explain well why you choose a certain architecture.
- You have close collaboration with the Product team for new features.
- You take the lead in creating UML diagrams such as Class Diagrams, ERDs, SSDs etc. You are able to communicate this to less technical stakeholders during product meetings.
- You establish a clear structure in the codebases largely based on Domain Driven Design. You push for Low Coupling and the right contracts between the domains. For new features you are end-responsible for which fields end up in which domains and what dependencies are needed between domains.
- You do code reviews to ensure code is architecturally correct. You keep a good eye on code quality and oversee the introduction of new tools to improve the developer workflow.
- You oversee the design of all REST endpoints and coach the team in good REST design.
- For new features you determine in which phases they will be rolled out with high-availability in mind. You determine which feature flags we introduce and when we run the migrations.