In this position, the Software Engineer will work closely with Software Controls Engineering and Systems Engineering teams to develop proprietary code, user interfaces, and data visualization tools that enable control, calibration, and performance verification of optical instrumentation and high performance lens assemblies. This will include the integration of industry standard function calls and software packages, as well as internally developed algorithms and data processing functions within a software versioning and revision control system. The successful candidate will have a strong background in computer science fundamentals, mathematics, and creation of customer-oriented results and reports through software tools.
RESPONSIBILITIES INCLUDE (BUT ARE NOT LIMITED TO):
· Identify, develop, and/or integrate algorithms to extract characteristic metrics from data arrays (2D and 3D) and plot results with clear visualization and labeling.
· Design test cases and identify datasets to validate algorithm correctness and performance.
· Develop software tools to automate various steps in the testing and analysis process.
· Develop scripted communication with commercial optical metrology software platforms (Zygo, 4D, Image Science, Optikos, Phasics, Keyence, etc.)
· Design, develop and distribute front facing user interfaces (GUI) for internal lab use and end-user products.
· Design, testing, verification, and validation of control-system software for precision optical assemblies and instruments.
· Develop and execute test cases in a simulation environment, analyze and present data, validate control functionality, and document results.
· Analyze data flow, application configurations, and interfaces to facilitate successful troubleshooting.
· Develop and document process and logic flowcharts.
· Work within and leverage existing architectures and standards.
· Write software specification documents that reflect customer inputs for GUI/communication, interface, and networking.
· Author operating manuals to communicate functionality and use of internally developed software platforms.
· Interface with and provide updates to the design and program management teams.
· Performs all other duties as assigned.
· BS or MS in Computer Science, with a minor in Mathematics or Data Science
· Working knowledge of (but not limited to) computer science fundamentals, object-oriented programming, data structures, algorithm development, and operating system concepts[JV(|OS1] .
· Background in multiple programming environments (e.g., C#, MATLAB, Python, Visual Basic, LabView).
· Experience with framegrabber / image acquisition protocols
· Strong candidate will demonstrate a software skillset includes Visual Studio, multi-threading, FFT image processing, GUI design, and CI (continuous integration).
· Working knowledge of source and versioning control (i.e., Subversion); working within ISO 9001 and ISO 13485 framework.
· Experience with integrating motion control systems and applications is preferred.
· Proficiency in using Microsoft Office Suite (Outlook, Word, Excel, PowerPoint, Visio)
· Excellent problem solving skills and troubleshooting skills.
· Excellent communication skills (verbal and written) and the ability to interact with multi-disciplinary teams.
· An energetic, proactive, and cooperative attitude is required, with high level interpersonal and communication skills.
· Must possess the following “soft skills”: Acts with Integrity, Attention to Detail, Clear Communicator, Prioritization/Multi-task, Self-Motivated, Team Player.
· Available for periodic travel to domestic and international customer and vendors. About 5%-10% travel time should be anticipated.
· U.S. Citizenship or qualified U.S. worker.
The physical requirements described here are representative of those that must be met by an employee to successfully perform the essential functions of this job. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.
While performing the duties of this job, the employee is occasionally required to stand; walk; sit; use of hands or fingers to handle, or feel objects, tools or controls and keyboarding; reach with hands and arms; climb stairs; balance; stoop, kneel, crouch or crawl; talk and hear.
The employee must occasionally lift and/or move up to 50 pounds.
[JV(|OS1]These are redundant with object-oriented programming