Data Engineering - ازاي ابدأ
10-minute read
المقال بينقسم لخمس اجزاء رئيسية
١. مقدمة
٢. يعني ايه Data Engineering؟ ومحتاج ايه علشان ابدأ في المجال؟٣. حاجات مطلوب تتعلمها علشان تبدأ المجال
٤. مساري الشخصي لبداية المجال
٥. حاجات بتمني الزمن يرجع علشان ماغلطش فيها تاني
-- توضيح: المقال ده يختص بال Data Engineering تحديداً - مش ال Data Science وفروعها أو ال Data Analysis بصفة عامة.
-- توضيح تاني: المقال ده مش بيسرد أهمية المجال أو مُستقبله - المقال بيحاول بس يحطك علي أول الطريق علشان تبقي Data Engineer. لو حابب تعرف اكتر عن الوظائف المتاحة علي مستوي العالم لل Data Engineers جرب تدور علي Linkedin او Glassdoor او Indeed.
-- توضيح تاني: المقال ده مش بيسرد أهمية المجال أو مُستقبله - المقال بيحاول بس يحطك علي أول الطريق علشان تبقي Data Engineer. لو حابب تعرف اكتر عن الوظائف المتاحة علي مستوي العالم لل Data Engineers جرب تدور علي Linkedin او Glassdoor او Indeed.
-- ١. مقدمة --
- انك تتعلم ازاي تتعامل مع Big data عامل بالظبط زي النضج الفكري لما بتكبر في السن وتبدأ تبص للحياة بمنظور مختلف. بدأت بشوية معادلات Vlookup في ال Excel وكام Query في ال Database بتاعتك وحاولت تلاقي حل لكل مشكلة بتقابلك .. ولكن حلك للمشكلة بيبوظ كل ماحجم وسرعة استقبال وتخزين ال Data بيكبر فبدأت تفكر في حلول تانية للمشاكل اللي بتقابلك.- مشكلة بتقابل معظم الناس اللي حابين ومؤمنين بمجال Data Science هي انه بيدخل في المجال من غير اصلا مايعرف الفرق بين Data Analyst ، Data Engineer و Data Scientist . كل دور من التلاتة مهم جدا في بناء اي Data Model لاستخدامه في التطبيقات المختلفة في ال Machine Learning أو ال Artificial Intellegince.
لو حابب تعرف اكتر عن الفرق اتفرج علي الفيديو ده:https://youtu.be/oXT8luCbuQ4
- ال Data Engineers مش شرط يكون عندهم كل مهارات ال Computer Science او مهارات Mathematical و Statistical ولكن شرط جداً يفهموا الأساسيات. المهم يكون عندهم مهارات Problem solving و Designing Large Scale Systems و Data Structures.
- معلومة مهمة : بناءاً عن تجربتي الشخصية في الخوض في المجال ده .. اقدر اقول وأجزم إن مفيش مسار معين بيقودك للإحتراف وهيخليك فخر العرب. انت ممكن تاخد مساعدات بسيطة زي المقال ده مثلا او من ال Mentor بتاعك في الشغل ولكن محتاج تبني لنفسك مسار خاص بيك باستخدام شغفك وحبك للتعلم . بكرر مرة تانية .. ابدأ كون اكبر كمية من المعلومات عن المجال قبل ماتبدأ وتذاكر حاجة معينة وبعدها ارسم مسار خاص بيك (المجال جديد وكل الناس بتحاول جاهدة تتميز فيه عن طريق الاستكشاف).
-- ٢. يعني ايه Data Engineering؟ ومحتاج ايه علشان ابدأ في المجال؟ --
- قبل اي Model ممكن نعمله، قبل مايكون في Cleaning و Wrangling لأي جزء من ال Data، قبل كمان ماييجي دور ال Data Scientist; بييجي دور ال Data Engineer كعامل مهم جدا في استقبال ال Data من مختلف المصادر وتخزينها في المكان الصح بحيث نقدر نوصلها بعد كده .. (الراجل بيهتم بجمع الداتا وتخزينها بشكل منظم اكتر من انه يعمل عليها عمليات حسابية او تحليل في المرحلة دي).
- ال Data Engineer مُطالب انه يعرف عدد لا بأس به من ال Technologies المختلفة ويكون عارف امتي يستعمل كل واحدة في الوقت المناسب . (دي بالنسبالي كانت اهم نقطة .. اعرف وافهم كويس كل Technology متاحة وازاي ممكن تكلم Technology تانية ) ال Use cases مختلفة وكتيرة والشاطر اللي يعرف يستخدم ايه في الوقت المناسب.
- طيب ليه مانقدرش نعمل كده باستخدام ال DBMS العادية ؟
ببساطة لان حجم ال Data اللي مطلوب منك تكون قادر علي التعامل معاها كبير جدا .. والاهم من كده انها بتيجي بسرعة جدا جدا وبتيجي من اكتر من مصدر مختلف وبصورة مختلفة Unstructured.
معلومة : ال Data Engineer بيتعامل مع Cluster مكون من اكتر من Machine علي عكس ال RDBMS وعلشان كده لازم يكون فاهم ال Distributed System علشان يوصل بالنتيجة لاكبر كفاءة ممكنة . (مش معني كده انك تقوم تذاكر Distributed System ولكن المهندسين الأذكياء لازم يكون عندهم تحليل لكل شيء بيحصل اثناء تخزين ال Data اللي جاية من المصادر المختلفة ).
- يعني ايه اكتر من مصدر مختلف؟
يعني مثلا Unstructured Data و Semi-structured Data و Structured Data جايين من اكتر من مصدر زي Json files و XML و TXT و حاجات تانية .. ومطلوب من ال Data Engineer يحطهم في مكان موحد، فبالتالي بيبدأ يكتب Pipelines بتعمل Processing لكل جزء من ال Data علشان يطلعلنا في الآخر CSV جميل محدش حاسس بمدي المعاناة اللي تعبناها علشان يطلع بالشكل ده :)
* حاجة من الحاجات المهمة ومطلوبة من ال Data Engineer هي تصميم ال Data Warehouse وكتابة Pipelines لكل خطوة بداية من استقبال ال Data و عملية ال Processing وتخزينها .
-- ٣. حاجات مطلوب تتعلمها علشان تبدأ المجال --
مش لازم In depth ولكن اللي تحبه اقرأ اكتر عنه :) في القائمة الجاية هذكر الحاجة و Course او Website انا جربته واستفدت منه .. علي الرغم من انك تقدر تدور وتلاقي حاجة تحبها احسن :
• Linux : لازم تبقي مرتاح و متعود علي ال Commands الاساسية والمشهورة.
افضل حاجة تعملها هنا انك تجرب بايدك. كبداية ممكن تستعين بال Cheatsheets .
• محتاج تعرف تكتب حاجة اساسية من ال ٣ دول : (Scala, Java, Python): تكتب هنا اقصد انك تقدر تفهم اي Code كويس علي github وتقدر تبني Word Count لوحدك.
• محتاج تعرف كويس SQL - اقصد هنا Advanced SQL .
موقع جميل جدا بيبدأ معاك من ال Basics لل Advanced :
https://sqlzoo.net/
• محتاج تعرف يعني ايه Distributed System والفرق بينها وبين الانظمة العادية .
افضل شيئ ممكن تعمله هنا انك تفهم ال HDFS ومكوناته الاساسية .
• محتاج تعرف الادوات اللي بتتسخدم في Data Ingestion زي Kafka او Google Pub/Sub:
من ال Courses الكويسه جدا جوجل عملته: http://bit.ly/2FrzfSc
ال Course ده فرصة حلوة لو عايز تاخد فكرة برده عن ال Cloud اللي مهمة جدا لاي Data Engineer ايا كان الأداة اللي بتستعملها ايه.
• محتاج تعرف الادوات اللي بتستخدم في Data Processing زي Spark , Beam.
• محتاج تعرف تتعامل مع ال Data warehouse زي Hive وGoogle Big query.
• محتاج تعرف تتعامل علي Storage Engine زي HDFS و Hbase و Cassandra.
اي Technology من اللي ذكرتهم فوق .. افضل مكان ممكن تتعلمها منه هي ال Website الرسمي بتاعها.
ودي حاجات جامعة النيل من Cloudera في Spark, Hive, Sqoop وطبعا Hadoop :
http://bit.ly/2DbBsPh
-- انا مازلت محتار .. اعمل ايه --
- ابدأ اختار مشكلة بتحبها دورلها علي Public Dataset وفكر ازاي هتحلها. ابني اكتر من System في خيالك وعلي الورق .. افشل فيهم وافشل اكتر عدد ممكن علشان تتعلم الحل الامثل للوصول لنتيجة مثالية . اي حد يقدر ياخد Courses كتير اونلاين ومش اونلاين ولكن المشاكل اللي بتواجهنا اثناء المشاريع هي افضل مثال حي نقدر نتكلم فيه عن المشاكل اللي قابلتنا سواءا كان في مقابلة عمل او مع صديق ليك.
-- ٤. مساري الشخصي لبداية المجال --
• بدأت بفهم مصطلح ال Distributed Systems عن طريق فهم Hadoop و Map reduce بالقلم الورقة وبعد كده طبقت اللي اتعلمته علي Cloudera Quickstart VM بإستخدام Java.
http://bit.ly/2CntbX3
* كان عندي فضول افهم ال Data Analysts بيعملوا ايه .. اخدت Nanodegree علي Udacity واتعلمت فيها R وWrangling in Python و Tableau .
* قدرت اكتب اول Analysis Document وكنت مبسوط جدا لانها حاليا رقم ٣ في ترتيب ال Kernels علي واحدة من ال Kaggle dataset :
* قدرت استعمل Tableau وعملت Dashboard عن تأخير الطيارات في مطارات امريكا:
* رجعت تاني بعمق لل Data Engineering وبدأت اقرأ علي ماقدر وافهم فايدة ال Technologies اللي ممكن استعملها مع Hadoop و من ضمن كل ال Tools دي حبيت Spark و Beam وبدأت لأول مرة احل مشاريع ومشاكل معقدة استخدامهم .. واحد من افضل ال Courses علشان تتعلم Spark باستخدام Scala كان ده: http://bit.ly/2TT7Coe
-- ٥. حاجات بتمني الزمن يرجع علشان ماغلطش فيها --
- هبدأ بمشروع انا بحبه .. هبدأ بمشكله محتاجلها حل .. مش هبدأ ب Course . المتعة الحقيقية لما تشتغل بايدك وتشوف نتاج عملك .. تقدر تعمل بحث علي github باسم ال Tool اللي في دماغك وهتلاقي مشاريع كتير غيرك عملها .. استفيد منها واقراها كويس وابدأ اعمل زيها وحدك. تقدر تقول اعمل علي قد ماتقدر Code Review.
- ماضيعش وقت كتير في مشاكل Comptability بين ال Versions المختلفة لكل Bigdata tool .. لوالزمن رجع بيا هستخدم ال Cloud في كل مشروع هبدأه .. ده كمان بيقلل الوقت المبذول والمنتظر قدام جهازي التعبان .
- اتعلم امتي وازاي اسأل .. اشترك واساعد الناس علي Stack overflow .
- حط لنفسك هدف وليكن انك تمتحن امتحان معتمد زي Cloudera او Google Cloud Data Engineer Professional او IBM Professional Certification Program.
-- كلام تنمية بشرية مالناش دعوة بيه --
محدش هيتعلم بالنيابة عنك .. اجتهد ثم اجتهد .. زي ماوضحت قبل كده المجال جديد والكل بيستكشف فيه .. دي فرصة حقيقية علشان تعرف حاجات جديدة .
لو عجبك المقال وحسيت انه بداية كويسة شاركه مع زمايلك و فرحني وسيبلي تعليق .. ولو عندك تعليق او تعديل شاركني بيه هكون سعيد جدا لتعديل المقال علشان يتحسن ويساعد ناس اكتر ..
شكراً لكل من ساهم في نشر المقال .. لو استفدت بجزء بسيط، اتمني الدعاء لوالديٌ بالرحمة والمغفرة.
زكاة العلم نشره