Position Overview
We are seeking a highly skilled and experienced Senior Software Engineer to join our dynamic team. The ideal candidate will have a strong background in software development, with expertise in C/C++, Python, and other relevant programming languages. This role requires a deep understanding of CPU and GPU architectures, as well as experience with Linux system programming, GPU programming with CUDA/HIP, and performance optimization using AVX and SIMD. The successful candidate will also have experience with Docker and container orchestration tools.
Key Responsibilities
- Software Development: Design, develop, and maintain high-performance software solutions using C/C++, Python, and other relevant languages.
- Linux System Programming: Develop and optimize software for Linux environments, ensuring robust and efficient system performance.
- GPU Programming: Utilize CUDA/HIP for GPU programming to enhance computational performance.
- Performance Optimization: Implement AVX and SIMD programming techniques to optimize software performance.
- Architecture Understanding: Apply in-depth knowledge of CPU and GPU architectures to develop efficient software solutions.
- Containerization: Use Docker and container orchestration tools to manage and deploy applications.
- Profiling and Tuning: Employ profiling tools and performance tuning techniques to identify and resolve performance bottlenecks.
- Vision Algorithms: Develop and optimize vision algorithms to meet project requirements.
- Codebase Management: Work with large codebases, ensuring code quality and maintainability.
- Open-Source Contributions: Contribute to open-source projects and maintain a portfolio on GitHub.
- Collaboration: Work closely with cross-functional teams to deliver high-quality software solutions.
- Problem-Solving: Utilize excellent problem-solving skills to address complex technical challenges.
- Communication: Communicate effectively with team members and stakeholders to ensure project success.
- Optional AI/ ML: Experience applying AI/ML techniques in production systems is a strong plus and can accelerate your growth into a senior AI-focused role, but only for candidates with exceptional SDLC and core software engineering skills.
Qualifications: Must have
- Education: Bachelor's or Master's degree in Computer Science, Engineering, or a related field.
- Experience: 4+ years of professional experience in software development.
- Programming Skills: Strong proficiency in C/C++, Python, and other relevant programming languages.
- Linux System Programming: Proven experience with Linux system programming.
- Architectural Knowledge: Solid understanding of CPU and GPU architectures.
- Containerization: Experience with Docker and container orchestration tools.
- GPU Programming: In-depth knowledge of GPU programming with CUDA/HIP.
- Advanced C++ Skills: Advanced C++ skills and experience working with large codebases.
- Engineering Practices: Follow strong SDLC practices including design reviews, code reviews, automated testing, CI/CD, and documentation
- Problem-Solving: Excellent problem-solving skills and attention to detail.
- Communication: Strong communication and teamwork abilities.
Good to have
- Performance Optimization: Expertise in AVX and SIMD programming for performance optimization.
- Experience with Parallel Programming/HPC - OpenMP, MPI
- Profiling and Tuning: Familiarity with profiling tools and performance tuning techniques.
- Vision Algorithms: Experience with vision algorithms and optimizations.
- Open-Source Contributions: Contributions to open-source projects and a portfolio on GitHub.
- Machine Learning: Exposure to machine learning concepts and applications is a plus.