NationBuilder is looking for a software engineer with experience designing and implementing distributed software systems. We are building the future of NationBuilder’s core platform using distributed streaming platforms (Kafka/Kinesis), message queues (SQS/RabbitMQ), APIs (GraphQL/REST/gRPC), and last but not least, services (Ruby/NodeJS) running in the cloud (Lambda/Kubernetes). Experience with those technologies is preferred, but other relevant experience will not be discounted.
NationBuilder creates software for leaders of all kinds - political candidates, nonprofit organizations, anyone building a community of people to make something happen in the world. To learn more about NationBuilder, read about our mission and beliefs.
As a member of the Platform team, you might work on:
- Refactoring and re-architecting our software to enable multi-region deployment.
- Bringing thread safety to our core, monolithic Ruby on Rails application.
- Enhancing our automated system to provide SSL certificate for all of our customer’s websites using DNS Made Easy and Akamai APIs.
- Evaluating and prototyping with new technologies like GraphQL, gRPC, and Kafka to enable the rest of the engineering team to solve problems in new ways.
- Responding to incidents, performing service restoration tasks, and contributing to improving our software to reduce the frequency and impact of incidents.
- Expanding our existing Public API to make new integrations with our core application possible.
- Introducing Internal APIs that enable a resilient service-oriented architecture.
- Enhancing our Public APIs to allow 3rd party developers to build innovative applications.
- Extracting non-core functionality from our monolith into modularized components or services, leveraging the same APIs that we provide to our customers.
As a Software Engineer, your experience and qualities should match the following:
- A firm grasp on Computer Science fundamentals: algorithms, design patterns, data structures, database design, operating systems, and computer networking.
- Eager to learn best practices for writing web software “at scale”
- Enthusiasm to solve real problems for internal and external customers
- A quiet work environment conducive to remote pair-programming
As a Senior Software Engineer, your experience and qualities should include the above and:
- 5+ years working full-time in a software engineering role
- Experience developing production software in Ruby or Node.js
- Experience working on large scale applications with thousands or millions of concurrent users
- A passion for building working software and shipping iteratively
- Someone who enjoys rapid prototyping and experimentation
- Experience or a desire to work on a geographically distributed team
- Experience participating in an on-call rotation
As a Lead Software Engineer, your experience and qualities should include the above and:
- 8+ years working full-time in a software engineering role
- 1+ years leading sprint grooming/planning meetings and retrospectives
- Experience in a technical leadership role on a small team of software engineers
- A passion for mentorship and knowing when to delegate and when to collaborate
- Excellent “soft skills” to work directly with internal stakeholders
- An innate understanding that “In the beginner's mind there are many possibilities, but in the expert's there are few.” -Shunryu Suzuki
Candidates may be local to Los Angeles or remote (US only) and are expected to work overlapping with morning on the west coast, afternoon on the east coast.