Booking NL
Senior Software Engineer (For independent contractors)
A Senior Software Engineer owns the end-to-end execution of technical elements in the Booking.com tech stack, products and processes. They are responsible for accurate estimation or forecasting the needed efforts, software design and implementation of complex technical solutions based on business requirements, testing and deployment up to production with non-disruptive way to our customers, monitoring of the services health. Senior Software Engineers are expected to work together with colleagues in other job roles to design, prioritize and implement complex technical tasks.
About the project:
We’re dedicated to enhancing the travel experience by making it easier, faster, and more affordable to build and manage trips. Our projects focus on improving trip management, reducing cancellations, and offering personalized support through innovative, scalable platforms. We strive to enable self-service across all verticals and provide seamless post-booking experiences, processing over 500 million API requests daily. By joining our team, you’ll contribute to creating intuitive, trip-centric solutions that empower millions of travelers worldwide.
Key Responsibilities:
Building software applications:
Is responsible to build software applications by using relevant development languages (Java, Perl) and applying knowledge of systems, services and tools required for the target solution.
Is responsible to write readable and reusable code and review code written by peers.
Is responsible to refactor and simplify code by introducing design patterns when necessary.
Is responsible to ensure the quality of the application by following best-matching testing techniques and methods that adhere to the test strategy.
Is responsible to maintain data security, integrity and quality by effectively following company standards and best practices.
End to End System Ownership:
Is responsible to own a service end to end by actively monitoring application health and performance.
Is responsible to define, set and monitor relevant metrics, logs, requests traceability and act accordingly when violated.
Is responsible to independently manage an application or service by working through local build, environments transition, deployment and operations in production.
Technical Incident Management:
Is responsible to address and resolve production issues by mitigating the customer impact within SLA.
Is responsible to improve the overall reliability of systems by producing long term solutions through root cause analysis.
Software Systems Design:
Is responsible to investigate and define the best-matching approach for system integration with the set of Booking technical components owned by different teams.
Is responsible to evaluate possible architecture solutions and design target approach by taking into account business requirements, non-functional requirements, technology layout and state, timelines, available capacity etc.
Is responsible to describe the implications of changing an existing system or adding a new system to a specific area, by having a broad, high-level understanding of the infrastructure and architecture of our systems.
Continuous Quality and Process Improvement:
Is responsible to identify opportunities for process, system and structural improvements by examining and evaluating current process flows, methods and standards.
Is responsible to design and implement relevant improvements by defining adapted/new process flows, standards, and practices that enable business performance.
Effective Communication:
Is responsible to deliver clear, well-structured, and meaningful information to a target audience by using suitable communication mediums and language tailored to the audience
Is responsible to achieve mutually agreeable solutions by staying adaptable, communicating ideas in clear coherent language and practicing active listening
Requirements of special knowledge/skills:
Strong programming skills and experience with 2 server-side programming languages (Java is a must), coding standards.
SDLC best practices: source control management, code reviews, unit and integration tests, build pipelines, build and configuration tools, E2E tests.
Observability: logging, tracing, metrics. Building relevant dashboards to monitor service health, defining alerts.
REST API design and best practices: API versioning, online documentation, applying relevant HTTP methods, setting up clear request/response structure, API backward compatibility.
Experience working with A/B testing
System design: architecture and system design patterns and best practices, system visualization and documentation.
Resilience and graceful degradation: retries, circuit breakers, fallbacks.
Building and managing container-based applications.
Integration techniques and trade offs: synchronous and asynchronous approaches.
Experience with legacy system integration and phased application integration.
Experience with AWS public cloud services. Practical experience with DynamoDB is a big plus.