San Mateo, CA
Lead Software Engineer, Platform Development (Flexible Location)
As a software engineer on the Platform Development team, you'll be working with a team that develops infrastructure that supports SiFive’s engineering and product development. The core of this infrastructure is the build system, which ties together many of SiFive’s diverse technologies. Our end-user product is a complete package for custom hardware designs — including hardware, software, verification, and even documentation. Because each component is highly configurable, it is crucial that this build system coordinates data between the many different functional areas.
The Platform Development team is currently working on building the next generation of SiFive’s build system. We’re taking the best ideas from caching, sandboxing, task scheduling, and remote execution and developing a novel platform that can support our dynamic hardware generator technology. By applying library-based design techniques, we’re building a collection of reusable components that can be scaled up and down according to use cases today and tomorrow!
Many of our challenges come from our novel hardware generators and our technology spanning both hardware and software. We’re looking for candidates who are excited to tackle these unique challenges with us!
LOCATION: The right candidate for this role can work remotely from anywhere in the US, or out of our offices in the Bay Area, CA or Austin, TX.
- Designing and developing components of the build infrastructure that are repeatable, reproducible, and performant.
- Applying knowledge of operating systems and distributed systems to make efficient use of system APIs and resources.
- Decomposing the infrastructure into different subcomponents and layers so that each problem can be solved once and solved well.
- Working with hardware and software engineering teams to build tools and infrastructure that empower them.
- Discovering, defining, and communicating design patterns and conventions for build rules in the form of frameworks, tools, and documentation.
- Curating build flows and pipelines that serve as exemplary models for others to base their workflows on.
- Proven experience leading software projects and/or directly supporting large software systems.
- Strong sense of good software, API, and library design.
- Proficiency with a systems programming languages (e.g. C/C++/D/Swift/Rust).
- Comfortable with functional programming concepts (e.g. map/fold/reduce, option types, immutability).
- Proficiency with Linux and Linux-based systems. While you don’t need to be an expert, you should be comfortable with command lines, package management, the process model, and file systems.
- Good interpersonal skills, and especially an ability to communicate software concepts to engineers of various disciplines.
- A willingness to work in a large legacy codebase, with an eye for improving it or replacing it.
- Excited to learn a potentially unfamiliar industry (hardware) and to apply ideas from both the hardware and software domains.
- Strong code review culture.
SiFive is proud to be an equal employment opportunity workplace. We offer a competitive compensation package that includes flexible paid time off; health, vision and dental benefits; 401(k) plan; employee stock option program, and much more.
We will ensure that individuals with disabilities are provided reasonable accommodation to participate in the job application or interview process, to perform essential job functions, and to receive other benefits and privileges of employment. Please contact us to request accommodation.
If you yearn to be challenged and wish to work in an environment where the boundaries of your creativity and skills will be tested, then SiFive is the place for you.
Notice to Staffing Agencies / External Recruiters:
Thank you for your interest in SiFive Inc. Please note that SiFive does not accept unsolicited resumes from external agencies unless contracted to fill a specific position. Agencies are hereby specifically directed NOT to contact SiFive employees directly in an attempt to present candidates – all applications must go through SiFive's internal recruiting team. Any third-party resume forwarded by agencies/external recruiters to a SiFive mailing address, fax machine or email address, directly to SiFive employees, or to SiFive's resume database will be considered property of SiFive Inc and treated as a direct application. This exchange does not constitute an agreement between SiFive and the agency/external recruiter. SiFive reserves the right to contact the candidate directly. Employment agencies/external recruiters will receive no compensation from SiFive or its companies.