
BIOS Software Engineer
Role summary
Arista is seeking a BIOS Software Engineer with a strong background in C programming and experience in CPU firmware, BIOS, and boot loader environments. The role involves designing, developing, and maintaining low-level CPU software, bringing up new CPU boards, and troubleshooting complex issues. You will also develop automated tests, collaborate with hardware engineers and vendors, and contribute to open-source communities. The position requires strong software engineering principles, problem-solving skills, and the ability to work independently and in teams. Familiarity with x86 and ARM architectures is essential. This role offers the opportunity to own projects from definition to deployment and provide technical leadership.
### Who you are
- BS Computer Science/Electrical Engineering/Computer Engineering + 3 years experience, or MS Computer Science/Electrical Engineering/Computer Engineering + 2 years experience, or Ph.D. in Computer Science/Electrical Engineering/Computer Engineering + 1 years experience, or equivalent work experience
- Expert knowledge of and extensive experience programming in C required. Knowledge of C++ and Python is desirable
- Experience designing and developing software in CPU firmware, BIOS and boot loader environments
- Experience bringing up new CPU boards
- Significant hands-on experience diagnosing problems, troubleshooting issues, and fixing bugs in low-level CPU firmware, BIOS and boot loader software
- Familiarity with Linux kernel architecture, design and implementation desirable
- Understanding of IP networking architecture, design and principles desirable
- 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 and experience working with the x86 and ARM CPU architectures
### What the job involves
- Arista Software Engineering roles demand a strong and broad software engineering background
- While the primary focus area for this role is firmware, BIOS and booting software, your work will cover all aspects of software development spanning the design and development of new features, debugging problems and fine tuning code for reliability and performance
- You will own your projects from definition to deployment and customer interactions, and you will be responsible for the quality of everything you deliver
- Design, develop, integrate and maintain the low-level CPU software in Arista products
- Develop automated tests using C, C++ and Python to validate your features
- Work with hardware engineers and vendors to qualify new CPUs and related components for use in Arista products
- Track ongoing developments in the Linux Kernel and identify features and functionality of interest to Arista for our products and for internal development needs
- Work with upstream open source BIOS communities to contribute features back to the mainline
- Review and contribute to functional and design specifications written by other engineers
- 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
- Provide technical leadership across features, projects and tools
- Mentor new and junior engineers to bring them up to speed in Arista’s software development environment