Track ongoing developments in the Linux Kernel and identify features and functionality of interest to Arista for our products and for internal development needs
Develop and maintain EOS Kernel features and tests using C, C++ and Python, review and contribute to functional and design specifications
Build automated tests and test infrastructure to validate the features
Work with hardware engineers and vendors to qualify new Kernel dependent hardware components like CPUs and NICs for integration into Arista products
Work with the Kernel community to contribute features back to the mainline
Work with a team of Kernel engineers to integrate new versions of the Kernel for use in EOS and our internal development
Provide technical leadership across features, projects and tools
Work with Customer Support Engineers and customers to analyze, mitigate and fix problems in customer networks
Work with the System Test Engineers to analyze problems found in their tests and provide fixes for those problems
Mentor new and junior engineers to bring them up to speed in Arista’s software development environment
Requirements
BS Computer Science/Electrical Engineering/Computer Engineering + 8 years experience, or MS Computer Science/Electrical Engineering/Computer Engineering + 6 years experience, or Ph.D. in Computer Science/Electrical Engineering/Computer Engineering + 3 years experience or equivalent work experience
Expert knowledge of and extensive experience programming in C required
Knowledge of C++ and Python desirable
Significant hands-on experience troubleshooting issues, fixing bugs and developing features in the Linux kernel
Familiarity with Linux kernel architecture, design and implementation
Familiarity with the upstream Linux community’s patching process and procedures
Understanding of IP networking architecture, design and principles
Applied understanding of modern software engineering principles and practices
Strong problem solving and troubleshooting skills
Strong software design and implementation skills
Ability to work independently and in small teams
Ability to communicate articulately, and document your designs and implementations clearly, and concisely
Familiarity with the x86 and ARM CPU architectures