Software Engineer
Company Overview
Dynamic Structures and Materials, LLC (DSM) is a leading innovator in the defense and aerospace sectors, specializing in advanced engineering solutions for mission-critical applications. We deliver high-performance systems that meet the rigorous demands of government and commercial clients.
Position Summary
Develops and tests embedded software under the direction of more senior engineers. Work is primarily bare-metal firmware development, but is not exclusively so, and may include RTOS-based firmware and supporting PC-side software. DSM frequently develops piezoelectric and other specialized positioning systems controlled by embedded software, but the software engineer’s contribution will not be confined to these types of applications.
Essential Functions
Plan, write, test, and debug embedded software, primarily bare-metal firmware, in the C and C++ languages for microcontroller-based systems.
With direction, implement and modify device drivers and low-level interfaces for common peripherals such as GPIO, timers, ADC/DAC, PWM, UART, SPI, and I2C.
Bring up and test firmware on prototype and production hardware using laboratory instrumentation such as digital oscilloscopes, logic analyzers, multimeters, and in-circuit debuggers.
Support integration of embedded software with electrical hardware, motion control, and sensor feedback, and assist in troubleshooting hardware and software interactions.
Analyze test results by making Excel spreadsheets or more advanced techniques.
Use the DSM version control system for all software work, following established practices for committing, branching, and merging.
Participate in code reviews and design reviews, both receiving and providing constructive feedback.
With oversight, reliably document test results, design configurations, software interfaces, and similar data. Documentation may be in a logbook, spreadsheet, formal report, or other method.
Learn, support, and execute all quality objectives and deliverables as described in the DSM QMS system relating to assigned projects.
Contribute to proposals and reports by providing well-written summaries, as directed.
Assist more senior staff, as directed.
Work on assigned tasks diligently and in a safe manner that protects yourself and others.
Experience
1-3 years experience in software or embedded software engineering, at least as an intern or co-op engineer.
Understanding of good programming practices with application of them in a language such as C, C++ is required. Experience with VHDL or Verilog is a plus.
Exposure to microcontroller fundamentals, including memory, interrupts, timers, and peripheral registers.
Familiarity with common laboratory sensors and instrumentation such as encoders, LVDTs, multimeters, digital oscilloscopes, logic analyzers, and capacitive probes.
Ability to read schematics and component datasheets sufficiently to interface software with hardware is preferred.
Exposure to a version control system such as Git.
Skills
Internally motivated, “self starter” type personality.
Reliable, can be trusted to work consistently on tasks without close supervision.
Able to work on tasks individually or as part of a small team.
A “life-long learner” that is willing to develop new skills and proficiencies.
Methodical and patient approach to debugging and troubleshooting.
Clear written communication suitable for documentation, reports, and code comments.
Education
Completion of an ABET accredited Electrical, Computer, or Software Engineering program, or a Computer Science program, minimum of bachelor’s degree.
Pay: $80,000.00 - $90,000.00 per year
Benefits:
401(k)
401(k) matching
Dental insurance
Health insurance
Life insurance
Paid time off
Vision insurance
Application Question(s):
Please highlight 1-2 key accomplishments from your last position.
Education:
Bachelor's (Required)
Security clearance:
Secret (Preferred)
Work Location: In person