At GetYourGuide, our engineering principles shape how we build and ship our products. They are not static rules but a dynamic framework that guides every decision, project, and innovation. These principles do more than dictate; they inspire and shape our approach to technology.
For us at GetYourGuide tech, the set of carefully crafted engineering principles we've developed helps steer our engineers as they architect, write, test, deploy, monitor, and refine the code that powers and brings unforgettable experiences to millions of customers and thousands of suppliers in more than 150 countries.
We organize our engineering principles into four main areas: building, operating, doing, and improving. In the following, we'll explore each of these categories in detail.
Simple services, clean interfaces
We focus on writing simple services connected by clean interfaces, structuring these services around business capabilities while keeping operational aspects in mind. This approach emphasizes the longevity of data and interfaces over the fluidity of code.
Clarity over cleverness
Our code is clear, straightforward, and easy to understand. We prioritize making correct code fast rather than making fast code correct, believing that maintainability and understandability are key.
We default to technologies that are supported within GetYourGuide, being fast-followers rather than early adopters. This philosophy leads us to prefer open-source solutions and build only what is absolutely necessary, ensuring reliability and community support.
Detect failures before they matter
We cover critical functionality with automated tests and use strategies like canary deployments to minimize disruptions. This proactive approach to failure detection is essential for maintaining a stable production environment.
Expect and manage failures
We design our systems to degrade gracefully when systems struggle or dependencies fail. This mentality prepares us for the inevitable and ensures resilience.
By defining and measuring the right metrics and Service Level Objectives (SLOs), we always know what's going on. We set up alerts that notify us proactively when we miss our objectives and let us react swiftly and effectively to recover our systems if needed.
Understand the ‘why’
We define success in tangible terms, so that everybody understands how our customers benefit from our work. Then we focus relentlessly on implementing these improvements. This understanding drives our development process, ensuring that we deliver real value.
Pragmatism in action
We take on technical debt when appropriate, adhering to the principle that 'done is better than perfect.' This pragmatism allows us to deliver solutions quickly while maintaining the flexibility to iterate and improve.
We use experiments to measure our impact, iterating if required and tying up loose ends before moving on. This ensures that our solutions are not just delivered but also effective.
We are committed to leaving code better than we found it, whether fixing problems, paying back technical debt, or making small improvements. This culture of continuous enhancement ensures our systems and practices evolve and improve.
Learning from mistakes
We encourage taking calculated risks if the upsite outweighs the downsides. We know that failures happen and sharing derived learnings, and codifying solutions is key. This approach helps solutions have a wider impact and contribute to collective knowledge.
We push ourselves and our teammates out of our comfort zones to level each other up, valuing mentorship and openness to seeking help. This culture fosters personal and professional growth, making us a stronger team.
These principles address the full software development life cycle, providing guardrails for our engineers to build features the "right way," run them reliably in production and iterate on them systematically.
Adaptable and evolving: growing with the organization
One of the most defining aspects of these principles is their adaptability. As GetYourGuide grows, our principles evolve in tandem, ensuring they remain relevant and effective.
This evolution reflects our commitment to continuous improvement and our recognition that what works well for a team of 200 may need to be rethought for a team of 1,000. Our principles are alive, growing with us, and helping us navigate the changing landscapes of technology and market demands.
Beyond Guidelines: cultivating a shared understanding
These principles are more than just mere guidelines; they are a shared language that builds understanding and collaboration across our diverse team.
This shared understanding is crucial in an environment where cross-functional teams must work together to ship features our customers and partners will love. It ensures that, despite varying backgrounds and areas of expertise, everyone is aligned with a common goal and approach.
Good is not just a standard, but a culture
The principles instill a culture where "good" is not just a standard to meet but a culture to embody. They encourage us to push boundaries, innovate responsibly, and prioritize customer needs. This pursuit of "good" is not about ticking boxes; it's about striving for excellence in every aspect of our work, from the code we write to the products we deliver.
Principles as a compass, not dogma
Importantly, at GetYourGuide, we view these principles as a compass, guiding us towards excellence rather than dogma that constrains creative and technical exploration. This approach ensures that while we maintain high standards and a clear direction, we remain open to new ideas, methodologies, and technologies that can enhance our work and products.
Our engineering principles at GetYourGuide go beyond just coding standards; they are a testament to our commitment to quality, innovation, and customer focus. And these principles shape not only our technology but also our team dynamics and culture.
If you're passionate about technology and share our values of quality and innovation, come join us.
How Sequential Testing Accelerates Our Experimentation Velocity
Leveling Up GetYourGuide’s Data Platform