The Data Engineer Roadmap 🗺
Tags: database, sql, programming, 100daysofcode
Published: 2021-10-19 12:26:09

# Introduction

This has been inspired by the [Full Stack Developer's Roadmap](https://dev.to/ender_minyard/full-stack-developer-s-roadmap-2k12) post written by @ender_minyard 🙌

With the ever growing data volumes and demands, the data engineering career has been one of the fastest growing jobs for the past few years.

According to the [2021 Stack Overflow survey](https://insights.stackoverflow.com/survey/2021), data engineers are one of the top 5 highest paid professionals right after SREs and DevOps engineers:

![](https://imgur.com/svaZqLl.png)

If you are looking to become a data engineer, here are some resources for data engineering that you can save for later.

Table Of Contents

* 💻 Fundamentals
* 👩‍💻 Programming basics
* 🧪 Testing
* 📊 Database Fundamentals
* 🏠 Data warehouses
* 📦 Object storage
* ⚡ Data processing
* 📩 Messaging
* 💽 Cluster computing
* ⏲ Workflow Scheduling
* 📺 Monitoring data pipelines
* 👨‍💻 Infrastructure as Code
* 🛫 CI/CD

# 💻 Fundamentals
Having a solid understanding of the Linux operating system could be a must in many IT related roles. You are going to benefit a lot if you know the basics of the following:

 * [Basic Terminal Usage]()https://devdojo.com/course/linux-command-line-basics
 * [Shell Scripting](https://www.youtube.com/watch?v=ur9lAPcbMhs&list=PLY7SzAmnEqp78tsHh1kK0gOx_f-uwQZAT)
 * [Git and GitHub](https://www.youtube.com/watch?v=UpdhourKi3c&list=PLY7SzAmnEqp7P6KHmBKBVNIjZkXMKh_fn)
 * [Networking](https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols)

# 👩‍💻 Programming basics

As with any IT related role it is essential to have fundamental knowledge of programming in general. The programming language itself does not matter that much, but you need to have good understanding of programming paradigms and best practices. 

 * [Python](https://www.digitalocean.com/community/tutorial_series/how-to-code-in-python-3)
 * [Java](https://www.youtube.com/watch?v=7WiJGTPuVeU)
 * [Go](https://www.digitalocean.com/community/tutorial_series/how-to-code-in-go)
 * [PHP](https://www.youtube.com/watch?v=3bVIFVpGPvc&list=PL_UnIDIwT95Oq0ZwgZ1MCkKH2mvsJ11pW&ab_channel=devdojo)

# 🧪 Testing

 * [Unit Testing](https://www.youtube.com/watch?v=flpmSXVTqBI&ab_channel=freeCodeCamp.org)
 * Functional testing

# 📊 Database Fundamentals
Having a solid understanding of SQL, data normalization and ACID transactions is a must for all data engineers.

 * [SQL basics](https://github.com/bobbyiliev/introduction-to-sql)
 * [OLTP vs OLAP](https://www.ibm.com/cloud/blog/olap-vs-oltp)
 * [Horizontal vs vertical scaling](https://stackoverflow.com/questions/11707879/difference-between-scaling-horizontally-and-vertically-for-databases)

## Relational Databases

 * [MySQL / MariaDB](https://www.digitalocean.com/community/tutorials/a-basic-mysql-tutorial)
 * [PostgreSQL](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04)

## Non-relational databases
 * Document: [MongoDB](https://devdojo.com/bo-iliev/introduction-to-mongodb-and-how-to-use-it), [Elasticsearch](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-18-04)
 * Wide column: [Apache Cassandra](https://cassandra.apache.org/_/index.html), [Apache HBase](https://hbase.apache.org/)
 * Graph: [Neo4j](https://neo4j.com/)
 * Key-value: [Redis](https://www.digitalocean.com/community/books/how-to-manage-a-redis-database-ebook), [Memcached](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-memcached-on-ubuntu-20-04)

# 🏠 Data warehouses
 * [Snowflake](https://www.snowflake.com/)
 * [Presto](https://prestodb.io/)
 * [Apache Hive](https://hive.apache.org/)

# 📦 Object storage
 * [AWS S3](https://aws.amazon.com/s3/)
 * [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces/)
 * [Google Cloud Storage](https://cloud.google.com/storage)

# ⚡ Data processing

## Batch
 * [Apache pig](https://pig.apache.org/)
 * [Apache Arrow](https://arrow.apache.org/)

## Hybrid
 * [Apache Spark](https://spark.apache.org/)
 * [Apache Beam](https://beam.apache.org/)

## Streaming
 * [Materialize](https://materialize.com/) - The Streaming Database for Real-time Analytics
 * [Apache Kafka](https://kafka.apache.org/)
 * [Apache Storm](https://storm.apache.org/)

# 📩 Messaging

 * [RabbitMQ](https://www.rabbitmq.com/)
 * [Apache ActiveMQ](https://activemq.apache.org/)

# 💽 Cluster computing 
 * [Apache Hadoop](https://hadoop.apache.org/) and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html)
 * [MapReduce](https://www.ibm.com/topics/mapreduce)

# ⏲ Workflow Scheduling
 * [Apache Airflow](https://airflow.apache.org/)
 * [Apache Oozie](https://oozie.apache.org/)

# 📺 Monitoring data pipelines
 * [Prometheus](https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04)
 * [Datadog](https://www.datadoghq.com/)

# 👨‍💻 Infrastructure as Code
 * Containers: [Docker](https://devdojo.com/bobbyiliev/the-missing-docker-crash-course-for-developers)
 * Orchestration: [Kubernetes](https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes), [Docker Swarm](https://www.digitalocean.com/community/tutorials/how-to-create-a-cluster-of-docker-containers-with-docker-swarm-and-digitalocean-on-ubuntu-16-04)
 * Provisioning: [Terraform](https://www.digitalocean.com/community/tutorial_series/how-to-manage-infrastructure-with-terraform)
 * Automation: [Ansible](https://www.digitalocean.com/community/books/how-to-manage-remote-servers-with-ansible-ebook)

# 🛫 CI/CD
 * [GitHub Actions](https://github.com/features/actions)
 * [Jenkins](https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-ubuntu-20-04)


# Conclusion

This was inspired by the Data Engineer Roadmap open source repository here:

[https://github.com/datastacktv/data-engineer-roadmap](https://github.com/datastacktv/data-engineer-roadmap)

![](https://github.com/datastacktv/data-engineer-roadmap/raw/master/img/roadmap.png)

I wanted to build upon the roadmap and provide a list of resources for each topic.

Let me know if I've missed anything! Hope you find this useful and make sure to keep learning 🙌

You can follow me on Twitter at: [@bobbyiliev_](https://twitter.com/bobbyiliev_)