1. Architecture. Designing system architecture that accounts for both theoretical developments and practical considerations.
2. Algorithms. Developing algorithms from theoretical descriptions and mathematics. Establishing exact training protocols for ML models and designing requirements for Engineers work.
3. Prototyping. Designing prototypes and proof-of-concept level solutions, that demonstrate core features of the company technology.
4. Assessment of feasibility. Serve as a constant communication channel between Research Scientists representing the theoretical side of things and Software/ML Engineers representing the practical side of things. Assess which proposed solutions and approaches are feasible from both sides' perspectives.
5. Maintaining systemic vision. Answering clarifying questions about all parts of the system, keeping knowledge about solutions up to date, identifying blind spots and problems with system design.
6. Balancing conventional and unconventional. Analysing and deciding which parts of the system should be designed and implemented using pre-existing algorithms and solutions and which require exploration. Similarly deciding on which problems should be solved by using Machine Learning and which by classical algorithms and data structures. Finding the optimal balance between interpretability, corrigibility, transparency and performance, feasibility, attainability.