Principal Software Engineer, DevTools
Toast is a rapidly growing startup building the first integrated restaurant management software platform providing an all-in-one system for handling orders, managing the kitchen, and providing analytics on the health of the business. We are one of the fastest-growing technology companies in the U.S., and ranked third on Deloitte’s Technology Fast 500™ in November 2017. We move quickly and have lots of opportunities for growth and learning. If you’re passionate about your work and want to be in a fun and growing industry, join us!
As Toast grows, our developers are responsible for delivering and operating our product, from writing code to ensuring it works 24/7 for our customers. To support them, we are investing heavily in our tooling and infrastructure. Our internal tooling must allow all engineers to deploy, configure and monitor our production artifacts. It must be fast and allow engineers control, while being safe and carefully managing risk for our customer base.
We are looking for a developer who wants to play a significant role in evolving our tools as the company scales rapidly. You are someone who has operated as an engineer at a scaling SaaS company, so you understand the requirements for a build and deploy system. You understand the importance of building out abstractions to hide the complexity of build and cloud environments from developers, and how to structure abstractions that can compose easily. You can jump in and write clean, maintainable code to build tools from scratch or glue together existing ones. You would be equally comfortable setting up Kubernetes or writing a tool like Spinnaker. However, you also have experience with a wide range of tools in the cloud and infrastructure space, so you know when we will be able to use an existing tool so we don’t have to write our own.
As a principal software engineer on the DevTools team, you will:
- Help bring the Toast Engineering organization to a new level of productivity through tools and infrastructure leadership
- Write code on a daily basis to building or re-building key tools and infrastructure
- Participate in a collaborative and inclusive manner to help our engineers to continuously improve their skills and our codebase
- Grow and be supported as you develop new technical and leadership skills
Do you have the right ingredients?
- Comfortable with a rapidly changing business and technical environment
- Direct experience writing, delivering, and operating software in a SaaS environment
- Enjoy hopping into new codebases and finding your way around
- A history of mentoring and growing successful teams
- A bias towards action, able to balance getting things done with making things perfect
- A strong sense of empathy, for our customers and for the people you work with
You should also have exposure to, and expertise in, some but not all of the following:
- Different programming languages (e.g., ES6, Java, Kotlin, Python, Shell)
- Build tools (e.g., make, gradle, maven, ant, gulp, webpack, jenkins) and their use in context of build ecosystem comprised of dozens or hundreds of interdependent artifacts
- Java and the Java ecosystem (e.g., Dagger/Guice, Guava, Immutables, Jersey, Jax-RS, Hibernate/JDBI)
- Networking concepts (e.g., DNS, TCP/IP, NAT, CDNs)
- DevOps tools (e.g., AWS, ansible, packer, docker)
- Testing and development strategies (e.g., TDD, BDD, unit/integration/system tests)
- Mobile development (Android, iOS)
Our Tech Stack:
Toast’s products run on a stack that ranges from guest and restaurant-facing Android tablets to backend services in Java to internal, guest-facing and restaurant-facing web apps. Our backend services follow a microservice architecture written using Java 8 and DropWizard; we use AWS extensively, ranging from S3 to RDS to Lambda. We have our own platform for dealing with user management, service elevations and robust load balancing. Toast stores data in a set of sharded Postgres databases and utilizes Apache Spark for large scale data workloads including query and batch processing. The front-end is built primarily using Angular and ES6. The main Toast POS application is an Android application written in Java and Kotlin. For data between tablets and our cloud platform we operate RabbitMQ clusters as well as direct tablet communication to the back end.