in memory database
Crunch.io, part of the YouGov PLC are hiring a Python Developer to help develop our platform. We are inviting you to join our small, fully remote team of developers and operators helping make our platform faster, more secure, and more reliable. You would help us deliver new features and build the future for how we deploy our products faster and safer while increasing the availability and reliability of our systems. You will explore different ways of problem solving and discover, explain, and defend your choices in implementation. You will be self-motivated and disciplined in order to work with our fully distributed team.
We are looking for someone who is a quick study, who is eager to learn and grow with us, and who has experience in Agile cultures. At Crunch, we believe in learning together: we recognize that we don’t have all the answers, and we try to ask each other the right questions. Some of the ways that we accomplish that include paired programming to tackle a hard problem, transparent code reviews, and discussions about design and architecture. Since Crunch’s employees are completely distributed, it’s crucial that you can work well independently, and keep yourself motivated and focused. We move fast but carefully, with an earnest commitment to not breaking things… well, not too much.
We currently run our in-house production Python code against Redis, MongoDB, and ElasticSearch services. We proxy API requests through NGINX, load balance with ELBs, and deploy our React web application to AWS CloudFront CDN. Our current CI/CD process is built around GitHub, Jenkins, BlueOcean including unit, integration, and end to end tests and automated system deployments. We deploy to Auto Scaling Groups using Ansible and Cloud-Init.
What you’ll do
- Develop performance enhancements and new features in Crunch’s proprietary Python in-memory database.
- Work closely with product managers, sales, and customer success team to understand the system’s functional and non-functional requirements.
- Establish realistic estimates for timelines and ensure that project remains on target to meet deadlines.
- Contribute to code quality through unit testing, integration testing, code review, and system design using Python.
- Assist in diagnosing and fixing system failures quickly when they occur in your area of expertise. This is limited to when the on-call rotation needs a subject matter expert to help troubleshoot an issue.
- Design and implement RESTful API endpoints using the Python programming language.
- Strong understanding of the software development lifecycle.
- A record of successful delivery of SaaS and cloud-based applications.
- Extensive programming experience using Python as a programming language
- A commitment to producing robust, testable code.
- Results-driven, self-motivated and enthusiastic.
- Excellent communication skills - verbal, written and presentation.
- Experience working in a Linux environment
- Experience with client/server architectures
- A keen interest in learning new things.
Advanced (preferred) qualifications
- Experience with data locality problems and caching issues
- Expertise writing Cython or C extensions
- Deep understanding of how a database system works internally (indexing, extents, memory management, concurrency, durability, journal)
- Expertise with the numpy library
- Experience implementing custom messaging protocols (sequence numbers, ttl, etc)
- Database experience using MongoDB and ElasticSearch
- Bachelor’s Degree in Programming, Computer Science, or Engineering-related field.
- Pytest testing experience
- Design and deployment of Continuous Integration tools (e.g., Jenkins, Bamboo, Travis, etc)