Booking NL
Senior Software Engineer (For independent contractors)
A Senior Software Engineer I 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 I are expected to work together with colleagues in other job roles to design, prioritize and implement complex technical tasks.
Project
We are developing the Conversation Platform that enables conversational experiences for actors across different modalities (text, voice, video). The platform serves our travellers, accommodation partners and CS specialists and we are excited to start extending it to other types of participants as well, covering the arising need in Booking for conversational interfaces. Our platform processes more than 2 billion API requests per day, allowing our consumers to exchange more than 100 millions messages per month.
One of the initiatives in our portfolio is introducing a ‘frontline AI support’ to help our customers instantly when they need help and connect them to one of our specialised CS human agents or partners when needed. This idea should be powered up by the cloud-based vertical-agnostic instant messaging platform that provides cross-channel conversational capabilities and is able to detect the message intent, urgency and other criteria to determine and suggest the next action - whether it’s a text reply, self-service action or connection to a human.
Key Responsibilities
Building software applications:
Is responsible to build software applications by using relevant development languages 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.
Strong focus on 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 or services from other cloud providers.
Experience with streaming solutions, Flink knowledge is a plus.
Languages, systems, protocols and tools
Java, Git, Docker, Kubernetes, Maven, Terraform, Java server micro frameworks (Dropwizard, SpringBoot or others), REST, Swagger, time-series databases and interactive visualization systems (Prometheus, Graphite, Grafana or others), CICD tools (Harness, Jenkins or others), message queues (Kafka, Redis, AWS SQS or others), no-SQL databases (Cassandra, AWS DynamoDB or others), web servers (Jetty, Netty, Tomcat or others), service mesh (Envoy or others), streaming platforms (Flink, Kafka streams or others), AWS services (Dynamo DB, Lambda, SQS, SNS, Kinesis, etc), GraphQL