Job Description
You’ll make an impact by:
- Software Developer with good knowledge on C++
- Design, develop, and maintain software components for embedded systems and system-level applications.
- Architect software solutions with a focus on scalability, performance, and maintainability.
- Implement and maintain software modules in C and C++, following standard processes in coding, testing, and debugging.
- Use object-oriented programming principles to design robust and reusable software components.
- Leverage Standard Template Library (STL) and modern C++ features such as smart pointers to optimize memory management and system performance.
- Implement concurrency mechanisms to ensure safe and efficient multithreading in software applications.
- Participate in code reviews and provide constructive feedback to team members.
- Collaborate with multi-functional teams, including hardware engineers and quality assurance, to deliver high-quality products.
- Provide technical leadership and mentorship to junior engineers, helping them grow their skills and knowledge.
- Solve complex system-level issues and perform root cause analysis.
Use your skills to move the world forward!
- Bachelor’s or Master in computer science, Electrical Engineering, or a related field.
- 5+ years of professional experience in software development, with a strong emphasis on C++ and embedded systems.
- Proficient in C and C++, with a solid understanding of object-oriented programming (OOP) concepts.
- Experience with Linux system programming.
- Knowledge of smart pointers, STL, and modern C++ features (C++11 and later).
- Strong understanding of concurrency, including threads, synchronization, and inter-process communication.
- Experience with software design patterns, architecture, and principles.
- Excellent problem-solving skills and ability to solve complex software issues.
- Ability to work independently and in a team-oriented environment.
- Preferred Skills:
- Experience with additional RTOS environments beyond VxWorks.
- Familiarity with Linux kernel internals and device driver development.
- Knowledge of networking protocols and embedded communication standards.
- Exposure to software development methodologies such as Agile or Scrum.
- Experience with software development tools like GDB, Valgrind, and performance profilers.