Senior Software Engineer – Embedded Systems (C/C++)-Onsite
Job Summary
We are seeking a Senior Software Developer to design and implement robust embedded software solutions in C and C++ within Unix and Linux environments. This role requires strong version control discipline using Git and Bitbucket, along with a solid grounding in software design patterns to build scalable, maintainable systems. The ideal candidate will collaborate with cross-functional teams to deliver device-oriented solutions as well as features supporting billing and revenue management.
Responsibilities
- Design and implement high-quality embedded software components in C and C++ that meet functional requirements, adhere to organizational quality standards, and run efficiently on target hardware platforms.
- Develop and maintain applications and services in Unix and Linux environments, writing optimized code and shell scripts to improve performance, reliability, and operational efficiency for production systems.
- Manage source code using Git and Bitbucket, including creating branches, managing pull requests, and maintaining clean commit histories to ensure traceability and secure collaboration across teams.
- Apply appropriate design patterns in architectural decisions, structuring modules and interfaces for scalability, reusability, and long-term maintainability of complex embedded solutions.
- Debug and troubleshoot embedded system issues using appropriate tools and logs, identifying root causes and implementing sustainable fixes that improve system stability and reduce recurring defects.
- Partner with cross-functional stakeholders in product, engineering, testing, and operations to clarify requirements, refine technical specifications, and deliver features aligned with business objectives.
- Optimize existing codebases through refactoring, improved resource utilization, and reduced latency to enhance device performance and system efficiency.
- Contribute to documentation of system designs, module interfaces, and operational procedures to enable efficient onboarding, ongoing support, and long-term knowledge continuity.
- Support integration of device-focused solutions with broader enterprise systems by designing interfaces and data flows that enable reliable communication and a seamless user experience.
- Collaborate with product and business teams to understand billing and revenue management requirements, translating them into clear technical tasks that support accurate and efficient financial processes.
- Maintain day-shift availability for collaboration meetings and status updates within the hybrid work model, ensuring regular alignment with local and distributed team members.
Qualifications
- Demonstrated experience in embedded systems development using C and C++, with a solid understanding of memory management, concurrency, and hardware-software interaction.
- Proficiency in Unix and Linux platforms, including command-line tools, process management, and performance monitoring for application and system troubleshooting.
- Hands-on expertise with Git and Bitbucket, including branching strategies, merge conflict resolution, and repository hygiene to support collaborative workflows.
- Prominent ability to apply software design patterns in real-world projects, structuring components that are modular, testable, and resilient to change across embedded and back-end systems.
- Practical experience in device-oriented domains, such as firmware, communication interfaces, or system-level integration supporting secure and reliable device operations.
- Understanding of billing and revenue management concepts is a plus, supporting contributions to solutions involving rating, invoicing, and reporting processes.
- Strong analytical and problem-solving skills, with the ability to independently investigate complex technical issues and propose well-reasoned solutions aligned with project goals.
About Cognizant’s IoT Practice
Intelligent, IoT-enabled products will soon result in the proliferation of data and disrupt virtually all industries. To be successful, both large and small companies must leverage IoT capabilities by designing modern products that fundamentally connect people with processes. Within Cognizant IOT, we engineer industry-aligned, IoT-enabled products that merge industry needs with human drivers. Our intelligent products will revolutionize experiences and result in exciting, transformative outcomes. Without human-centered thinking, connected products are just standalone things—but with it, our modern connected products facilitate a unified way of life enjoyed by all.