The individual will be primarily responsible for development, integration, and test activities in support of an embedded systems software development program. The individual would create, plan, and perform a variety of software analysis, design, development, code, documentation, integration, test, and product assurance tasks. Responsibilities would center on the development and/or integration and test activities to support new capabilities as well as the maintenance of existing software. Work would support updates to engineering design models and software to enhance, implement and support project/system functionality for the assigned technical effort. The individual would also ensure that technical outcomes are consistent with established engineering principles and practices and that customer and company technical, system, performance, and quality requirements are met.
Responsibilities:
- Performs engineering design, development, analysis, experimentation, test and/or product assurance tasks for assigned portions of a project
- Ensures tasks meet cost, quality, schedule, and performance requirements
- Applies engineering design and/or analytical theory, principles, techniques, and practices to a technical project
- Develops and writes technical documentation, revises existing documentation, and provides input to technical papers or presentations
- Performs technical analysis, testing, calculations, and evaluation of results using specialized equipment and/or by computer programs
- Analyzes and interprets design specifications, drawings, documentation, models, and/or test results to ensure technical designs comply with applicable engineering standards, military specifications and product requirements
- Develops and maintains effective relationships with customers to solve technical problems and implement solutions
- Maintains a safe work environment and ensures compliance with safety policies and rules.
Skills and Experience Required:
- B.S. degree in Software Engineering, Computer Science, Electrical Engineering or relevant technical discipline; or an equivalent combination of education and experience with a Minimum of 6 years in a position as a C++ developer.
- Knowledge of fundamental software engineering concepts, practices, and procedures.
- Understanding and working knowledge of Software Requirement, Design, Development, & Testing Principles
- Familiarity with C++ compilers, software development support tools and associated environments
- Experience with Software configuration management tools (i.e. Git, SVN, etc.) • Experience with Software issues tracking software (i.e. JIRA, Bitbucket, Atlassian, etc.)
- C++ design and coding skills
- Strong communication skills, both verbal and written
- Ability to solve technical design and development problems
- Ability to work independently and as part of a team
- Ability to use and apply fundamental concepts, practices, and procedures relevant to software development
- Familiarity with the Linux Operating System
- Familiarity with Source Configuration Management tools such as Git or Subversion
- Ability to develop and maintain effective relationships with customers to solve technical problems.
Skills and Experience Preferred:
- Development experience using C++
- Experience using Visual Studio and Visual Studio Unit Test Framework
- Experience with Linux and embedded operating systems
- Experience with low-level Analog/Digital IO
- Familiarity with vehicle/computing communication bus technology (Gigabit Ethernet, RS-232) and their protocols
- Troubleshooting experience involving Ethernet using Wireshark
- Familiarity with embedded systems
- GUI (Qt) Development
- Familiarity with military embedded systems software development
- Familiarity with commercial design standards
- Strong coding skills in C++
- Use of UML modeling tools such as Enterprise Architect or Magic Draw is a plus
- Competent with scripting languages (i.e. Bash, Python)
- Use of QT for GUI Development.