Software Engineer

Cambridge /
Development /
Please apply if you are innovative and ambitious individual who wants to help build an organization that makes a positive global impact on society and the environment.

As a Software Engineer at Invenia Labs you will work on building the software components of a distributed machine learning system. In this role you will collaborate closely with Machine Learning Researchers to identify use cases and design maintainable long-term solutions that scale, address current needs while also anticipating future requirements.

Role Description

    • Contribute to design discussions surrounding core system.
    • Identify the needs of the research team.
    • Aim to exceed user expectations, ensuring that usability, performance, and correctness are given equal consideration during design and development.
    • Improve the computational performance of the system.
    • Build the software components of the system, including libraries for:

    • Expressing, distributing, and executing complex machine learning pipelines.
    • Complex data querying and preprocessing.
    • Asynchronous communication with other systems.
    • Utility packages supporting the above.
    • Review proposed code and provide feedback.
    • Contribute to open source packages.

Desirable Qualifications

    • Experience in software engineering/development.
    • BSc/BEng degree in computer science or equivalent.
    • Ability to develop and/or deploy distributed applications.

Additional Experience (Optional)

    • Julia, MATLAB or Python development.
    • Parallel or distributed computation (e.g. Dask, Tensorflow, Apache Spark).
    • Basic familiarity with Machine learning, statistics, and/or optimisation.
    • Strong communication skills, especially with regards to requirements gathering and documentation.
    • Containers (especially Docker).
    • Cloud Computing (especially AWS beyond EC2)