A Senior Software Engineer is a professional with an advanced degree and significant experience with software and/or firmware design. In this role, the individual will work directly with engineering staff, production staff and customers to design, develop, and validate various special purpose communication systems supporting the U.S. military. This individual will perform detailed software and/or firmware design/analysis, work closely with project leads to coordinate prototyping activities, and be responsible for the assigned software and system design from concept through production phase. The individual must have a good working and analytical knowledge of POSIX and Win32 multithreaded design, device driver design and programming in Linux and Windows, and real-time programming in VxWorks and other embedded environments. They must possess in-depth knowledge of the workings of real-time operating systems, demonstrated C/C++ coding experience, and object-oriented design skills. This individual will be responsible for their own generated project plans and running project teams when projects become large or are beyond their skill set, experience, or abilities.
- Design and validate complex software projects utilizing skills in C, C++, and operating systems (such as VxWorks, Linux, Windows, FreeBSD, HP-UX etc.)
- Write detailed requirement documentation based on high level requirements.
- Perform detailed software and firmware sub-system analysis, simulation, and design work as required.
- Work with software/firmware system concepts and detailed software/firmware design to properly determine the necessary design tradeoffs.
- Participate in system test planning and system test procedure generation for first articles.
- Provide support to the design, development, and verification testing of real-time and GUI software designs.
- Directly support customers with questions and issues on products.
- Produce regression tests for software designs.
- Develop production test software for board level and system products.
- Generate user documentation (such as user manuals and user guides).
- Participate in all phases of design activities.
- Generate all necessary design documentation in a timely fashion.
- Oversee activities for sustaining and technical support projects.
- Work closely and share innovative ideas with engineering, sales, and manufacturing.
- B.S. in Software Engineering (or equivalent) with a minimum 10 years of experience in hands-on design, implementation, and testing of software.
- Demonstrated strength with C/C++ programming.
- Demonstrated experience with object oriented design principles.
- Experience with POSIX and/or Win32 multithreaded software applications.
- Experience with GUI application design.
- Experience with creating applications to operate in real-time operating systems.
- Working knowledge of hardware device communication techniques.
- Device driver programming experience in Linux and Windows.
- Experience with digital busses (PCI, PCIe, USB, VME etc.), chipsets and architecture concepts.
- Knowledge with interfacing to embedded computing systems.
- Demonstrated ability to solve practical problems and with a variety of variables in situations where only limited standardization exists.
- Working knowledge of top-down design capabilities.
- Demonstrated ability to work within or lead a small technical development team.
- The ability to work with and without direct supervision.
- The ability to interpret a variety of instructions furnished in written, oral, diagrammatic, etc. forms, and move projects to completion.
- Understanding of software industry project lines and industry roadmaps.
- Computer literate.
- Excellent communication and interpersonal skills.
- Windows WHQL certification experience.
- Experience with NTDS (MIL-STD-1397), ATDS (MIL-STD-188-203-1), and 1553 (MIL-STD-1553) communication protocols.
- Experience programming PCI/VME chipsets such as the PLX9056 and the Universe II.
- Working knowledge of design and implementation of state machines.
- Working knowledge of design and implementation of microprocessor or DSP embedded computing systems.
- Experience with Python and Wi-Fi protocols.
- Database programming experience with SQL.
- Experience with project planning software and budgeting.
- Experience utilizing electronic military equipment and systems.
- Military background is a plus.
The individual must have the ability to read, write, and understand spoken English; the ability to read and understand product requirements and performance specifications; and the ability to read and understand schematics, assembly drawings, parts lists, test procedures, engineering drawings, technical procedures, and governmental regulations. The individual must have strong communication skills and the ability to interface directly with customers.
The individual may be required to obtain a U.S. Government Security Clearance.
The physical demands 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, and sit. The employee must occasionally lift and/or move up to 50 pounds. Specific vision abilities required by this job include color vision and the ability to adjust focus.
The work environment characteristics described here are representative of those an employee encounters while performing the essential functions of this job. Reasonable accommodations may be made to enable individuals to perform the essential functions. The noise level in the work environment is generally quiet, but may be moderate when various test fixtures are operating.