About Fresha Fresha is the leading marketplace platform for beauty & wellness trusted by millions of consumers and businesses worldwide. Fresha is used by 110,000 businesses and 450,000 stylists and professionals worldwide, processing over 1 billion appointments to date. The company is headquartered in London, United Kingdom, with 12 global offices located across North America, EMEA and APAC. Fresha allows consumers to discover, book and pay for beauty and wellness appointments with local businesses via its marketplace, while beauty and wellness businesses and professionals use an all-in-one platform to manage their entire operations with an intuitive subscription-free business software and financial technology solutions. Fresha’s ecosystem gives merchants everything they need to run their business seamlessly by facilitating appointment bookings, point-of-sale, customer records management, marketing automation, loyalty, beauty products inventory and team management. The consumer marketplace unlocks revenue potential for partner businesses by leveraging the power of online bookings and automated marketing through mobile apps and advanced integrations with major tech brands including Instagram, Facebook and Google. Role Overview Given our exciting and progressive growth plans, we are looking for an exceptional Senior Back-End Engineer to come join our global business. Reporting directly to the Engineering Manager, and working collaboratively in a cross-functional product team within a tribe, you will be accountable for designing and developing applications and coordinating with the rest of the team working on different layers of the infrastructure Fresha. This is a great opportunity for someone looking to work in a fast-paced and changing environment, who likes to work autonomously, enjoys a challenge and wants to make an impact To foster a collaborative environment that thrives on face-to-face interactions and teamwork, all Fresha employees work from the office four days per week, with the flexibility to work remotely one day each week. London office: The Bower, 207, 211 Old St, London EC1V 9NR What you will be doing Language - Design, build, and maintain efficient, reusable, and reliable Ruby/Elixir code Polyglot - All our services are built-in Ruby, Elixir, GraphQL federation or Typescript, depending on which language best suits the solution Messaging - For communication, we use Kafka for events and gRPC or JSON for synchronous calls. Kubernetes - All our services run in Kubernetes. Migration - We are in the process of switching away from our Ruby monolith to a brand-new microservice architecture. DDD - Domain-driven design is at the heart of our development process, we like to build fast but think about the bounded context before we start. Performance - Ensure the best possible performance, quality, and responsiveness of the applications Troubleshoot - Identify bottlenecks and bugs, and devise solutions to these problems Organisation - Help maintain code quality, organization, and automation SDLC - Be involved in all stages of building products from inception, through delivery and beyond Innovate - Help to shape the future of our architecture and best practices Culture - Contribute to a healthy engineering culture of feedback and growth What we are looking for Technologies - Strong understanding of languages such as Elixir, Ruby, GraphQL or TypeScript Distributed Systems - You understand how to build, deploy and maintain a globally distributed system. Event-driven architecture - Knowledge of event-driven systems and tools/protocols like Kafka, and gRPC will be a plus. Experience - Have experience (3 years) working on internal product engineering teams, developer tools, developer productivity or infrastructure products at scale. Adaptable - Are a generalist engineer with an ability to pick up new frameworks quickly and willing to work across the stack. Inquisitive - Enjoy understanding technical domains deeply and are willing to really get into the weeds Pragmatic - You’re tech stack agnostic and care more about using the right tech for the job. Ideally, you have worked with 3 different flavors, functional, OO and scripting languages. At Fresha, we value passion and potential as much as specific skills. If you're enthusiastic and eager to learn, we encourage you to apply, even if you don't meet every listed requirement. We believe in fostering growth and providing the support needed for you to excel in your role. Interview Process Screen Call - Video-call with a member from the Talent Team (45-60 min) 1st Stage - Video/In-person interview with Hiring Manager (60 min) 2nd Stage - Technical video/In-person interview with our Engineers (up to 2.5hrs) Final Stage - 60 minute meeting with our CTO We aim to complete the entire interview process and deliver feedback within 4 weeks. Every job application received is reviewed manually by our talent team. While we strive to assess applications within 7 days, the sheer volume of talented individuals expressing interest may occasionally extend this timeframe Inclusive workforce At Fresha, we are creating a culture where individuals of all backgrounds feel comfortable. We want all Fresha people to feel included and truly empowered to contribute fully to our vision and goals. Everyone who applies will receive fair consideration for employment. We do not discriminate based on race, colour, religion, sex, sexual orientation, age, marital status, gender identity, national origin, disability, or any other applicable legally protected characteristics in the location in which the candidate is applying. If you have any accessibility requirements that would make you more comfortable during the interview process and/or once you join, please let us know so that we can support you.