Senior Software Engineer (Embedded Linux & C++ )
Cubic
- Ashburn, VA
- Permanent
- Full-time
- Design, develop, and implement software components for our XD products embedded systems (Embedded Linux) using C/C++.
- Utilize deep knowledge and understanding of embedded systems, including hardware-software interactions, low-level programming, and real-time constraints.
- Contribute to defining and designing the system architecture, including software components, interfaces, and system integration.
- Write efficient, maintainable, and well-documented code, and perform debugging and troubleshooting for embedded systems.
- Work closely with cross-functional teams, including developers, and quality assurance teams, to ensure seamless integration and functionality of embedded software.
- Optimize software performance, memory utilization, and power consumption for embedded systems.
- Develop test plans, conduct unit testing, integration testing, and validation of software to ensure reliability and compliance with specifications.
- Create technical documentation, including design specifications, and guidelines for other team members.
- Adhere to industry standards, best practices, and coding guidelines relevant software development.
- Stay updated with the latest trends, technologies, and advancements in embedded systems, software development methodologies, and tools.
- Identify and resolve technical challenges, performance bottlenecks, and issues.
- Bachelor’s degree in Computer Science, Computer Engineering or related technical discipline plus 10 or more years of relevant experience or Master’s degree in a relevant field with 8+ years relevant work experience
- Must be able to obtained security clearance
- Comprehensive understanding of embedded systems, including hardware-software interactions, real-time constraints, and low-level programming concepts. Extensive experience in developing applications on Embedded Linux platforms, including kernel space and user space development.
- Understanding of Linux kernel architecture, device drivers, and kernel modules Proficiency in C/C++ programming languages, including strong knowledge of memory management, data structures, and multi-threading.
- Knowledge of embedded system security principles and best practices for securing embedded Linux application
- Understanding of embedded hardware components, microcontrollers, microprocessors, and their interfaces with software.
- Proficient in debugging tools and techniques for embedded systems to identify and resolve software-related issues.
- Familiarity with development tools such as debuggers, emulators, compilers, and IDEs commonly used in embedded systems development
- Understanding of network protocols (TCP/IP, UDP), network configuration, and interfacing embedded systems with network services.
- Ability to design, architect, and develop software solutions for embedded systems, considering constraints and system requirements.
- Proficiency in using version control systems like Git for managing and maintaining embedded software code.
- Competence in creating test plans, performing unit testing, integration testing, and validation of embedded software. Capability to generate comprehensive technical documentation including design documents, APIs, and user manuals.