Senior Software Engineer
Meril · Chennai, Tamil Nadu, India
Tailor my CV for this job — freePosition: Senior Software Engineer – Real-Time Systems (ROS)Location: ChennaiExperience: 5-10 YearsNotice Period: Max 30 daysWorking days: 6 days (Mon to Sat)Note: Candidate should have Strong experience in C++17 and above experience along with Product environment. Role OverviewWe are looking for a Senior Software Engineer specializing in Real-Time Systems to design and build high-performance software for a complex, hardware-integrated product.The ideal candidate is first and foremost a strong C++ software engineer with experience building reliable, multithreaded, performance-sensitive systems. You should be comfortable working close to hardware and developing software where latency, timing, concurrency and deterministic behavior matter.Experience with robotics, embedded systems, medical devices, or other hardware-integrated products is a bonus.Key ResponsibilitiesDesign, develop and maintain production-quality software in modern C++.Build high-performance, low-latency and real-time software components.Develop multithreaded and concurrent software with predictable behavior and performance.Design clean, modular, maintainable software architectures and APIs.Work on software components that interface with hardware, sensors, actuators and other system components.Analyze and improve application performance, latency, memory usage, and CPU utilization.Diagnose complex software issues involving concurrency, timing, resource management, and system performance.Develop robust error handling, fault management, logging and diagnostic capabilities.Write unit tests, integration tests and automated software validation.Participate in architecture, design, and code reviews.Collaborate with systems, hardware, controls, test and other software engineering teams.Contribute to engineering best practices around coding standards, testing, CI/CD, debugging and software quality.Required QualificationsBS/MS in Computer Science, Computer Engineering, Electrical Engineering or a related technical discipline or equivalent practical experience.5+ years of professional software development experience.Strong proficiency in modern C++, preferably C++17/20 or later.Strong understanding of:Object-oriented software designData structures and algorithmsMultithreading and concurrencyMemory management and resource ownershipTemplates and STLModern C++ design patterns and idiomsExperience developing software on Linux.Experience developing performance-sensitive, low-latency, or real-time software.Strong software debugging and problem-solving skills.Experience diagnosing race conditions, deadlocks, memory issues, and performance bottlenecks.Strong understanding of software testing and maintainable software architecture.Ability to work effectively across software and hardware-oriented engineering teams.Preferred QualificationsExperience in one or more of the following areas is a plus:Real-time operating systems or real-time LinuxPREEMPT_RT, QNX, or similar real-time environmentsHardware/software interfacesEmbedded software developmentRobotics or industrial automationMedical-device or surgical-robotics softwareSensors, actuators, or motor-control systemsInter-process communication and shared-memory systemsCAN, EtherCAT, Ethernet, SPI, I2C, UART, or similar communication interfacesPerformance profiling and system-level debuggingWhat We ValueWe are looking for engineers who have strong software engineering fundamentals and can build software that is reliable, understandable, maintainable and performant.Experience developing embedded software, robotics systems or other software that interacts with physical hardware is a strong bonus.