Airbnb is a mission-driven company dedicated to helping create a world where anyone can belong anywhere. It takes a unified team committed to our core values to achieve this goal. Airbnb's various functions embody the company's innovative spirit and our fast-moving team is committed to leading as a 21st century company.

Introduction

Data is critical to the success of every organisation in Airbnb. It is the foundation on which business intelligence insights, experimentation, Machine Learning (ML) models, analysis and publicly shared company performance metrics are built. The best insights and ML models are worthless without trustworthy data.

Data Engineers at Airbnb are responsible for ensuring the company has trustworthy data for innovation & operations. They play a unique role of bridging the gap and connecting data producers (typically Software Engineers who own the online source systems) to data consumers (typically Analysts, Data Scientists and Software Engineers building applications which rely on the data). 

The role of a Data Engineer is critical to the success of any data driven organisation. Data Engineers deliver business value by increasing both confidence in the integrity of decision making and productivity of data consumers across the company. This document defines the role of a Data Engineer at Airbnb. 

What Is A Data Engineer Not Responsible For?

  1. Implementing and ensuring the syntactic and semantic quality of events sent to the offline data ecosystem. This is owned by the online system’s engineering team or the Data Platform team (depending on the ingestion mechanism).
  2. Developing artifact-specific datasets for reports or models - generally owned by Data Science or Analysts through company
  3. Developing or maintaining Minerva assets - generally owned by Data Science
  4. Developing or maintaining reports & dashboards - generally owned by Data Science or Analysts throughout company
  5. Developing & maintaining specific ML features - generally owned by Data Science or ML Engineers throughout company

Skills

Not every Data Engineer will require all of these skills, but we expect most Data Engineers to be strong in a significant number of these skills to be successful at Airbnb.

  1. Data Product Management
    1. Effective at building partnerships with business stakeholders, engineers and product to understand use cases from intended data consumers 
    2. Able to create & maintain documentation to support users in understanding how to use tables/columns
  2. Data Architecture & Data Pipeline Implementation
    1. Experience creating and evolving dimensional data models & schema designs to structure data for business-relevant analytics. (Ex: familiarity with Kimball's data warehouse lifecycle)
    2. Strong experience using ETL framework (ex: Airflow, Flume, Oozie etc.) to build and deploy production-quality ETL pipelines.
    3. Experience ingesting and transforming structured and unstructured data from internal and third-party sources into dimensional models.
    4. Experience with dispersal of data to OLTP (ex: MySQL, Cassandra, HBase, etc) and fast analytics solutions (ex: Druid, ElasticSearch etc.). 
  3. Data Systems Design
    1. Strong understanding of distributed storage and compute (S3, Hive, Spark)
    2. Knowledge in distributed system design, such as how map-reduce and distributed data processing work at scale
    3. Basic understanding of OLTP systems like Cassandra, HBase, Mussel, Vitess etc.
  4. Coding
    1. Experience building batch data pipelines in Spark
    2. Expertise in SQL
    3. General Software Engineering (e.g. proficiency coding in Python, Java, Scala)
    4. Experience writing data quality unit and functional tests.
  5. (Optional) Aptitude to learn and utilize data analytics tools to accelerate business needs 
  6. (Optional) Stream Processing:
    1. Experience building Stream Processing jobs  on Apache Flink, Apache Spark Streaming, Apache Samza, Apache Storm or similar streaming analytics technology.
    2. Experience with messaging systems (ex: Apache Kafka or RabbitMQ etc.)
    3. Experience designing and implementing distributed and real-time algorithms for stream data processing.
    4. Understand concepts of schema evolution, sharding, latency etc.
    5. Good understanding of Lambda Architecture, along with its advantages and drawbacks