From our collective experiences, we believe the following principles are the best current description of how software should be built and products delivered at loveholidays.
Think big, deliver incrementally
We believe that you need to aim at something ambitious, sketch your path and find ways to deliver incrementally. Approaching problems this way will allow us to challenge ourselves, communicate our thinking and notice any errors and misconceptions so we can correct them along the way. Ultimately it will lead us to create better products and systems.
Example: Our new search platform is a huge project that we’ve undertaken and it will revolutionise how we sell holidays - however to understand the impact and drive value we delivered iteratively by testing it out on the new Price & Availability page for targeted meta and Hotel Details Page traffic - this drove immediate value whilst validating the new platform vision.
We want to increase the speed and quality of our development by making things simpler. Simple systems are easier to communicate, understand, extend, more resilient, cheaper to run and scale. Making things simple requires the ability to consider single ideas and concepts in isolation without them being intertwined with other concepts. Processes and tools alone can’t help with maintaining simplicity; it is a choice and it is one we need to invest in.
Example: We decomposed our core runtime systems into smaller, simpler ones, with ownership and support distributed across teams. We unified error reporting, making it easily accessible and actionable. As a result, incident discovery and recovery is a lot quicker and teams spend less time dealing with production issues.
Software is a liability, not an asset; it needs to be continually improved to match our evolving domain understanding, updated as new technologies emerge and simplified to address the complexity introduced as it evolves and grows. Therefore, whenever we change something, we aim to leave it in a simpler state than we found it and more aligned with our end goal. Over time these decisions will compound and help us sustain the speed and quality of development.
Example: Our evolved incident management system is an example of where we’ve ended up after focusing on improving our systems and leaving them error-free. The principles behind our incident management system and the work we do to improve systems when they fail is a core part of our culture.
We want to focus as much of our effort as possible on innovation that sets us apart from the competition. Creating strategic partnerships with vendors that share our values, using best in class commodity products and automating repeatable tasks will not only free up our time to do this but form a platform for further innovation.
Example: A/B Testing is a key activity for our business and we delivered a world first in testing cached pages “on edge” by exploring the capabilities of Fastly's platform. Expanding our relationship with the Fastly ecosystem, we partnered with DataDome to outsource bot detection and scraping protection. Free from having to solve that problem in-house, we can invest that time in USP innovation.
We determine the success of our technology by measuring its contribution to the success of our business. We communicate the importance of lower-level technical objectives, such as reducing latency by explaining how they improve top-level business metrics such as conversion, sales, customer satisfaction and cost.
Example: We introduced Twilio to deliver a best-in-class support system for our customers and replace the ageing call centre platform. Twilio enabled us to open communication 24/7 through AI, voice and chat. What marks this as a successful project is an increase in customer satisfaction and a decrease in call centre costs, both of which are business vitals.