Bangalore South, Karnataka
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
1. Provide Technical Guidance And Solutions By Defining, Advocating, And Implementing Best Practices And Coding Standards In Embedded Networking And C++ Development, Ensuring High-Quality Outputs From The Team.
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
Other Requirements
1. Optional But Valuable Certifications: Certified Embedded Systems Engineer (Cese), Linux Professional Institute Certification (Lpic).
#body.unify div.unify-button-container .unify-apply-now: focus, #body.unify div.unify-button-container .unify-apply-#body.unify div.unify-button-container .unify-apply-now: focus, #body.unify div.unify-button-container .unify-apply-