Senior Software Engineer - Internal Tools
About the Team
The Slack Internal Tools team makes the development and release of new code safe and enjoyable for our developers. We maintain Slack's deploy pipeline, continuous integration infrastructure, and code review process. We also maintain Slack's task tracking system, allowing everyone from Product Design to our IT Helpdesk to collaborate on ensuring the right work is prioritized.
Slack is the fastest growing enterprise software company ever. Our customers expect Slack to be exceptionally reliable and fast, and 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.
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 happen 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 and Terraform. 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, Consul and Jenkins.
About the Role
This is a senior engineering position based in San Francisco.
Your responsibilities may include:
- Building a new capability into our application configuration system.
- Adding more automation to our code review pipeline to avoid common errors in code.
- Participating in the team on-call rotation, and respond to an out-of-hours outage preventing new code deployments.
You might be a good fit if:
- 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 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 are able to mentor and model best practices for unit tests, code review, design documentation, debugging, and troubleshooting.
- 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.
- You have curiosity about how things work.
- Firm grasp of computer science fundamentals: data structures, algorithms, programming languages, distributed systems, and information retrieval.
- Bachelor's degree in Computer Science, Engineering or related field, or equivalent training, fellowship, or work experience.
- Experience with functional or imperative programming languages -- e.g., PHP, Python, Ruby, Go, C, or Java (used without frameworks).
- Experience deploying, operating and debugging server software on Linux at scale.
- 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.
- Detailed knowledge of the git version control system.
- Proven competency with Jenkins and Github’s APIs.
- Experience using PHP without a framework.
- Experience using deployment automation/configuration management, especially Chef.
- Prior experience with or knowledge of large scale, high volume systems.
Back to top