Nanotronics is looking for smart and passionate software engineers to join our agile engineering team in the development of the world's most technologically advanced nanoimaging solutions.
Our software team is making nanoimaging fast, accurate and cost-efficient by combining optical and atomic force microscopy with machine learning and artificial intelligence. The solutions we build push the envelope of what can be done, so we need engineers who are highly intelligent, hard working and creative.
Position Overview Our software engineers design, implement, test, and debug software applications both independently and in teams. The Software Engineer is responsible for developing hardware-interfacing software products. A deep understanding of computer science and experience with C++ and low-level programming is required. Experience with machine control and robotics is highly desired.
Key Responsibilities The position of Software Engineer for Nanotronics will be responsible for the following: Design, implement, test, and debug software applications used to control a microscopic inspection system. Develop low-level firmware which will interact with high-level software applications. Create innovative algorithms to solve challenging problems for production inspection systems. Design, develop, and own software projects from early planning to production release. Participate in project meetings with other departments and turn requirements into products. Maintain and follow quality assurance procedures, working closely with QA and tech service team members.
Knowledge, Skills and Abilities Basic Qualifications: Bachelor's degree in Computer Science, Computer Engineering, or related field. 3+ years of experience designing and developing software in a professional environment - proven ability to leverage object-oriented design principles to develop maintainable and scalable software. 3+ years of experience creating clean, elegant C++ code. Ability to interface and control hardware systems which include motors, sensors, cameras, etc.
Preferred Skills and Experience: Experience using current industry tools, including Visual Studio and git, to develop desktop software in a Windows environment. Experience developing motion control software for industrial machinery. Experience writing software which runs on a microcontroller. Ability to work both independently and in a team to bring a software project to completion.
Nice to Have: Ability to read and understand an electrical schematic. Familiarity with various low-level communication protocols (IC, RS-232, SPI, etc.) Ability to troubleshoot and debug hardware systems. Experience working with an agile team.
Work Environment This position is located in Hollister, CA and may require some travel.