Senior Deployment Engineer
Located in San Francisco, United States
December 8th, 2017
Slack is looking for an engineer to develop our deployment pipeline and service hosting environment.
Slack is the fastest growing enterprise software company ever. We operate at tremendous scale with systems that process millions of events per second. But we're also iterating on those systems rapidly as we continue to evolve how work happens. We average several large feature releases every week, with over a hundred individual deployments to our major systems every workday. To support this pace we have built tooling to make the development and release of new code safe, reliable and enjoyable for our developers.
The Internal Tools team works closely with other teams in engineering, product development and customer experience to craft humane systems that help everyone get things done. We are a small team making a large impact; every improvement we ship has a corresponding impact on the velocity of the company as a whole. We have a strong commitment to quality, and understand that we're now working at scale where a one-in-a-thousand edge case is going to impact our colleagues every week. We are an inclusive team with deep empathy for our colleagues.
Our tools are written using a combination of PHP/Hack, Go, MySQL and Redis. We run on Linux servers managed with Chef. These are reliable tools that the wider Slack engineering team knows well and trusts. Where possible we build on top of existing systems including Github, Zendesk, JIRA and Jenkins.
This is a senior engineering position based in San Francisco.
If you were to join Slack here are the kinds of things you would do over the course of a typical week:
- Add a feature to an internal tool to make developers’ lives simpler and more productive.
- Whiteboard and solicit feedback from peers for a performance improvement in our deploy pipeline — and then make it happen.
- Respond to an out-of-hours outage preventing new code deployments.
Here are some things we consider critical to being a good engineer on the deployment team:
- You are motivated by helping other engineers succeed. When things break — and they will — you are eager and able to help fix things. You like thinking of ways to improve efficiency or bring delight to the people you work with.
- You’ve been building web applications professionally for a while and can point to things you’ve worked on. You know how the web works. You know HTTP and what a good API looks like.
- You understand the fundamentals of git.
- You have experience with functional or imperative programming languages -- e.g., PHP, Python, Ruby, Go, C, or Java (used without frameworks). You possess strong computer science fundamentals: data structures, algorithms, programming languages, distributed systems, and information retrieval.
- You've deployed server software on Linux, and then operated it at scale (and debugged it too).
- You write understandable, testable code with an eye towards maintainability.
- You are a strong communicator. Explaining complex technical concepts to designers, support, and other engineers is no problem for you.
- You also know that the internet is a scary place and understand security concepts deeply and can put them into action to protect us and our users.
- You are someone that others enjoy working with due to your positive attitude and technical competence.
- Bachelor's degree in Computer Science, Engineering or related field, or equivalent training, fellowship, or work experience.