Software Engineer – AI/ML
As a Software Engineer, you will play an active role in designing, developing, testing, and maintaining our FLOW-3D product line and supporting applications, including new machine learning-driven capabilities. You will work on a variety of projects that will actively challenge your software engineering skills and promote career growth. You will collaborate with cross-functional teams, including other software engineers, quality assurance engineers, applications engineers, solver developers and other staff, to produce high-quality software that meets the needs of our customers and industries.
Principal Responsibilities
The role requires a solid understanding of software engineering principles and experience with multiple technologies. Key responsibilities include:
Design, develop, and deliver new features and functionality across our software packages, with an emphasis on AI/ML capabilities.
Develop and execute unit and integration tests to ensure software reliability and performance.
Troubleshoot, analyze, and resolve software defects.
Participate in code reviews and provide mentorship to less experienced software engineers.
Contribute to architecture discussions, including recommending frameworks and technologies for new initiatives, and evaluating tradeoffs between competing design approaches.
Coordinate with cross-functional teams to gather requirements, translate them into deliverable solutions, and communicate progress and changes throughout.
Stay current with industry trends, tools, and technologies, and actively seek further growth.
Required skills & experience
The background, skills and experience listed below are necessary for success in this role:
A Bachelor’s degree in Computer Science, Computer Engineering, or a related field
Professional experience with modern C++ and Python
Experience with machine learning frameworks (PyTorch, TensorFlow, or similar)
Experience with natural language processing, including integrating LLMs into software, retrieval-augmented generation (RAG), embeddings, or vector search
Experience with cross-platform user interface development using event-driven frameworks, such as Qt
Understanding and ability to communicate modern software design concepts, including:
Object-oriented programming (OOP)
Reusable design patterns
SOLID design principles
Test-driven development (TDD)
Experience developing high-quality software in a structured, professional, or academic setting with an emphasis on:
Source version control with Git or similar tools
Team collaboration, including mentoring and code reviews
Software development methodologies, such as Agile/Scrum
Strong problem-solving and excellent written and verbal communication skills
Ability to adapt quickly to new and changing technology stacks – the AI/ML tooling landscape shifts fast
Preferred skills & experience
The skills and experience listed below are relied upon in this role. While we will provide training on these as needed, preference will be given to candidates who can demonstrate knowledge in one or more of the following:
Experience with Qt framework, CMake, and GoogleTest
Experience packaging, distributing, or serving ML models
Familiarity with UI/UX design principles and design tools, such as Figma
Experience with full-stack web development