Thumbtack is a local services marketplace that connects customers with the right professionals for anything they need done. Every day we rally around the impact Thumbtack has on people’s lives — helping brides plan their perfect wedding, families improve their homes, and small businesses grow and thrive. Thumbtack today has 1,100+ types of services, millions of customer requests, and hundreds of thousands of paying professionals. Join our growing team in the quest to build THE destination for anything you need done.

Our Site Reliability Engineers are a hybrid of software and systems engineers. We code our way out of operational problems and into chocolate chip cookies.

Our current mission is to design Thumbtack’s next version of the core infrastructure. We are responsible for reliability, scalability, and automation, while keeping an eye on latency, performance, and capacity.

Come help us build a scalable infrastructure to help millions of users get the right pro’s for all of life’s projects.

What we need your help with:

Desired Skills and Experience

  • Automate the server provisioning process (we have 500 and growing) – humans should not be involved.
  • Influence and create new designs and architectures for a growing number of distributed systems (multi regions, evaluating kubernetes)
  • Plan and execute configuration management (Puppet) and monitoring (DataDog) of our platform as it grows.
  • Design the system and processes that engineers use to deploy their software into production.
  • Design, write, and maintain software to improve the availability, scalability, latency, and efficiency of Thumbtack’s services, incorporating third-­party tools (ELK, pgbouncer, ZFS, HAproxy) when available and writing software of your own when nothing else fits the bill.
  • Engage in service capacity planning and demand forecasting, anticipating performance bottlenecks and provisioning new hardware as necessary.
  • Run software performance analysis and system tuning.
  • Plan and execute DiRT.
  • Participate in rotating on-call duties.
  • Fluent in one or more of: C, Scala, Python, Go.
  • Familiarity with algorithms, data structures, and complexity analysis.
  • Experience working with Unix/Linux systems from kernel to shell and beyond, with experience working with system libraries, file systems, and client-server protocols.
  • Experience with network protocols and theory (TCP/IP, UDP, ICMP, MAC addresses, IP packets, DNS, OSI layers, and load balancing, etc.).
  • Systematic problem solving approach.
  • Expertise in designing, analyzing, and troubleshooting large-scale distributed systems.
  • In-depth knowledge of operating systems (processes, threads, IPC, concurrency, locks, mutexes, semaphores, etc.).
  • Strong sense of ownership and drive.
  • Experience with Puppet, or some other configuration management tool.
  • Experience with Amazon Web Services.
  • Experience with PostgreSQL tuning and performance.