Bare Metal Development – Firmware / ARM Board / Bus protocol / Unix a plus and unix drivers (No Linux - not transferable skill set)
14-15 people – 4 or 5 doing this
End to end (small shop) cradle to grave development. If they have been in a larger organization where they didn't do end to end and were focused on a specific function, ask about other experience, as they must have end to end production.
Focus – Fitbit Technologies
End consumer device
Start-up type vibe – Across from Qualcomm Stadium - You need to find someone that is willing to work in a smaller environment. The team is 3 to 4 developers. There are times you will need to "role up your sleeves" and pitch in. If they have previous startup experience that is actually a plus.
This is not a Architect position, so don't send architects. This is a 100% hands on.
C2C ok, however no H1B. Potential to go perm.
The device they will be working on is call "Automatic", a connected car assistant. https://automatic.com/
Senior Firmware Engineer
Smartphones and the internet have transformed our day-to-day lives, but our cars have been left behind. At Automatic Labs, we're changing that; we want to help people drive smarter and bring the power of connectivity to every car. Automatic is a team of smart and talented professionals working to transform people's relationships with both their cars and driving. We're low on ego and honor individuals who go above and beyond to make a difference in the product and in the lives of their teammates.
The position of Senior Firmware Engineer works within a team of hardware and software engineers, developing software that runs on our four generations of OBD-II hardware devices. At Automatic, firmware engineers work on a wide range of areas from low-level hardware bring-up and debug through to connectivity stacks (cellular, WiFi, BLE) and embedded application code, implementing the magic that makes our product.
Duties and Responsibilities:
- Develop firmware that runs on a variety of embedded systems including our OBD-II hardware adapters.
- Assist with hardware debugging including bus protocol debugging (I2C, SPI, UART and friends) and power management.
- Develop and improve build systems, automated test and internal tools used to manage large scale firmware deployments.
- Develop and triage manufacturing tests in conjunction with our partners in China and Taiwan.
- Specify, design and implement new firmware features for our core consumer experience.
- Work with QA to implement test plans for validating new features or tricky code changes.
- Interface with cross functional teams from design, through to product and engineering.
- 5-10 years developing firmware for embedded devices.
- Bachelor's Degree in Computer Science, Electronic Engineering or equivalent experience required. MSc or equivalent relevant experience is preferred.
- Highly proficient in C and good understanding of assembly language.
- Strong experience developing on embedded systems and demonstrated shipping of firmware onto production devices.
Requirements and General Skills:
- Team player with excellent written and oral communication skills.
- An understanding of software and hardware development processes.
- Ability to handle multiple tasks and projects simultaneously in an organized and timely manner.
- Self-starter with creative problem-solving skills and hunger to learn.
- Experience with Linux as a developer or a user.
- Ability to travel to manufacturing locations as applicable.
- Must have legal right to work in the U.S.
- Expertise in system software design concepts.
- Familiar with Python and scripting languages (especially make, bash).
- Comfortable using a variety of oscilloscopes, JTAG/SWD debuggers, multi-meters and logic analyzers.
- A high-level of personal computer proficiency is required, including experience and familiarity with Mac or Windows.
- Familiarity with any of the following technologies: TCP/IP, Bluetooth, Wi-Fi, cryptographic security concepts and standards (TLS, RSA, AES, SHA, X.509, authentication, encryption, certificate provisioning, key distribution, ECC).
- Linux programming experience.
- Experience working with microcontrollers at the register level, configuring program linkage and reading linker outputs.