Job summary:
we are seeking a highly skilled and experienced software architect to lead the design and evolution of our complex, distributed software systems. The ideal candidate will possess deep expertise in domain-driven design (ddd) and event-driven architectures (eda), coupled with a strong understanding of schema design, event modeling, and software design patterns. You will be instrumental in building scalable, resilient, and maintainable solutions that align with our business objectives and technical vision.
key responsibilities:
- architectural vision & strategy:
- define and champion the architectural vision and strategy for our software platforms, with a strong emphasis on ddd and eda principles.
- translate business requirements into robust, scalable, and adaptable technical designs.
- ensure architectural integrity and consistency across all development teams and projects.
- domain-driven design (ddd) implementation:
- lead the application of ddd principles, including bounded contexts, ubiquitous language, aggregates, entities, and value objects.
- facilitate domain modeling sessions with product owners, domain experts, and engineering teams to create a shared understanding of complex business domains.
- event-driven architecture (eda) design:
- design, implement, and govern event-driven systems, including event sourcing, cqrs, and other relevant patterns.
- define event contracts, schemas (e.g., avro, protobuf, json schema), and ensure proper event versioning and evolution strategies.
- select and recommend appropriate messaging technologies (e.g., kafka, rabbitmq, pulsar, cloud-native services) and patterns (e.g., choreography vs. orchestration).
- schema and data modeling:
- design and manage schemas for events, apis, and data stores, ensuring consistency, clarity, and forward compatibility.
- address data consistency, integrity, and availability challenges in distributed systems.
- design patterns & best practices:
- promote and apply established software design patterns to solve recurring design problems.
- establish and enforce coding standards, architectural blueprints, and best practices for software development.
- champion practices like test-driven development (tdd) and behavior-driven development (bdd) within the architectural context.
- technical leadership & mentorship:
- provide technical guidance, mentorship, and support to development teams.
- conduct architectural reviews, code reviews, and provide constructive feedback.
- lead proof-of-concept projects to evaluate new technologies and architectural approaches.
- collaboration & communication:
- collaborate effectively with product managers, engineering leads, sres, and other stakeholders to align technical solutions with product vision.
- clearly articulate and document architectural decisions, designs, and technical specifications.
- technology evaluation:
- stay abreast of emerging technologies, patterns, and industry trends, particularly in ddd, eda, and distributed systems.
- evaluate and recommend new tools and technologies that can enhance our systems and development practices.
required qualifications & skills:
- bachelor's or master's degree in computer science, engineering, or a related field.
- [x+] years of experience in software development, with at least [y+] years in a software architect or similar technical leadership role.
- proven, hands-on experience designing and implementing systems using domain-driven design (ddd) principles (e.g., bounded contexts, aggregates, ubiquitous language).
- extensive experience with event-driven architectures (eda), including event sourcing, cqrs, event streaming, and message brokers (e.g., kafka, rabbitmq).
- strong understanding of event schema design, versioning, and management (e.g., avro, protobuf, json schema).
- deep knowledge of software design patterns (e.g., gof patterns, enterprise integration patterns, microservices patterns).
- proficiency in one or more modern programming languages (e.g., java, c#, python, go, scala).
- experience with microservices architectures, api design (rest, grpc, graphql), and distributed systems.
- familiarity with cloud platforms (e.g., aws, azure, gcp) and their relevant services for building event-driven systems.
- experience with various database technologies (sql, nosql).
- excellent problem-solving, analytical, and critical thinking skills.
- strong communication, presentation, and interpersonal skills.
preferred qualifications:
- experience with specific event streaming platforms like apache kafka, confluent platform, or similar.
- knowledge of containerization (docker) and orchestration (kubernetes) technologies.
- understanding of devops principles and ci/cd pipelines.
- experience with system observability (monitoring, logging, tracing) in distributed environments.
- contributions to open-source projects or a strong public portfolio (e.g., github).