คู่มือเปลี่ยนอาชีพ Data Engineer: อาชีพนี้คือใคร ต้องเรียนพื้นฐานอะไรบ้าง

Share on facebook
Share on twitter
Share on linkedin

ในบทความที่แล้วเรื่อง สายงาน Data Science ต้องทำอะไรบ้าง แอดได้เล่าถึงภาพรวมของงานต่าง ๆ ตั้งแต่ต้นจนจบ Flow ของงานด้าน “วิทยาศาสตร์ข้อมูล” (เห็นที่ไทยคนเรียกกันแบบนี้ แอดว่าคล้าย ๆ Computer Science = วิทยาศาสตร์คอมพิวเตอร์ ดีฮะ)

วันนี้จะมาเล่าถึงสายอาชีพหนึ่งที่ทุกบริษัทด้าน Data ต้องมี แต่คนไม่ค่อยรู้จักกัน พวกเขาเหล่านี้เรียกได้ว่าเป็นทีมงานคนสำคัญที่จะทำให้คนวิเคราะห์ข้อมูลทำงานง่ายขึ้น และเป็นคนที่ส่งเสริมให้ Data Scientist สร้างโมเดล Machine Learning เก๋ ๆ ได้สำเร็จ

Data Engineer คืออาชีพอะไร เค้าทำอะไรบ้าง

แอดเคยเล่าไปแล้วว่า “โปรเจค Data Science คือ การนำข้อมูลมาใช้ให้เกิดประโยชน์กับองค์กร” แปลว่าส่วนผสมที่สำคัญที่สุดทุกโปรเจคอยู่ที่ “ข้อมูล” ล้วน ๆ

ถ้าข้อมูลที่เข้ามาในระบบผิด ๆ เวลาเราเอามาทำโมเดลทำนายผล ก็จะได้ผลผิด ๆ กลับไปครับ กลายเป็นว่าส่งผลเสียให้องค์กรอีก เสียทั้งเวลา แถมได้ผลลัพธ์ที่ไม่ดี หรือที่เค้าเรียกกันว่า Garbage In – Garbage Out (ถ้าใส่ขยะเข้ามา ก็จะได้ขยะออกไป)

อาชีพ Data Engineer เปลี่ยนได้ตอนจ๊อบเลเวล 40 มีหน้าที่หลัก ๆ คือ นำข้อมูลไปเก็บในระบบประเภท Database, Data Warehouse, Data Lakeให้คนวิเคราะห์ข้อมูลทำงานได้ง่าย ๆ โดยข้อมูลที่เข้ามาในระบบต้องถูกต้อง และโปรแกรมดึงข้อมูลต้องทำงานได้ตรงตามเวลาทุกครั้ง

ฟังดูเหมือนจะง่ายครับ แต่จริง ๆ แล้วเป็นงานที่ใช้พลังเยอะมาก ตัวอย่างปัญหาที่เจอในสายงานนี้ก็เช่น:

  • องค์กรเก็บข้อมูลไว้หลายที่ – เราต้องหาวิธีดูดมันมารวมกันให้ได้ แหล่งเก็บข้อมูลแต่ละที่ก็มีช่องทางในการดึงข้อมูลต่างกัน ถ้าเป็น Database อาจจะต้อง Dump ออกมา หรือถ้าเป็นระบบดี ๆ หน่อยอาจจะมี API ฯลฯ
  • องค์กรต้องการนำข้อมูลไปเก็บหลายที่ – บางครั้งเก็บใส่ใน Data Warehouse เพื่อวิเคราะห์ข้อมูลยังไม่พอ ต้องเอาไปเก็บใน Data Lake สำหรับเก็บข้อมูลไว้ระยะยาวด้วย ก็จะเจอปัญหาว่าแต่ละระบบใช้วิธีเก็บไม่เหมือนกัน (เดี๋ยวจะเล่าให้ฟังกันต่อไปว่า Data Warehouse กับ Data Lake แตกต่างกันยังไง)
  • องค์กรมีข้อมูลเยอะ –  มันคือคำว่า “Big Data” ที่เราติดหูกันนั่นเองครับ ปัญหาที่ตามมาเวลามีข้อมูลเยอะ ๆ ก็คือ เราไม่สามารถใช้ Software แบบเก่า ๆ ในการดึงข้อมูลมาเก็บได้ ต้องใช้ท่าซับซ้อนยิ่งขึ้น ปวดหัวคนทำมากขึ้นนั่นเอง

