Job Summary
- Develop and maintain middle-layer and application software for Linux-based embedded solutions
- Design and implement object-oriented C++ applications adhering to defined architecture and design standards
- Perform software design and component-level implementation using appropriate design patterns and principles
- Create and maintain UML artifacts (Class, Sequence, Use Case, Dependency, and Component diagrams)
- Develop applications on Linux platforms, including usage of system calls, shell scripting, and IPC mechanisms such as D-Bus
- Implement multi-threaded applications with proper synchronization and concurrency handling
- Participate in requirements analysis and requirement engineering activities
- Develop and execute unit tests and support static code analysis to ensure code quality
- Debug, analyze, and resolve software issues using standard Linux debugging and analysis tools
- Collaborate within Agile development teams and actively participate in sprint ceremonies
- Integrate code into CI/CD pipelines and follow defined development and quality processes
Key Responsibilities
2. Develop And Mentor Team Members To Enhance Their Technical Capabilities In Linux And Embedded Systems, Promoting Increased Productivity And Skill Development.
3. Ensure Process Compliance In The Assigned Module By Participating In Technical Discussions, Feasibility Studies, And Reviews, Focusing On Best Practices, Technical Risks, And Breakdown Of Components For Accurate Estimations.
4. Prepare And Submit Status Reports To Minimize Exposure And Risks In The Project, Facilitating The Closure Of Escalations And Maintaining Effective Communication With Stakeholders.
Skill Requirements
- Strong proficiency in Modern C++ programming (C++11 and above)
- Solid experience in software design, including:
- Design patterns and design principles
- Architecture patterns
- UML modeling and design tools
- Hands-on development experience on Linux platforms
- Experience with Linux IPC mechanisms (e.g., D-Bus) and system calls
- Strong experience in multi-threaded programming and synchronization mechanisms
- Experience in requirement engineering
- Testing experience including:
- Unit testing using GTest / GMock
- Static code analysis
- Proficiency with software development tools, including:
- Debugging and analysis tools: gdb, strace, valgrind
- Build tools: make, cmake, conan
- Version control: git
- CI/CD tools: Jenkins or Bamboo
- Experience working in an Agile software development environment