Software Engineer (Back end)

Ometria ,
London, Greater London

Overview

Job Description

Description At Ometria we help e-commerce retailers make sense of their multiple streams of data and allow them to send more relevant communications. Our combined product and engineering teams use Python (and a little Golang) to process millions of data points into real-time analytics, backed by statistical methods and machine learning. Our users then use the analytics via a slick UI powered by a modern Javascript Single Page App framework. We believe in modern software engineering principles, including DevOps and SRE practices, little 'a' Agile (including Kanban and friends), delighting our users and investing in the growth of our team. "My favourite project was when we spiked a Kubernetes cluster for our new deployment. It was a great learning experience for all of us, especially the newer members who have not deployed containers before. The whole team really saw the benefits of this approach and the Lunch and Learn that followed made for some awesome technical discussions!" - Lead Engineer @ Ometria We are looking for a Software Engineer to join our growing engineering team and help us build out scalable, reliable, performant solutions in our SaaS platform. The company is backed by top VC funds and successful entrepreneurs and is working alongside over a hundred of the fastest growing retailers globally. What you'll be doing: * Design/Development - work collaboratively to design scalable, performant, robust solutions with product managers, test engineers, and software engineers. Developing those services in the most appropriate language (Python, Golang) according to best practices. * Operations - working with our CI pipelines (CircleCI), docker image registry (Quay) and our production AWS/Kubernetes infrastructure setup. Work with the SRE's to diagnose problems, resolve issues and carry out incident management. * Quality Assurance - working with the test engineers and product to develop specifications and design to ensure quality solutions and happy customers. You'll also work with the test engineers on performance, security and robustness testing. * Data - work with data engineers and data scientists to productionize models and work on infrastructure solutions for our analytics and machine learning solutions. The engineering team is currently 10 engineers (looking to double this year) - frontend, backend, SRE, and test. We have varied backgrounds in terms of experience, roles and responsibilities and all work in the same office. We work closely with our product team on new features, infrastructure, growth, and client-specific work. You can pick your own tools and hardware (most of us are Mac/Linux). Here are some of the challenges we are thinking about right now: * Building out scalable modern microservices on AWS/Kubernetes using Javascript, Python, and Golang - replacing our PHP services. The architecture allows for the autonomy of teams, fault tolerance, reliable monitoring and alerting. We're working on continually adapting the system for growth as we continue to onboard more clients, especially as we expand our US presence. * Optimising our reporting and inference engine to run analytics over millions of data points in real-time for our clients. They run complex segmentation queries across their datasets with expectations of responses within seconds. We're working on improving our data architecture here for bigger datasets and faster Technology Stack Our clients interact with the Ometria platform through a single page web app, which uses the Ampersand.js framework, with a separate section in React. The app communicates with the backend platform through various Python 3 and Golang. Flask powers our Python API layer. Golang powers some of our massively concurrent workloads and analytics services. We run on AWS/Docker/Kubernetes configured with Terraform. Data is stored in Postgres and Redshift, and we use various queueing/messaging tools (Google Pub/Sub, Kinesis, AWS SQS, Beanstalk, Celery, and Gearman) How we work Product and Engineering work hand in hand and follow 'a' Agile principles, that is, the teams decide for themselves which Agile practices they follow! We run with the lightest processes possible and reserve as much time as we can for actual engineering. The teams work in 2-week sprints and you'll find that high levels of communication, CI/CD, pairing, standups, and retrospectives are common. We constantly strive to improve our score on the Joel Test, creating the best environment possible for sustained engineering. You should apply if: * Experience level - you have three or more years development experience in a general purpose language (Ruby, Java, PHP etc...) with a year plus in either Python or Golang. You also have excellent communication skills - both written and verbal. * Problem solver - you enjoy working collaboratively in a team, but can also work independently to solve problems. You seek help/feedback when required to ensure solutions are robust, performant, secure etc... utilisi