Location: San Francisco, CA
Embedded Software/Firmware Engineering Lead
Software Engineering At Synapse
Synapse is hiring creative software engineers who have a passion for innovative products and technology, and want to direct that passion towards developing products in a fun, fast-paced, and highly collaborative team environment. Synapsters embrace the opportunity to work on a large variety of challenging projects, find joy in solving hard problems with passionate colleagues, and understand the value of cross-discipline collaboration to provide stellar client service.
Synapse engineers collaborate directly with clients as well as each other, so we are equally comfortable communicating as we are contemplating. We have the tenacity to see a product through from concept to mass production, and we don’t mind changing hats for the good of the project. Synapse engineers are always learning—and teaching: the opportunity to be a listener and a leader exists for engineers at every level. We are willing to understand the client’s objectives as well as its organizational environment, while delighting in exceeding the customer’s expectations. Synapse engineers approach each other with the eagerness to learn, a sense of humor, friendly attitude, and mutual respect that makes working at Synapse as enjoyable as it is rewarding.
Synapse aims to foster a creative work atmosphere with openness and trust, where engineers can work hard, learn and grow professionally, and maintain meaningful lives. Diversity of our ideas and experiences (technical and personal) enriches our teams, enabling us to push innovation further.
ABOUT SYNAPSE’S SAN FRANCISCO OFFICE
Synapse’s San Francisco site, which will accommodate the office’s planned growth in the years ahead, offers proximity to transit as well as the amenities of the SoMa neighborhood. Here, the growing group of about thirty Synapsters balances focus with fun. Wednesday Lunch provides a catered meal to the entire office, as well as a time for employees to celebrate successes and navigate shared challenges. Thursday Active is the office’s opportunity to lift their noses from the grindstone and take part in a range of activities—from bike trips and runs, to museum visits and sporting events, to barbecues and poker tournaments.
As a software engineer at Synapse, you will be a contributing member of multidisciplinary teams and will design and develop firmware for customized innovative hardware products. Working closely with electrical and mechanical engineers, project managers, and client teams, you will have an identifiable impact on the success of projects and end products. Strong client interaction skills, and an egoless approach to teamwork are highly valued. A passion for quality code, respect for your craft, your customers, and your team, and a demonstrated ability to deliver great work and still have time to play will help you feel right at home.
As a technical lead in the Connected Devices Ecosystem Team, you will work closely with clients and your team to bring new products to market. You will work through full stack development from hardware to software, from device firmware to cloud infrastructure to mobile application stack. Curiosity to learn and share your learnings, skills in problem solving, and leadership ability are essential.
- Work with a small, multi-disciplinary development team to design and implement embedded software solutions with mobile and/or cloud connectivity.
- Work as an individual engineer on small projects and guide small teams (1-2 engineers) in larger projects, collaborate closely with clients, colleagues and project managers to define requirements, develop software architecture, plan sprints, provide status updates, and clearly set work expectations.
- Participate in end-to-end solution architecture design from embedded device to connected ecosystem, including software stack and infrastructure tradeoff decisions.
- Orchestrate and lead established software development processes for quality deliverables including planning functional tests, implementing software unit tests, documenting design and architecture, and conducting/participating in engineering reviews.
- Work collaboratively and participate in brainstorms outside your area of expertise to construct innovative solutions from concept to prototype and production.
- Contribute expertise to and learn from the larger software group.
3+ years of software development experience with emphasis on connected embedded hardware and software systems. Comfortable with troubleshooting hardware and software, from device firmware to cloud infrastructure or mobile application stack.
The successful candidate will have demonstrable experiences from the following areas:
- Consultative and team lead experience
- Experience with consulting and guiding customers and/or projects through various phases of the product development lifecycle.
- Demonstrable experience as software team lead with proficiency in technical project management. Contribute to scoping and estimation, schedule management and status reporting, requirements management, documentation, design and code reviews, test and QA support for quality releases.
- Solid understanding and application of software engineering methodologies and best practices including estimation, design documentation, unit and system testing, and release and source control management (must be able to lead by example with good commit hygiene).
- Knowledge of open-source software licenses (e.g. GPL, MIT, BSD) and applications in software development.
- Creative, proactive, and detail-oriented individual with excellent written, spoken, and presentation skills for expressing technical ideas and initiatives.
- Host-side and Embedded Linux
- Experience with embedded Linux, Android (application and/or kernel level), and software architecture for applications-class processor systems (e.g. SnapDragon, Tegra).
- Experience building mobile applications and user experience design for iOS, Android (Swift/SwiftUI, Kotlin, QT, Lua). Portfolio of released applications on the App Store or the Android Market is a plus.
- Connected devices and cloud technology stacks
- Experience building connected device applications using cloud technology stacks (AWS, Azure, AWS IoT/AVS/Lambda, and languages Go, Python).
- Understanding of what it takes to deploying and managing connected product solutions to market
- Experience designing for security, device authentication and authorization, data privacy, device management.
- Low-level firmware development
- Experience with one or more RTOSs (e.g. FreeRTOS, Zephyr), and multithreaded programming.
- Experience developing and integrating radio stacks in connected products, eg. wireless technologies (e.g BLE, ZigBee, Bluetooth LE, WiFi, LoRa) and common communications protocols (UART, SPI, I2C, CAN, USB).
- 4-year degree in computer engineering, electrical engineering, computer science or equivalent experience.
- Experience with low-level development and debugging on microcontrollers and low-power embedded platforms (e.g. ARM Cortex-M, MSP430, RISC-V), the associated tool chains (e.g. GCC, Keil, IAR, CCS).
- Experience with custom board bring-up and hardware debugging.
- GitHub/GitLab project portfolio available.
We are an equal opportunity employer and value diversity and inclusion at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.