Summary
As a Senior Technical Architect at IOG, you take ownership and are accountable for the technical decisions of a product. You are responsible for designing solutions (products, components, features, libraries, ...) that satisfy functional and non-functional requirements driven by the needs of users of our products.
To this aim, you must interact with the product managers and the stakeholders, provide feedback on the satisfiability of requirements, present various alternative solutions for satisfying the requirements and provide a critical and impartial analysis of the pros and cons of the alternatives.
You must also provide technical leadership and oversight to the development teams and delegate architecture tasks effectively and responsibly to the teams to avoid both efficiency bottlenecks and architectural disagreements. You must be pragmatic about technical debt and willing to make difficult compromises in the architecture to deliver minimum viable products within reasonable amounts of time.
IOHK is a research and development, innovation-driven company. As a Technical Owner at IOG you will be responsible for ensuring all feature requests and the product roadmap are aligned with the system's long-term stability, extendibility, maintainability, and security while ensuring the development process is sustainable and efficient.
You will collaborate with the Product Owner, the technical leads, and our researchers to turn user needs into technical requirements and ensure that those are feasible under all technical constraints on the system. In addition, you will feed work items necessary to keep the system maintainable and stable into the roadmap and ensure that they are properly prioritized.
Working with cross-functional teams, you will observe and consult on their development process and team structure to keep it sustainable, efficient, and aligned with the product needs.
Duties
- Teamwork and Methodologies
- Support agile software development practices
- Participate in planning, definition, and high-level design of the solution and explore alternatives.
- Participate and give technical advice in decisions related to work prioritization.
- Participate in iteration planning to decide how much of the highest priority work is reasonable to select for execution in a given iteration.
- Review acceptance criteria of the critical tasks assigned to developers
- Communicate technical details with scientists, researchers, and developers.
- Summarize technical details about proposed solutions to management and business decision-makers.
- Contribute to the work breakdown and allocation decisions to get the best out of team members.
- Software Architecture
- Ensure that recommended software engineering principles are followed
- Enable a continuous delivery of features through appropriate architecture design and establish timeline and milestones
- Distinguish features and enablers and proactively recommend work on enablers to allow the future implementation of features
- Define subsystems and their interfaces, allocating clear responsibilities to subsystems
- Establish and raise awareness of critical non-functional requirements
- Document the architecture and technical solution decisions in a common source of truth location
- Ensure that our products do not depend on unstable and immature external libraries
- Evaluate and select appropriate software or hardware and suggest integration methods
- Select appropriate solutions to problems
- Be conscious of the costs of architectural decisions and take these costs into account when jointly making important decisions.
- Manage and evolve legacy solutions and integrate with legacy technology when appropriate.
- Knowledge:
- Acquire a deep technical understanding of problems and solution spaces.
- Maintain a firm and updated grasp of CS and Engineering techniques.
- Review literature and learn new topics relevant to the problems that must be solved.
- Know the limitations of your knowledge and experience to know when to learn more or when to look for outside expertise.
- Leadership:
- Support and encourage the software engineers.
- Provide technical guidance to software engineers.
- Recognize when training is worth the time and contribute to decisions on training.
Key Competencies
- Ensure that software engineering principles are followed
- Define and document technical and architectural visions for products, libraries, or components
- Design technical solutions (features, libraries, components, ...) for business requirements and objectively document how well the solutions satisfy the requirements
- Break down solutions into smaller tasks with clear acceptance criteria and a short completion time
- Mentor, influence and/or lead teams of software engineers (including line management duties)
Education / Experience
- A Degree in Computer Science/Engineering
- A minimum of 5 years of industrial/commercial development
- A minimum of 3 years as technical architect
- A minimum of 3 years as leader of a software development team
- Practical experience with Agile software development methods
- Experience working with Git and Git workflow
- Knowledge of functional and object-oriented programming paradigms
- Experience working together with scientists, researchers and formal methods specialists
- Knowledge of selected programming languages (e.g. Haskell, Javascript, Rust, Scala)
- Proven aptitude in:
- Writing and Oral Communication
- Organization
- Problem-solving
- Remote work
- Laptop reimbursement
- New starter package to buy hardware essentials (headphones, monitor, etc)
- Learning & Development opportunities
- Competitive PTO
At IOG, we value diversity and always treat all employees and job applicants based on merit, qualifications, competence, and talent. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.