About the Role
Dear Aspirant!
We empower our people to stay resilient and relevant in a constantly changing world. We’re looking for people who are always searching for creative ways to grow and learn. People who want to make a real impact, now and in the future. Does that sound like you? Then it seems like you’d make a great addition to our vibrant international team.
What You'll Do
You’ll Make An Impact By:
- Designing, developing, and maintaining high-performance software components on Linux platforms.
- Architecting scalable and maintainable software solutions with a focus on reliability, performance, and modularity.
- Implementing and optimizing RUST 1.x and C++ modules using modern C++ (C++11/14/17/20), STL, and advanced language features.
- Applying object-oriented design principles to create robust, reusable, and testable software components.
- Developing and debugging multi-threaded and concurrent applications using POSIX threads, synchronization primitives, and inter-process communication (IPC) mechanisms.
- Working with Linux system APIs for process management, memory management, file I/O, and networking.
- Analyzing and troubleshooting complex system-level issues, including performance bottlenecks, memory leaks, and race conditions.
- Participating in code reviews, ensuring adherence to best practices and high code quality.
- Collaborating with cross-functional teams (hardware, QA, DevOps) to deliver integrated solutions.
- Mentoring and guiding junior engineers, fostering technical growth and knowledge sharing.
- Contributing to continuous improvement of development processes, tools, and methodologies.
Who You Are
To be successful in this role, you should have:
- A Bachelor’s degree in computer science, Electrical Engineering, or related field.
- 5 to 8 years of professional experience in software development, with a strong focus on C++, RUST and Linux system programming.
- Expertise in RUST and C++ (including OOP, STL, smart pointers, RAII, and modern language features).
- Strong Linux system programming skills: experience with system calls, process/thread management, memory management, and IPC.
- Solid understanding of OS concepts: scheduling, virtual memory, synchronization, and resource management.
- Experience with software design patterns and architectural best practices.
- Proficiency in debugging and profiling tools (e.g., GDB, Valgrind, perf, strace).
- Excellent analytical and problem-solving skills.
- Strong communication skills and ability to work both independently and collaboratively.
Bonus Points
Preferred Skills:
- Experience with Linux kernel internals or device driver development.
- Familiarity with additional RTOS environments (e.g., VxWorks, QNX, FreeRTOS).
- Knowledge of networking protocols (TCP/IP, UDP, sockets) and embedded communication standards.
- Exposure to Agile/Scrum methodologies and CI/CD pipelines.
- Experience with cross-compilation, build systems (CMake), and package management (Conan, Yocto, etc.).
Compensation
This role is based in Bangalore, where you’ll get the chance to work with teams impacting entire cities, countries - and the shape of things to come.
Benefits
We value your unique identity and perspective and are fully committed to providing equitable opportunities and building a workplace that reflects the diversity of society. Come bring your authentic self and create a better tomorrow with us.
We’re Siemens. A collection of over 312,000 minds building the future, one day at a time in over 200 countries. We're dedicated to equality, and we encourage applications that reflect the diversity of the communities we work in. All employment decisions at Siemens are based on qualifications, merit and business need. Bring your curiosity and imagination and help us shape tomorrow.
Find out more about Siemens careers at: www.siemens.com/careers
Find out more about the Digital world of Siemens here: www.siemens.com/careers/digitalminds #STS
Requirements
C++ expertise
You should have strong expertise in C++ including modern language features.
Rust programming
Proficiency in Rust is essential for this role.
Linux system programming
Experience with Linux system programming is required.
Object-oriented design
You must apply object-oriented design principles effectively.
Debugging skills
Proficiency in debugging and profiling tools is necessary.
Nice to Have
Experience with Linux kernel internals or device driver development is a plus.
Knowledge of networking protocols and embedded communication standards is beneficial.
Exposure to Agile/Scrum methodologies and CI/CD pipelines is preferred.
Benefits
Equitable opportunities
We are committed to providing equitable opportunities.
Diversity and inclusion
We encourage applications that reflect the diversity of the communities we work in.