Job Description:
We seek an experienced Senior Software Engineer with a deep understanding of Linux environments and expertise in toolchain management building systems and developing productivity tools. This role requires proficiency in C and Python and strong handson experience with toolchains compilers and crosscompilation for multiple architectures. You will be responsible for building and maintaining a seamless development environment managing simulators and enhancing CI/CD pipelines.
Key Responsibilities:
- Linux Development Environment: Work extensively within Linux especially Ubuntu to manage and optimize the development environment.
- Programming Expertise: Lead development efforts using C and Python and provide mentorship on best practices. Experience with TypeScript and JavaScript is a plus.
- Developer Tools: Create and maintain onboarding scripts optimize developer workflows and develop custom extensions for VSCode to enhance productivity.
- Toolchain Management: Manage and optimize development environments using tools like WSL2 VSCode and custom extensions tailored to project needs.
- Build Systems: Implement and maintain build systems like CMake and Bazel. Lead distributed builds and use caching mechanisms and incremental linking to improve build efficiency.
- Compilers & Linkers: Evaluate and benchmark compilers like GCC and Clang. Work with linkers such as Mold Wild and Gold to ensure optimal performance.
- CrossCompilation & MultiArchitecture Support: Develop and maintain builds for multiple architectures ensuring seamless crosscompilation processes.
- Debugging: Provide advanced debugging and troubleshooting expertise including core dump analysis and debugging tools like GDB.
- CI/CD Pipelines: Configure manage and optimize CI/CD pipelines focusing on Azure Pipelines to streamline deployment and testing processes.
- Testing & Evaluation: Perform thorough testing and evaluation using structured frameworks and tools to ensure code quality and performance.
- Documentation & Training: Create comprehensive documentation and wiki content. Provided user support and conducted internal training sessions on toolchain best practices.
- Simulator Management: Build debug package and optimize simulators and related tools to ensure efficient performance in development environments.
- Infrastructure Management: Manage updates to Linux kernels USB Ethernet dongles and update agents to ensure stable and reliable development environments.
Required Skills and Experience:
- Linux Proficiency: Indepth experience with Linux development environments particularly Ubuntu.
- Programming Expertise: Extensive experience with C and Python. Knowledge of TypeScript and JavaScript is a plus.
- Developer Tools: Ability to create onboarding scripts and develop custom VSCode extensions to optimize workflows.
- Toolchain Management: Experience with WSL2 VSCode and related extensions for development environments.
- Build Systems: Proficiency with CMake Bazel distributed builds and caching mechanisms.
- Compilers & Linkers: Strong knowledge of GCC Clang Mold Wild and Gold for compiling and linking.
- CrossCompiling: Expertise in building for multiple architectures and managing crosscompilation processes.
- Debugging: Advanced debugging skills including core dump analysis and experience with tools like GDB.
- CI/CD Pipelines: Experience configuring and managing CI/CD pipelines particularly Azure Pipelines.
- Testing & Evaluation: Strong testing and evaluation skills using frameworks and tools to ensure software performance and quality.
- Documentation & Training: Excellent documentation skills and experience in user support and internal training.
- Simulator Management: Experience with building debugging and optimizing simulators and related tools.
- Infrastructure Management: Knowledge of Linux kernel management USB Ethernet dongles and update agents.
Skill Matrix:
Category | Skills/Characteristics |
Operating Systems | Linux Ubuntu |
Programming | C Python TypeScript (optional) JavaScript (optional) |
Virtualization | WSL2 Docker Containers |
Soft Skills | Exploratory mindset attention to detail problemsolving collaboration servant leadership and excellent communication skills. |
IDEs | VSCode custom extensions development |
Compilers | GCC Clang |
Debugging Tools | GDB core dump analysis |
Build Systems & Linkers | CMake Bazel distributed builds Mold Gold incremental linking cache mechanisms |
Networking | To be defined |
Kernel Management | Linux kernel management (distro kernels) |
Deployment & Automation | Update agents onboarding scripts |
Hardware Integration | USB Ethernet dongle support |
Qualifications:
- Bachelors or masters degree in computer science Software Engineering or a related field.
- 5 years of experience in software development with a focus on Linux environments.
- Demonstrated ability to manage complex build systems and toolchains.
- Strong communication and documentation skills.