Senior Software Engineer - Search, Learning and Intelligence
Slack is looking for experienced engineers to help design, prototype, and productionize features that make Slack smarter the more companies use it. Our goal is to make people feel less overwhelmed by Slack’s information avalanche and give them superpowers to find fast answers — whether from their coworkers, search, or bots. The work will span many disciplines: search/information retrieval, recommendation systems, natural language processing, and machine learning.
The main tools that we use to build Slack are PHP, MySQL, and Linux -- reliable tools that the Slack team knows well and trusts. Our backend data infrastructure is built on Kafka, Hadoop, Hive, Presto, Spark, and MySQL. We are looking for other engineers that understand that simplicity and reliability are aspects of a system that can’t be tacked on but are carefully calculated with every decision made. We are also very nice people and are happy to help you learn what you need to know to work on Slack.
This position reports directly to the Head of the Search, Learning, and Intelligence group.
If you were to join Slack, here are the kinds of things you would do over the course of a typical week:
- Identify a quality problem, analyze our message corpus to come up with new ideas, and experiment with a new algorithm.
- Ship new features that add a layer of intelligence for our large-and-growing user base.
- Whiteboard a fix to a scaling problem -- and then make it happen.
- Talk with our front-end team to decide how an API method should work
- Help our skilled support team triage bugs and troubleshoot production issues
Here are things that we consider critical to being an Search, Learning, and Intelligence Engineer:
- Academic background in computer science (BS or MS) or equivalent work experience.
- You are curious about how things work.
- You have a professional/academic background in at least one of IR, NLP, ML, or data science broadly speaking. If not, you are very interested in learning and you have a generalist skillset spanning infra to front-end development.
- You’re a good programmer. You have experience with functional or imperative programming languages, eg. PHP, Python, Ruby, Go, C, or Java (used without frameworks)
- You can jump into situations with few guardrails and make things better.
- You possess strong computer science fundamentals: data structures, algorithms, programming languages, distributed systems, and information retrieval.
- You write understandable 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 know how the web works and what a good API looks like.
- You have built reliable and safe distributed systems and understand the tradeoffs made when engineering a feature.
- When things break -- and they will -- you are eager and able to help fix things.
- You are someone that others enjoy working with due to your technical competence and positive attitude.
- Experience with SOLR / Elastic, Redis and Java
- Experience with text mining and parsing
- Experience with classification, ML or neural networks
- You’ve built large-scale data pipelines professionally and can craft clean and beautiful code in Java, Scala, and/or SQL, and you have experience with Hadoop/Spark as well.
- Experience building simple scripts and web applications using Python, Ruby, or PHP.
- A solid grasp of basic statistics (regression, experiment design)
- Prior experience with or knowledge of large scale, high volume systems
- Experience in small start-up environments
Meet Some of Slack's Employees
Director, Application Engineering
Joann is responsible for running a team of eight Slack Application Engineers. She works hard to support them in their positions and career trajectories and ensures that they have everything they need to build awesome products.
Back to top