(Will consider more junior levels)
Job Qualifications
Certifications
None
Experience
Twenty (20) years experience as a SWE in programs and contracts of similar scope, type, and complexity is required. Bachelor's degree in Computer Science or related discipline from an accredited college or university is required. Four (4) years of additional SWE experience on projects with similar software processes may be substituted for a bachelor's degree.
In addition, the individual shall have six (6) years of experience coding in C, C++, or assembly and four (4) years of experience in software reverse engineering.
An active security clearance is required.
Job Description Summary
The CNO Software Engineer develops, maintains, and enhances/ports complex and diverse software capabilities based upon Product Group and other mission stakeholder needs.
Works as part of a small team, delivering iteratively, and tightly coordinated with operational test, and production experts, through the customer TRR/ORR process, resolving any defects identified.
Provides specific input to the software components of system design to include re-use/make trade-offs, tradecraft dependencies, foundational tool integration, and adherence to enterprise data flow and schema standards.
Capabilities (proficiency in one or more)
- Analyze user case/mission user stories to derive software design and performance requirements
- Debug/Port existing software and correct defects/update versions
- Write and/or review software and system documentation, and provide operator support where necessary
- Author, design and code new software or modify existing software to add new features and support execution
- Design or implement complex algorithms requiring adherence to strict timing, system resources, or interface constraints
- Recommend new technologies and processes for complex software projects
- Develop software solutions considering analyzing system performance analysis, users and system engineers’ collaboration; data flow & business processes, and fault resolution
- Develop or implement algorithms to meet or exceed system performance and functional standards in resource constrained environments
- Confer with System Engineers and Reverse Engineers to derive software requirements and to obtain information on project limitations and capabilities, performance requirements and interfaces
- Interface with complex/proprietary database/data repositories
- Identify software vulnerabilities, develop exploits to take advantage of identified vulnerabilities, and develop production quality software based on developed exploits
- Disassemble binaries using Ghidra, or a similar RE tool, and perform process level debugging using WinDbg, Softlce, gdb, or similar debugger
- Use a software integrated development environment (IDE) such as Visual Studio, Eclipse, or similar IDE
- Develop and execute unit tests
Skills and Tools (proficiency in one or more)
- Software Development (proficient in one or more of the following):
- Linux Application development in C/C++, Objective-C, ARM assembly (thumb, 32, 64), Python, Reverse Engineering via IDApro, Ghidra, etc.
- Technology/Engineering (proficient in one or more of the following):
- System Integration of internally developed server and UI components, COTS/GOTS applications
- AI assisted/leveraged Development
- Verification of system design, troubleshooting/debugging, thorough test methodology
- Familiarity with Wi-Fi/Wireless/RF and networking basics
Specific duties (to include but not limited to)
- Comply with organizations documented test and release process
- Examine and document ARM architecture and communicate behavior of objective systems to stakeholders and teammates
- Implement development in CI/CD methodology, utilizing GitLab for build/merges
- Analyze operational requirements and foundational platform integration requirements to design and derive capability functional and quality requirements Low-level debugging of software and system defects
- Design and implement software solutions capable of performing in resource restricted environments, typically in Objective C or C++ Write or review software and system documentation
- Assist with developing and executing test procedures for software components
- Clearly communicate in a team environment with fellow engineers, stakeholders, and customers