As a Python Software Engineer you will help build our next-generation search platform, using your skills to develop, test, and deploy sustainable and beautiful web APIs, machine learning inference services, and data processing pipelines. This is a unique opportunity to join a growing team at an exciting phase of development.
You will work at the cutting edge of search engineering. Your expertise will be instrumental in building and scaling out a platform that combines vast quantities of real-time data with domain-leading machine learning to deliver real impact to more than 100 million users worldwide.
What are we looking for?
Our existing team covers a wide variety of different skills and we’re looking to broaden this yet further. Here are a few broad areas in which our team works. Can you picture yourself having an impact in one of these areas? Do you have an eagerness to advance your knowledge in one or more of these areas? Please highlight this when applying.
APIs and services: Building fast, flexible APIs and the data processing that underpins them. Designing APIs to be used by a variety of users – from cooks across the world, to internal users like engineers and community managers. Building libraries, services, and tooling that accelerate the pace of delivery.
Search at scale: Deep knowledge of the Elasticsearch query DSL and performance tuning for real-time applications at global scale. Skills in data exploration using Kibana.
Search science: The algorithms and methods that make search more relevant. Identifying opportunities to improve search quality – from relevance engineering to machine learning to natural language processing and beyond. Devising evaluation methodologies to measure search quality and developing experiments to validate them.
A typical day might include any of the following:
- Implement and deploy a new experimental HTTP API endpoint to test an unproven feature concept against our existing baseline (and being prepared to fail fast, revert and rethink!).
- Implement a change in system architecture to improve an onerous or error prone area of development, subsequently helping the team make the most of the change.
- Explore API performance to further improve response times while still ensuring results are hyper-relevant for every user.
- Refactor a section of code to fix the flaky test that seems to intermittently fail, especially when you want to release something new and exciting to production.
- Review another team member’s PR, offering “must”, ”should”, “could”, and “would” guidance that finds the sweet spot between delivery and improvement.
- Add a step to CI to automate an element of PR review, freeing team time to spend on other development work.
Who you are:
- You have substantial experience of working in a software team delivering features at pace.
- You love writing software using Python. You deliver tested, reliable, and maintainable software.
- You prefer working on backend engineering problems, including contributing to projects such as building web APIs, data processing pipelines, and project tooling. You leave beautiful clean code behind that other developers love to work with.
- You’ll have experience of, or are excited to learn about, some of the other technologies we apply at Cookpad, such as Apache Spark (PySpark), Apache Kafka, Elasticsearch, AWS, Terraform, Docker, and Kubernetes (but don’t let not having any of these stop you applying if you have something else to bring!).
- You are passionate about continuous integration and delivery, and apply these principles when building software, striving to ship your work quickly and often.
- You’ll want to have a hand not only in deciding how our software is built, but in understanding who it’s being built for and why they need our help.