5 Essential skills for becoming a Data Engineer
Tags: beginners, datascience, career, dataengineering
Published: 2020-09-19 12:47:05

<!-- wp:paragraph -->
<p>The Data Engineer skills is a hot topic, for everyone interested in becoming a one. The rise of data platforms wouldn't be possible without the data engineer skills, that develop the  infrastructure and tools. The need for specialists in this area is forecasted to only increase, therefore if your are considering on becoming a Data Engineer, those are my 5 essential skills you have to poses. Enjoy!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Programming - <a rel="noreferrer noopener" href="https://www.scala-lang.org/" target="_blank">Scala</a> and/or <a rel="noreferrer noopener" href="https://www.python.org/" target="_blank">Python</a></h2>
<!-- /wp:heading -->

<!-- wp:image {"id":3906,"width":500,"height":268,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large is-resized"><img src="https://bartoszgajda.com/wp-content/uploads/2020/09/scala-python.jpg" alt="" class="wp-image-3906" width="500" height="268"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>The first and the most important skill - programming. The job of a Data Engineer requires to write a significant amount of custom, tailored code, which cannot be otherwise generated using fancy GUI software. The ability to code and to create readable, clean and scalable code is a must.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>I have chosen two programming languages here: Scala and Python. I am not going to lie, that Scala is my personal favorite (if you haven't guessed already by the number of posts on this topic :)) although Python is also a good choice. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Some of the Data Engineering frameworks have been written in Scala (eg. Apache Spark), and it works great when you need more control over the code.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Python is probably much easier to start with and generally more newbie friendly, although it has some performance issues, which in data world might be critical.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A good option is to learn one of those to a proficient stage, and other one to at least basics - it is always better to have another tool under your belt, even tough it might not be as good as others.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you are looking to learn Scala, be sure to check out <a href="https://bartoszgajda.com/2020/05/03/5-best-resources-to-learn-scala/">my post</a> that explains where to start from.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Data Manipulation - <a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/SQL" target="_blank">SQL</a></h2>
<!-- /wp:heading -->

<!-- wp:image {"id":3908,"width":200,"height":200,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large is-resized"><img src="https://bartoszgajda.com/wp-content/uploads/2020/09/sql.png" alt="" class="wp-image-3908" width="200" height="200"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Despite the fact that in data world there is a flood of semi and unstructured data, SQL is still the de facto data manipulation language. Whether you are working with relation database, data warehouse or a processing engine like Spark - SQL is widely supported.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Some of the technologies use their own variations of SQL, like a CQL in Cassandra distributed database system, and there isn't anything on the horizon that would make SQL go away.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Not all data engineering tasks are focused on building fancy Machine Learning pipelines, or Stream Processing. Lots of simple problems can be solved by writing a SQL query. Modern SQL engines can handle automatic optimization of those queries, which is great if high performance programming is not your strong skill.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Processing Engine - <a rel="noreferrer noopener" href="https://spark.apache.org/" target="_blank">Apache Spark</a></h2>
<!-- /wp:heading -->

<!-- wp:image {"id":3909,"width":256,"height":133,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large is-resized"><img src="https://bartoszgajda.com/wp-content/uploads/2020/09/spark-1024x533.png" alt="" class="wp-image-3909" width="256" height="133"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>The third element on the list, is probably my favorite - Apache Spark processing engine. As a Data Engineer you don't want to reinvent the wheel - you want to use the framework that is capable of solving majority of problems in unified and repeatable way. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The days of Hadoop's MapReduce are long gone, and the Apache Spark is something you should focus on. It is the most popular general purpose processing engine, that can to ETL, batch and streaming processing, machine and deep learning and many more.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The nice thing about Spark is that it supports 3 languages: Java, Scala and Python. R is also supported by to lesser extend. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Learning Apache Spark may seem cumbersome at the start, but once you get a good grasp of the basics, it's very pleasant to work with. However, once you will go to the advanced topics, like optimization, various types of testing and deployment, the learning curve becomes quite steep.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If your are looking for a quick intro on how to get started with Spark, check out <a href="https://bartoszgajda.com/2019/07/05/setting-up-intellij-idea-for-apache-spark-and-scala-development/">my post</a> on it.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Cloud - <a rel="noreferrer noopener" href="https://aws.amazon.com/" target="_blank">AWS</a> or <a rel="noreferrer noopener" href="https://cloud.google.com/" target="_blank">GCP</a> or <a rel="noreferrer noopener" href="https://azure.microsoft.com/en-gb/" target="_blank">Azure</a></h2>
<!-- /wp:heading -->

<!-- wp:image {"id":3910,"width":512,"height":220,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large is-resized"><img src="https://bartoszgajda.com/wp-content/uploads/2020/09/cloud-1024x439.png" alt="" class="wp-image-3910" width="512" height="220"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>I hope I don't have to convince you that cloud is now everywhere. The data platforms and data engineering pipelines are no different - lots of those utilize cloud services.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Storing data on AWS S3, streaming data with GCP Pub/Sub or storing data in Azure Cosmos DB - those combinations are frequently found in lots of commercial systems. Whether you are just starting with the cloud, or have some previous experience - being a data engineer means using the cloud regularly.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Out of those three, the AWS is probably the safest choice. It's the most popular, has the most services, is widely known and there are lots of tutorials that can guide you through. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>My personal favorite however is the Google Cloud Platform - it's extremely developer friendly, has an awesome selection of services and access to the most advanced AI and ML products. Google is pushing strongly into the cloud territory and I for a good reason - companies like the flexibility and agility it gives to developer teams.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For the Azure, I don't have a lot of experience using it, so I leave this choice to you. Although I know that they work closely with Databricks, a company behind Apache Spark, and this might bring some interesting advances in data engineering field.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you are considering learning GCP and getting ACE certified, be sure to check <a href="https://bartoszgajda.com/2020/07/13/5-best-study-resources-for-gcp-ace-exam/">my post</a> on best resources to prepare for the exam.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Deployment - <a rel="noreferrer noopener" href="https://www.docker.com/" target="_blank">Docker</a> and <a rel="noreferrer noopener" href="https://kubernetes.io/" target="_blank">Kubernetes</a></h2>
<!-- /wp:heading -->

<!-- wp:image {"id":3911,"width":394,"height":154,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large is-resized"><img src="https://bartoszgajda.com/wp-content/uploads/2020/09/docker-k8s.png" alt="" class="wp-image-3911" width="394" height="154"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Last but not least - the deployment. And even more precisely - containerization. The Docker and Kubernetes are combination that made the containers a sensible alternative to cumbersome VMs and clusters, like in the old days. Now, companies want to ship their products fast, and be ready to scale when business is getting traction, therefore scalable deployment is a must.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Docker will help you pack your applications into a containers, that can be easily scaled up or down, depending on a need. Kubernetes handles the orchestration of clusters of containers - in the end data platforms are quite complicated beings, with lots of moving parts and you want to ensure they are prepared for extra demand and resilient to failures.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you are looking for some nice tips and tricks when working with Docker, be sure to check out <a href="https://bartoszgajda.com/2019/09/06/5-docker-most-useful-commands/">my post</a> on this.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Summary</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>I hope you have found this post useful. If so, don’t hesitate to like or share this post. Additionally, you can follow me on my social media if you fancy so&nbsp;:)</p>
<!-- /wp:paragraph -->