ลองดูตัวอย่างระบบที่ Data Engineer ต้องตบตีกับมันทุกวันครับ อันนี้เป็น Ecosystem ของ Apache Hadoop

คู่มือเปลี่ยนอาชีพ Data Engineer: อาชีพนี้คือใคร ต้องเรียนพื้นฐานอะไรบ้าง 1
ตัวอย่าง Hadoop Ecosystem สำหรับทำงานที่มีข้อมูลเยอะ ๆ ฮะ เห็นได้ว่าลายตามาก – ขอบคุณรูปจากคุณ Shubham Sinha

Data Engineer ต่างกับ Data Scientist ยังไง

(แอดเคยเขียนเรื่องนี้ไปแล้วส่วนหนึ่งในบทความ โลกนี้ไม่ได้ต้องการ Data Scientist แต่ต้องการ Data Engineer)

เพื่อความเข้าใจง่ายขึ้น ลองนึกถึงร้านอาหารที่ต้องมีเชฟกับผู้ช่วยเชฟครับ (ใครนึกไม่ออกไปดู Top Chef Thailand Season 1 ตอนจบฮะ… เชฟตามน่ารักมาก #ผิด)  ผู้ช่วยมีหน้าที่เดินไปจ่ายตลาด คัดเลือกวัตถุดิบ และเอามากลับมาหั่นเป็นชิ้น ๆ เพื่อจัดเตรียม และส่งให้เชฟที่มีหน้าที่มีหน้าที่ของเหล่านั้นมาทำต่อให้กลายเป็นจานอาหารที่น่ากิน

คู่มือเปลี่ยนอาชีพ Data Engineer: อาชีพนี้คือใคร ต้องเรียนพื้นฐานอะไรบ้าง 2
Top Chef Thailand ตอนสุดท้าย ที่ผู้เข้าแข่งขันต้องช่วยกันทำงานเป็นทีม – ขอบคุณรูปจาก one31

Data Engineer ก็เหมือนกับผู้ช่วยเชฟ มีหน้าที่จัดเตรียมข้อมูลจากแหล่งต่าง ๆ มารวมกันไว้ในจุดเดียว โดยต้องทำให้ข้อมูลมีความถูกต้อง และดูแลระบบว่าทำงานได้ไม่เกิดปัญหาอะไร (ในชีวิตจริงนี่ต่อให้เราวางแผนมาดีแค่ไหน เจอข้อมูลเยอะ ๆ วันดีคืนดีก็ล่มได้ครับ T_T)

ส่วน Data Scientist หรือ Data Analyst ก็คือเชฟ มีหน้าที่นำข้อมูลที่จัดเตรียมไว้อย่างดีดั่งแซลมอนนิวซีแลนด์เกรด A นำมาใช้ประโยชน์ต่อ เช่น นำไปใส่เครื่องมือ Visualization แบบ Tableau เพื่อวิเคราะห์ หรือนำไปสร้างโมเดล Machine Learning ด้วยเทคโนโลยีหยุดโลกที่ชื่อ Deep Learning (แต่ปกติจะชอบหยุดคอมคนรันโมเดล มากกว่าหยุดโลก)

ผู้ช่วยเชฟที่เก่ง ก็จะช่วยให้เชฟทำงานได้ง่ายขึ้น เค้าจะเลือกวัตถุดิบที่ดี นำวัตถุดิบสด ๆ มาทำความสะอาด และจัดระเบียบให้เชฟนำไปใช้งานต่อได้ง่าย ด้วยเหตุนี้เองถ้าองค์กรไหนอยากนำข้อมูลมาใช้ให้เกิดประโยชน์สูงสุด ก็ต้องมีทีม Data Engineer ที่แข็งแกร่งครับ

อยากเป็น Data Engineer ต้องมีพื้นฐานด้านไหน

ก่อนจะไปดูว่า Data Engineer ต้องเรียนอะไรบ้าง เรามาดูกันก่อนว่าความรู้พื้นฐานที่ควรมีก่อนจะมาทำสายนี้ เราควรจะเรียนอะไรมาก่อนบ้างครับ (ถ้าพื้นฐานด้านล่างไม่ใช่สิ่งที่เราเคยทำ แอดขอแนะนำว่าควรไปหาความรู้ด้านต่าง ๆ เหล่านี้มาเพิ่มก่อนครับ

พื้นฐาน 1) Software Engineering

data engineer programming software engineer
โปรแกรมมิ่ง ถือเป็นสกิลที่ได้รับความนิยมมากขึ้นเรื่อย ๆ ในยุคปัจจุบัน แถมนำไปใช้ประกอบอาชีพสร้างเงินได้หลากหลายเลยครับ เรียนไว้ไม่เสียหายแน่นอน

Software Engineering ก็คือ ความสามารถในการเขียนโปรแกรม ซึ่ง Data Engineer อาจจะไม่ต้องถึงกับเขียนโค้ดเทพ แต่ก็ต้องเขียนโปรแกรมได้ และอ่านโค้ดเข้าใจในระดับนึงครับ

สำหรับคนที่ไม่มีพื้นฐานโปรแกรมมิ่งมาก่อน แอดแนะนำให้เริ่มจากภาษา Python เป็นภาษาที่เขียนง่าย เหมาะกับมือใหม่ และยังต่อยอดไปทำงานสาย Data Science ได้ทันทีด้วยครับ ขนาดค่าย IT สำหรับเด็กมัธยมปลายที่แอดเคยไปช่วย (ที่ออสเตรเลียนะ) เค้ายังสอน Python เป็นภาษาแรกเลย

และสำหรับ Data Engineer ที่เขียนโค้ดแม่นมาก ๆ ก็จะสามารถพัฒนาไปเป็น Machine Learning Engineer ต่อได้ครับ ลองอ่าน บทสัมภาษณ์ฝน ML Engineer คนไทย เพิ่มเติมได้เลย

พื้นฐาน 2) Database

