Software Engineer - Platform

Trainline ,
London, Greater London

Overview

Job Description

Our Mission Trainline is the leading independent rail and coach travel platform selling rail and coach tickets to millions of travellers worldwide. Via our highly rated website and mobile app, people can seamlessly search, book and manage their journeys all in one place. We bring together millions of routes, fares and journey times from 260 rail and coach carriers across 45 countries. We offer our customers the best price for their journey and smart, real time travel information on the go. Our aim is to make rail and coach travel easier and more accessible, encouraging people to make more environmentally sustainable travel choices. Introducing the Platform Delivery organisation The Platform Delivery team cover all areas of infrastructure, reliability, platform and operations engineering across public cloud and data centres; Windows & Linux builds, deployment & management, CDN configuration, load balancing, PKI and a variety of other technologies that combine to provide the Platform for all other teams to use. Introducing the Platform Engineering team Platform Engineering team enables product teams across Trainline to reduce lead time and deliver features with a sustainable velocity and quality. Our product teams operate with "You build it, you run it" mindset. We want to give high levels of autonomy to those teams by providing the right level of abstraction in our processes, self-service functions, APIs and documentation. We adopt a lightweight governance and aligned autonomy model to maintain consistency in deployment, observability and reliability of our platform while providing autonomy to product teams so that they can innovate and build, deploy and operate their services. Platform Engineering is a self-sufficient team. Its members come from different backgrounds; cloud engineering, infrastructure engineering, reliability engineering and software engineering. You will have the opportunity to learn broad set of skills from your fellow team members and in return, you will help other team members in adoption of immutable infrastructure and cloud-native mindset. In Platform Engineering you will.. - Work closely with Trainline product teams (our consumers) to understand their current and future needs and translate those into platform blueprints, roadmap and backlog. - Work with our account team and experts at AWS to plan for onboarding of new services into our platform and continuously improve our maturity in adoption of cloud-native solutions. - Like our product teams, adopt the "You build it, you run it" mindset. - Contribute to our process, design guidelines and governance models and follow them. - Continuously improve yourself and your team by suggesting and then helping implement new engineering processes and practices. What you'll bring (Essential).. - Solid software engineering background. - C# or Python and a web API framework. - Clean Code. - Software engineering patterns and best practices including SOLID principles and common architecture and design patterns. - Good understanding of operating system concepts, network layers, HTTP protocol and transport security. - Cloud and distributed architecture patterns such as circuit breaker, CQRS, federated identity, sidecar, compensating transaction and event sourcing. - AWS: EC2, S3, IAM, ELB, CloudWatch. - Infrastructure as Code: Terraform. - Designing and building observable solutions using toolsets such as ELK, TICK, Prometheus or New Relic. - Familiarity with immutable infrastructure and containers. - Using containers across delivery pipeline using Docker. - Agile engineering practices such as TDD and Continuous Delivery and agile processes such as Kanban or Scrum. What you'll bring (Desirable).. - AWS: ECS, ECR, VPC, Lambda, Networking, SSM, CloudFront, WAF, API Gateway. - Infrastructure as Code: Ansible, Puppet (agentless). - Experience of working within an E-commerce or at-scale business where security, availability and reliability are critical. - Linux shell scripting. - AWS Certified Solutions Architect - Associate. Our Culture Everything begins with great people, as well as aptitude, we put a heavy emphasis on attitude. Coaches Over Heroes - We prioritise the focus on being one team over elevating the heroics of an individual, for us the true heroes are those individuals who are excellent at nurturing, coaching and generous in sharing their knowledge with others. Well-being - Everything that we do takes into account the morale of every member of our team, their opportunities for growth and for participation in exciting challenges. Mentoring and Learning - We have a mentoring community that is constantly growing, we provide people with mentors or buddies from various teams. Trust - We hire awesome people capable of making smart decisions - empowerment is a great enabler of agility. We value open expression at Trainline, we believe it's the diversity of experience, backgrounds and perspectives of our employees that makes us who we are. We encourag