Senior Software Engineer
Role details
Job location
Tech stack
Requirements
Mastercam 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 Success
Programming & 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.
- 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, * 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