BE THE CAUSE OF DISRUPTION
IOHK is a company focused on decentralization and disruption, and the people that enable us to do so are no exception either. With operations in Hong Kong, Japan and Eastern Europe, and employees and partners from Latvia, the Netherlands, Austria, France, Ukraine, Argentina and Brazil in addition to its multinational core members, IOHK is a truly global company despite its small, overall size and short history.
We not only aim to cause disruption with our technology, but also with the way we organize a group of talented and motivated people around the same vision and passion.
We are always looking for talented and motivated people to join our team, and more importantly to collaborate with. Our goal is to cause cascading disruptions and there are many ways to be a part of it. If you feel like you have something to contribute, whether directly to IOHK or one of its projects, please do not hesitate to contact us.
All openings > Senior Technical Architect
Senior Technical Architect
As a Technical Architect at IOHK you take ownership and are accountable for 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, 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 must delegate architecture tasks effectively and responsibly to the teams in order to avoid both efficiency bottlenecks and architectural disagreements. You must be pragmatic about technical debt, and must be willing to make difficult compromises in the architecture in order to deliver minimum viable products within reasonable amounts of time.
- Team Work and Methodologies
- Support agile software development practices
- Participate in planning, definition, and high-level design of the solution and explore solution alternatives
- Participate and give technical advice in decisions related to work prioritization
- Participate in iteration plannings to decide how much of the highest priority work is reasonable to select for execution in a given iteration
- Review acceptance criteria of critical task 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.
- Acquire 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 that are relevant for the problems that need to be solved.
- Know the limitations of your own knowledge and experience to know when to learn more or when to look for outside expertise.
- Support and encourage the software engineers.
- Provide technical guidance to software engineers
- Recognise when training is worth the time and contribute to decisions on training.
- 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-10 years of industrial/commercial development
- A minimum of 5 year as technical architect
- A minimum of 1 year 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
- Proven aptitude in:
- Writing and Oral Communication