Software Engineer – Job Description
Automated Precision, Inc is seeking an engineer for software development to support state-of-the-art Laser Measurement Devices and Scanners. The candidate will be responsible for providing substantial technical contributions in a complex, time-sensitive, and safety-conscious working environment. The successful candidate should demonstrate an interest and aptitude for working effectively in dynamic, multi-disciplined teams.
Responsibilities
- Design, develop, and maintain C#/.NET applications and C++ libraries.
- Implement robust interfaces between native C++ modules and managed C# components (e.g., via P/Invoke, C++/CLI, or interop layers).
- Debug, profile, and optimize performance across managed and native boundaries.
- Work with 3D visualization, CAD/geometry, data processing, and real-time hardware interfaces.
- Develop tools and GUIs in C#/.NET (WPF, WinUI, or MAUI) and/or C++/Qt.
- Collaborate with cross-functional teams.
- Contribute to design, documentation and maintain coding standards across all software platforms.
Required Skills
- Bachelor’s or Master’s degree in computer science, or related field.
- 2+ years of experience in software development using both C++ and C#.
- C# / .NET development experience — including async programming, WPF/WinForms, and REST integration.
- Experience with interoperability between managed and unmanaged code (P/Invoke, COM, or C++/CLI).
- Solid understanding of object-oriented design, software architecture, and version control (Git / SVN).
- Experience with Visual Studio and CMake build systems.
- Familiarity with unit testing frameworks (e.g., GoogleTest, xUnit, NUnit).
Preferred / Nice to have
- Strong mathematical fundamentals, including linear algebra and calculus.
- Experience with 3D geometry, graphics APIs such as OpenGL / VTK.
- Familiarity with Python or scripting integration.
- Understanding of CI/CD pipelines, or cross-platform builds.
- Exposure to hardware interfacing, real-time systems.