Data Engineering Series #1: 10 Key tech skills you need, to become a competent Data Engineer.
Tags: dev, career, machinelearning
Published: 2020-05-19 04:41:53

Bridging the gap between Application Developers and Data Scientists, [the demand for Data Engineers rose up to 50% in 2020](https://www.datanami.com/2020/02/12/demand-for-data-engineers-up-50/), especially due to increase in investments on AI based SaaS products.
 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/elt76s4dd15d8mcimf8q.png)

<blockquote>
After going through multiple Job Descriptions and based on my experience in the field , I have come up with the detailed skill sets to become a competent Data Engineer. 
</blockquote>

If you are a Backend Developer, some of your skills will overlap with this list below. <b>Yes</b>, it's quite easier for you to make the jump provided the skill gaps are addressed.

<h3 align="center"> :dart: Must Haves</h3>

<b> 1️⃣ The Art of Scripting and Automating </b>
Can't stress this enough. 
Ability to Write a reusable code and to know the Common Libraries and frameworks used in Python for:
<blockquote>
        * Data Wrangling operations - Pandas,numpy,re<br>
        * Data Scraping - requests/BeautifulSoup/lxml/Scrapy<br>
        * Interacting with External APIs and other Data Sources, Logging<br>
        * Parallel processing Libraries - Dask, Multiprocessing<br>
</blockquote>

<b>:two: Cloud Computing Platforms</b><br>[The rise of cloud storage and computing has changed a lot for data engineers.](https://www.sisense.com/blog/data-engineering-today-all-about-the-cloud/) So much that, being well versed in at least one of the cloud platforms is required. 
 
<blockquote>
*Serverless Computing, Virtual Instances, Managed Docker and Kubernetes Services<br/>
* Security Standards, User Authentication and Authorization, Virtual Private Cloud, Subnet 
</blockquote>

- <i>Either start with <b>[AWS](https://www.udemy.com/course/aws-big-data/?utm_source=adwords&utm_medium=udemyads&utm_campaign=LongTail_la.EN_cc.INDIA&utm_content=deal4584&utm_term=_._ag_77882236223_._ad_387397828060_._kw__._de_c_._dm__._pl__._ti_dsa-1007766171032_._li_9061899_._pd__._&matchtype=b&gclid=CjwKCAiAzJLzBRAZEiwAmZb0app7tODlXWDk89Zpdcgj6QDgpnubj7aURaUQTgXjz3RkUy_TRKrlTxoCBFwQAvD_BwE)</b> or <b>[GCP](https://www.coursera.org/professional-certificates/gcp-data-engineering)</b> services. 

<b>:three: Linux OS </b>
Importance of Working with Linux OS is often overlooked. <br/>["90% of the public cloud workloads are running on Linux based OS"](https://www.redhat.com/en/resources/state-of-linux-in-public-cloud-for-enterprises) 
<blockquote>        
        * Bash Scripting concepts in Linux like control flow, looping, passing input parameters<br>
        * File System Commands<br>
        * Running daemon processes<br>
</blockquote>

<b>:four: Database Management - Relational Databases, OLAP vs OLTP, NoSQL</b>

<blockquote>
        * Creating tables, Read,Write,Update and Delete operations, joins, procedures, materialized views, aggrgated views, window functions<br>
        * Database vs Data warehouse. Star and snowflake schemas, facts and dimension tables.<br>
</blockquote>
- <i> Common Relational Databases preferred - <b>PostgreSQL, MySQL etc</b></i>

<b> :five: Distributed Data Storage Systems </b>
<blockquote>
        * Knowledge of how distributed data store works.<br>        
        * Understanding the Concepts like partitioned data storage, sorting key, SerDes, data replication, caching and persistence.
</blockquote>
- <i> Some of the mostly used ones - <b>HDFS, AWS S3 or any other NoSQL database (MongoDB, DynamoDB,Cassandra)</b></i>

<b> :six: Distributed Data Processing Systems </b>
<blockquote>
        * Common techniques and patterns for data processing such as partitioning, predicate pushdown, sort by partition, maintaining size of shuffle blocks, window function <br>
        * Leveraging all cores and memory available in the cluster to improve concurrency.
</blockquote>
- <i> Common Distributed processing frameworks - <b>Map Reduce, Apache Spark</b> (Start with Pyspark if you are already comfortable with Python)
<br>
Credits : startdataengineering
<br>
<b> :seven: ETL/ELT tools and Modern Workflow management Frameworks</b>
Different companies will have different ways to pick ETL frameworks, 
One with an In-house data engineering team would prefer to have ETL jobs set up with properly managed workflow management tools for Batch Processing.    
<blockquote>
* ETL - ETL vs ELT, Data connectivity, Mapping, Metadata, Types of Data Loading <br>
* When to use a Workflow Management System - Directed Acyclic graphs, CRON scheduling, Operators
</blockquote>
      
- <i> ETL Tools: <b>Informatica, Talend</b></i>
- <i> Workfow Management Frameworks: <b>Airflow, Luigi</b></i><br/><br/><br/>


<div align="center"><h3>:dart:Good To Have</h3></div>

<b>:eight: JAVA / JVM Based Frameworks </b>
Knowledge of a JVM based language such as <b>Java or Scala</b> will be extremely useful
<blockquote>
        - Understand both functional and object oriented programming concepts<br>
        - Many of the high performance data science frameworks that are built on top of Hadoop usually are written using Scala or Java.
</blockquote>
- <i> JVM Based Frameworks - <b>Apache Spark, Apache Flink</b>, etc </i>

<b>:nine: Message Queuing Systems </b>
<blockquote>
        * Understanding how data injestion happens in Message Queues<br>
        * What are Producer and Consumers and how are they implemented<br>
        * Sharding, Data Retention, Replay, de-duplication
</blockquote>
- <i> Popular Messaging queues: <b>Kafka,RabbitMQ, Kinesis, SQS etc</b></i>

<b>:keycap_ten: Stream Data Processing </b>
<blockquote>       
*Differentiating between Real-time, Stream and Batch Processing.<br/>
*Sharding, Repartioning, Poll Wait time, topics/groups,brokers
</blockquote>
- <i> Commonly used frameworks: <b>AWS Kinesis Streams,Apache Spark,Storm,Samza</b> etc</i>




If you find any other skill that will be helpful, comment below on the post.


Going forward, I'll publish detailed posts on tools and frameworks used by Data Engineers day in and day out. 



<img src="https://media.giphy.com/media/J4zA6LplubvC5weDyo/giphy.gif" width="120" height="120"/>
Follow for updates.