database er diagram data engineer
ตัวอย่าง Entity Relationship Diagram แบบง่าย ๆ ใช้สำหรับวางแผนออกแบบฐานข้อมูล

Database หรือที่เราเรียกภาษาไทยว่า ฐานข้อมูล เป็นสถานที่เก็บข้อมูลให้เป็นระเบียบนั่นเอง ปัจจุบัน Application จะเก็บทุกอย่างไว้ในฐานข้อมูล แล้วเราที่เป็น Data Engineer ก็มีหน้าที่เอาข้อมูลเหล่านี้ส่งไปเก็บไว้ในฐานข้อมูลสำหรับวิเคราะห์ข้อมูลโดยเฉพาะ เรียกว่า Data Warehouse เพราะฉะนั้นอย่างน้อยเราต้องเข้าใจว่าฐานข้อมูลชื่อดังทำงานอย่างไรบ้าง

สิ่งสำคัญที่ Data Engineer ต้องรู้เกี่ยวกับ Database ก็คือ วิธีการออกแบบ Database, วิธีเขียนและอ่าน ERD (Entity Relationship Diagram), Normal Form แต่ละระดับแตกต่างกันยังไง, วิธีแก้ปัญหา Database เบื้องต้น เท่านี้ก็เพียงพอต่อการทำงานระดับหนึ่งแล้วครับ

นอกจากนั้นต้อง เข้าใจภาษา SQL (Structured Query Language) ซึ่งเป็นภาษาสำหรับดึงข้อมูลที่เรียกได้ว่าเป็นภาษากลางที่ทุกคนที่ทำงานสาย Data จะใช้คุยกัน ไม่ว่าเราจะเป็น Data Scientist, Data Engineer, หรือ Data Analyst ก็ต้องเข้าใจ SQL ทั้งนั้นครับ

สำหรับคนที่ไม่มีพื้นฐานด้านฐานข้อมูลมาก่อน แอดแนะนำให้หาแหล่งเรียนฟรี เช่น Youtube Video เกี่ยวกับ SQL ภาษาไทย ครับ

