Senior Software Engineer - Storage

Slack, San Francisco

Slack's cloud-based collaboration tools and services are used worldwide.

About the Team

Slack's Storage Engineering team builds and operates the platform services that store data at Slack. We manage technologies that are highly durable (databases and search) and technologies optimized for performance (cache and streaming data).

For example, Storage Engineering is in the midst of transitioning Slack’s core MySQL infrastructure to use Vitess’ flexible sharding and management capabilities. Review our recent presentation slides: Migrating to Vitess at (Slack) Scale.

About the Role

Your responsibilities may include:

  • Designing and developing new highly-available infrastructure to meet the needs of our growing and evolving product.
  • Advising feature teams on how we can support the storage needs of new features under development.
  • Writing code to capture data about service performance, and create tools and dashboards to provide insight into that data.
  • Participating in the Storage Engineering on-call rotation, triaging and addressing production issues as they arise.
  • Contributing to internal tools that help us improve our operations processes, manage our infrastructure, and scale our systems.

You might be a good fit if:

  • You have curiosity about how things work.
  • You've been developing and operating high-traffic Internet applications and can point to things you’ve worked on.
  • You've deployed server software on Linux, and then operated it at scale. You’ve debugged its problems, and analyzed and optimized its performance.
  • You are a strong communicator. Explaining complex technical concepts to designers, support, and other engineers is no problem for you.
  • You enjoy helping onboard new team members, mentoring, and teaching others.
  • You know how the web works. You know HTTP and TCP/IP and what a good API looks like.
  • You possess strong computer science fundamentals: data structures, algorithms, programming languages, distributed systems, and information retrieval.



  • Professional experience operating at least one distributed data storage system, at scale and in a team environment. Some examples include: a relational database like MySQL, a search engine like Solr, or a streaming message bus like Kafka.
  • Bachelor's degree in Computer Science, Engineering or related field, or equivalent training, fellowship, or work experience.


  • Solid competency in software engineering, using functional or imperative programming languages -- e.g. PHP, Python, Ruby, Go, C, or Java (used without frameworks).
  • Experience using distributed storage systems scaled out across hundreds or thousands of servers.

Bonus Points:

  • Experience expressing complex questions in SQL, especially MySQL.
  • Experience using deployment automation/configuration management (Chef a plus).
  • Experience with virtualized environments, especially Amazon Web Services.
  • Experience in a startup environment.

About Slack

Empathy. Courtesy. Playfulness. Craftsmanship. Solidarity — these are some of the values we live by, as a company. We work by them, too: we’re building a platform and products we believe in — knowing there is real value to be gained from helping people, wherever they are, simplify whatever it is that they do and bring more of themselves to their work.

We’re building a strong, diverse team of curious, creative people who want to find a purpose in their work and support each other in the process. We work hard and we play to win… within normal business hours. And then we go home.

That balance is important: It enables us to truly do the best work of our lives. As a result, we create a place where all kinds of work happens — and happens well — all while working alongside people we respect and admire.

Want to learn more about Slack? Visit Slack's website.