Your Role at a GlanceMastercam is looking for a mathematically inclined Software Engineer to join our toolpath systems development team. This team develops algorithms to efficiently drive milling machines as they cut out precision parts.
As a member of a toolpath development team, you will have the opportunity to improve the thing our customers care about the most - the efficiency and quality of our toolpath motion. You will be able to bring a wide range of skills to bear on interesting mathematical problems involving large sets of data.
To succeed in this role, you will need to be a gifted mathematician with a love of solving complex problems and an innate hatred of inefficiency. You have a knack for crafting algorithms to wring the most performance out of hardware. You have a drive to constantly improve your software development skills, and possess a passion for clean, clearly documented code. You take the initiative and can communicate well with both technical and non-technical coworkers.
How You'll Drive SuccessProgramming & Architecture Expertise- Strong understanding of the tradeoffs between Object Oriented and Functional Programming.
- Experience with Data-Parallel Programming.
Mathematical & Computational Foundations- Strong handle on Linear Algebra and Computational Geometry.
- Strong experience with Mesh and Voxel Mesh generation and optimization.
- Familiar with iterative computational techniques, such as the Conjugant Gradient Method.
Software Development Practices- Comfortable with standard software development practices such as source control, peer reviews, and unit testing.
Communication & Collaboration- Able to clearly communicate with both technical and non-technical coworkers
- Demonstrates a collaborative mindset, treating knowledge as a shared, communal resource
The Talents We're SeekingEducation & Experience- Bachelor's Degree in Computer Science, Mathematics, or Engineering
- 10-14 years of experience building commercial software in either C# or C++
Preferred Skills- Worked in an agile (Scrum, Kanban) software development environment before
- Experience with CNC machining
- Experience writing GPGPU or SIMD code
- Familiar with Parallel C++ Design Patterns and the C++ Standard Library
- Experience with Computational Physics algorithms
- Knowledge of 3/5-axis machining algorithms for roughing and finishing
- Experience with Volumetric and Surface Mesh Processing
- Experience with FEM as applied to physics-based machining
- Graduate degree in Computer Science, Mathematics, or Engineering