ความรู้ด้านฐานข้อมูลจะนำไปต่อยอดถึงเรื่อง Data Lake และ Data Warehouse ซึ่งเป็นหัวใจสำคัญของอาชีพนี้เลย

พื้นฐาน 3) Unix Shell Script

14124901 273649006353497 8860960516488507400 o
ภาษานี้ใช้บ่อยมาก ๆ โดยเฉพาะเวลาทำ Big Data

ระบบคอมพิวเตอร์ไม่ว่าจะอลังการแค่ไหน สุดท้ายแล้วมันก็เกิดจากหน้าจอขาว – ดำที่มีแต่ตัวหนังสือยาว ๆ อ่านไม่ค่อยออก แบบในหนังที่มีแฮคเกอร์นั่นแหละครับ ซึ่งภาษาที่เราเห็นในหน้าจอแบบนี้ คือ Shell Script

ภาษา Shell Script เราไม่ได้ใช้เหมือนกับภาษาโปรแกรมมิ่งสำหรับงาน Data Science อย่าง Python หรือ R ซะทีเดียวครับ โดยปกติเราจะเอาไว้จัดการระบบ เช่น เช็ค IP Address, เช็คทรัพยากรในระบบ หรือใช้จัดการไฟล์ เช่น ลบไฟล์ ย้ายไฟล์ ก็อปปี้ไฟล์ ฯลฯ

บางคนอาจจะเคยเรียนวิชาที่เขียนโค้ดแบบ cd, ls, mkdir พวกนั้นก็คือ Shell Script ครับ แอดเคย รวบรวม Shell Script ที่ใช้บ่อย ๆ ไว้ใน Facebook Page ครับ เดี๋ยวมีโอกาสจะนำมาสรุปเป็นบทความอีกที

สาเหตุที่ Shell Script จำเป็นอย่างยิ่งสำหรับงาน Data Engineer เพราะงานสายนี้ต้องทำงานกับไฟล์และโฟลเดอร์ในระบบบ่อย ๆ ครับ และบางครั้งทำ Big Data ไฟล์ใหญ่มาก การสั่งคำสั่งต่าง ๆ ใน Shell Script จะรองรับการทำงานกับไฟล์ใหญ่ ๆ ได้ดีกว่า ถ้าเปิดในโปรแกรมทั่วไปก็ค้างแน่นอนครับ

นอกจากนั้น ระบบ Infrastructure ของ Big Data ทั้งหลาย เช่น ระบบ Hadoop ที่แอดลงรูปไว้ข้างบน ส่วนใหญ่ระบบพวกนี้ไม่มีหน้าตาโปรแกรมสวย ๆ ให้ใช้นะครับ เราต้องเขียน Shell Script ควบคุมมันซะเป็นส่วนใหญ่ เลยทำให้ความรู้ Shell Script เป็นสิ่งที่ขาดไม่ได้เลยครับ หรือใครมาสายระบบ Cloud Computing ก็หลีกเลี่ยง Shell ไม่ได้เหมือนกันครับ

สำหรับบทความนี้ ก็ขอจบแต่เพียงเท่านี้ก่อนครับ ใบทความต่อไปเราจะมาดูกัน หัวข้อที่คิดไว้ก็เช่น:

  • Data Engineer ต้องเรียนอะไรบ้าง
  • Ecosystem ของ Hadoop ประกอบไปด้วยอะไรบ้าง? Hadoop กับ Spark ต่างกันยังไง
  • SQL Database กับ NoSQL Database ต่างกันยังไง
  • Data Warehouse กับ Data Lake ต่างกันยังไง

ถ้าใครอยากอ่านเรื่องไหนเพิ่มเติมก็คอมเม้นท์ไว้ หรือบอกแอดมินมาใน Inbox Facebook Page Data Science ชิลชิล ได้เลยนะครับ เดี๋ยวจัดให้ครับ

Leave a comment

อ่านจบแล้วอยากพูดคุยต่อ? พิมพ์ไว้ตรงนี้ได้เลย แอดมาอ่านทุกอันครับ