Swiftly is looking for a Senior Software Engineer to join a cross-functional product team enabling our transit agency customers to operate and manage on-vehicle hardware systems and devices. Your team’s work spans technology stacks connecting cloud-native services interfacing with Swiftly’s core data engine to a variety of embedded/IoT devices running onboard public transit buses, trains, and ferries. You'll work across this full vertical, writing software that runs on edge devices in the field, building the communication layers that connect those devices to the cloud, and developing the backend services that configure, control, and process data from these sources.
We encourage you to apply if you meet half or more of the requirements and are excited to learn about the rest. Above all else, we value candidates with a growth mindset, the aptitude to learn, and strong motivation to deliver impact to customers. If this is exciting to you, we'd love to talk!
Design, build, maintain and extend products, features, and functionality that solve real customer problems
Partner with Product, Design, and Engineering to discover and validate customer needs and technical approaches
Develop and extend integrations with onboard hardware devices such as headsign controllers, passenger counters, and fareboxes
Build and improve cloud-native backend services that manage device configuration, process telemetry data, and provide observability into fleet-wide device health
Implement and maintain robust mechanisms for over-the-air software deployment, configuration updates, and remote device management
Design testing strategies that account for the realities of hardware-in-the-loop systems including integration testing, simulated environments, and production monitoring
Maintain and improve our physical hardware lab if local to San Francisco, else contribute to solutions for remote development, testing, and debugging needs
Consistently deliver incremental value by anticipating dependencies, breaking down work, and regularly demoing progress
Communicate technical trade-offs, present system design proposals clearly, and document architectural decisions
Uplevel teammates through code reviews, pairing, and strong collaboration
Take ownership of your code and product domain, engaging in retrospectives and continuously improving how the team works
Motivated by mission-driven work and excited to improve public transit
5+ years of software engineering experience, with meaningful time spent working on embedded systems, IoT platforms, or edge computing
Proficiency with Linux including imaging, system administration, containerization, process management, networking, and security
Experience with communication protocols and paradigms of multiple varieties: serial interfaces (RS-232, J1708, CAN), network protocols (HTTP/REST, UDP v. TCP), and messaging patterns (MQTT, pub/sub, store-and-forward)
Familiarity with approaches to remote deployment and update mechanisms (eg. OTA updates, A/B partitioning, configuration management, edge container orchestration)
Interest in being hands on with code and devices, whether your comfort level is plugging in an ethernet cable or crimping your own
A testing and quality mindset, with strong opinions on system validation, automated testing, observability, and monitoring
Comfort applying modern AI tools to accelerate development and improve quality
Proficiency with languages and technologies in our stack: Python, Java, Javascript/Typescript, MQTT, SQL databases
Experience with cloud-native architectures and services (AWS preferred)
Strong product mindset — you use technology pragmatically to solve meaningful customer problems
Continuous learner who embraces emerging technologies and helps others grow
Collaborative team player who contributes wherever needed to support team goals
Open to feedback (a core Swiftly value!), humble in technical debate, and committed to blameless learning and improvement