Làm data engineer, có chữ data trong đó thì đương nhiên bạn phải hiểu về data rồi. Có những thứ cơ bản mà bạn có thể đã được học ở trường trong các môn về giải thuật và cơ sở dữ liệu, mình sẽ liệt kê một vài điểm quan trọng ở đây:
- Các loại database, khi nào dùng cái nào, cách hoạt động của database ra sao
- Cách người ta tổ chức dữ liệu trong database cho các hệ thống vận hành như thế nào (cách thiết kế database, quan hệ, cardinality - không biết dịch tiếng Việt là gì, normalization…)
- Cách người ta tổ chức lưu và tăng tốc truy cập, tăng tốc lưu dữ liệu như thế nào (ví dụ, các loại index? index để làm gì?)
- NoSQL có gì hay, ưu nhược, khi nào dùng, nếu dùng kèm relational database thì sao… các loại NoSQL database người ta đang dùng…
- Hiểu và biết cách thao tác, cấu hình và làm việc với những loại database phổ biến (Postgres, MySQL, SQL Server, có thể là cả Oracle…)
- Biết cách dùng SQL, một cách thành thạo, và phải biết nhiều, làm nhiều, chứ không chỉ là SQL cơ bản. Riêng về SQL, mình đã từng chia sẻ kĩ trong topic: Vì sao bạn nên học SQL, kể cả khi bạn làm marketing, finance, operations chứ không chỉ làm việc data. Hiện tại nhiều công ty ở Việt Nam đã cho các bạn làm business truy cập vào dữ liệu bằng SQL rồi, ngay tại Việt Nam chứ không đâu xa. Nhiều năm trước điều này hiếm ở nước ta, chỉ phổ biến ở Mỹ, Singapore, giờ thì đã về Việt Nam rồi.
Ngày xưa khi mình chưa biết gì về data, mình đi phỏng vấn đã bị hỏi ngay mấy câu về index này kia, choáng luôn, vì trong trường mình không được học đầy đủ như thế, mà lúc đó mình cũng gan, dám nộp hồ sơ vô một thứ mà mình chưa hề biết nhiều. Thế là anh lead quăng cho mấy tài liệu để học, cho thời hạn 1,5 tuần phải biết được mấy mớ đó, còn không thì nghỉ (vì khi đó mình đang xin qua team data làm, trước đó mình không thuộc team này). Cũng may là nhờ có giai đoạn đó mà mình đã hiểu nhiều hơn về bản chất của những thứ mình làm.
Đây chỉ mới là những thứ cơ bản nha, tiếp theo còn có nhiều thứ mà bạn sẽ phải làm hằng ngày, như là:
- Datalake, data warehouse là gì, người ta xài khi nào, ứng dụng ra sao
- Các thiết kế, kiến trúc Data warehouse
- Các công nghệ thường sử dụng làm data warehouse, cả những giải pháp cũ và những giải pháp mới hiện đại
- Giải pháp dành cho data lớn thì nó khác với data nhỏ ra sao, trường hợp nào dùng cái nào
- Các công nghệ, các tool thường dùng để làm data pipeline hiện đại, cách chúng hoạt động, cách dùng, và cách phối hợp với nhau
- Đừng quên cloud: tìm hiểu về các giải pháp cloud mà Google, Amazon, Microsoft đang cung cấp cho mục đích data, ví dụ như Google BigQuery + Cloud Storage, AWS S3 + RedShift…
- Những công cụ thường dùng để làm report, làm dashboard (gọi chung là visualization tool), các bên kinh doanh sẽ dùng nó ra sao, bạn cần chuẩn bị data đầu vào cho nó như thế nào. Thậm chí, ở một số công ty mới bắt đầu đầu tư cho team data, thì có khi bạn phải làm luôn phần này.
Các thứ về software engineering
Đối với mình thì data engineering thực chất là một nhánh của software engineering, nên việc bạn phải hiểu, thậm chí phải bắt tay làm một số thứ về phần mềm là chuyện rất bình thường. Ngoài ra, data cũng thường được sinh ra từ các hệ thống phần mềm, mà để bạn biết được data đó sinh ra như thế nào, vì sao người ta lưu như vậy, vì sao có một số thứ làm được nhưng một số khác thì chưa làm… đều là những vấn đề của software engineering hết.
Khi bạn hiểu và biết những thứ mà các bạn software engineer, hay trong công ty gọi thân quen là mấy bạn dev, thực hiện, bạn sẽ dễ dàng giao tiếp với các bạn ấy hơn khi cần nhờ họ giúp hoặc khi cần hỏi thông tin. Nó cũng giúp bạn hiểu được luồng chảy của dữ liệu qua các hệ thống, thành phần nào chịu trách nhiệm cho cái gì và nó sinh ra data như thế nào.
Sau này, có khi bạn - ở vai trò là data engineer - cũng sẽ phải làm một số việc liên quan đến software engineering, cụ thể là làm web, làm hạ tầng và mọi thứ cần thiết để giúp người dùng data có thể tiếp cận với dữ liệu dễ dàng và nhanh chóng hơn, ít phải làm thủ công hơn, hoặc họ ít phải nhờ bạn những việc lặp đi lặp lại. Đó là một cột mốc mà mình thấy mọi team data engineer rồi sẽ phải dịch chuyển tới, chứ mỗi khi bạn vào công ty thì không chỉ làm mỗi cái data pipeline để load dữ liệu hay để phục vụ mục đích phân tích.
Bạn có thể Google thêm về cách mà các team data platform của Apple, của Netflix, của Airbnb đang hướng tới, dần dần họ chuyển hóa từ những ông làm data pipeline trở thành một team chuyên cung cấp hạ tầng và dịch vụ data, để các team khác trong công ty có thể truy cập vào data đúng thời điểm, chính xác và có thể tự tin vào số để ra các quyết định mới. Đó là lúc mà data engineer chuyển thành một ông dev đúng nghĩa đó 😁 Ở Việt Nam nhiều công ty, kể cả công ty mình đang làm, cũng đã chuyển sang hướng này khi đã đạt tới một độ trưởng thành nhất định về data.
Một số gạch đầu dòng làm từ khóa cho bạn:
- Backend: xây dựng backend server, dùng ngôn ngữ gì cũng được (Python dễ tiếp cận và cũng dùng nhiều trong việc data engineering nè), cách giao tiếp với database, cách tiếp nhận request…
- Front end: người ta xây web bằng các công cụ nào, ReactJS, VueJS, HTML CSS JS nói chung…
- Mobile app: người ta có thể làm ra app trên di động bằng những cách nào, nếu bạn vọc vô luôn thì tốt. Flutter, React Native là những thứ có thể bắt đầu nhanh để hiểu về cách người ta tạo ra mobile app, còn thích nữa thì vọc vô native luôn nếu bạn có thời gian
- Hạ tầng và devops: cách dựng server cơ bản, cài đặt server, cài đặt mạng cơ bản, Docker, K8s, cách scale server khi cần…
- Cloud: cách dùng các dịch vụ cloud, phân quyền, cách dùng các dịch vụ khác bên cạnh dịch vụ về data…
Các thứ về sản phẩm và kinh doanh
Bạn nghe về data thì nghe cái việc nó khá là lạ, nhưng nếu bạn nhìn nó ở một góc khác, góc của sản phẩm số, thì việc bạn đang làm không khác nhiều so với những gì mà anh em developer khác đang làm. Nếu như các anh em dev xây ra những hệ thống, những công cụ, những cái app, cái web cho người dùng xài thì bạn đang “xây” ra data cho những người khác sử dụng. Sản phẩm của bạn chính là data. Khi bạn hiểu về cách mà người ta thường làm sản phẩm số, bạn có thể biết được làm sao để đưa data của bạn đến cho người dùng một cách hiệu quả nhất. Vì đến cuối cùng thì chính mấy ông data engineer là ông giúp cho công ty tiếp cận với data chứ còn ai vào đây nữa.
Bên cạnh đó, khi các sản phẩm số của các công ty bắt đầu được xây ra thì sẽ có nhu cầu thu thập dữ liệu, và khi bạn biết được về quy trình đó, về cách người ta thường làm… thì bạn sẽ dễ dàng biết trước những vấn đề có thể gặp, biết được khó khăn ở từng giai đoạn là gì, từ đó bạn có thể làm việc của mình tốt hơn, cũng như phối hợp với đồng đội ở các bộ phận khác nhuần nhuyễn hơn.
Còn về kinh doanh thì đương nhiên bạn phải biết rồi. Nhiều anh em làm engineer mình biết từ chối không tìm hiểu gì về phần kinh doanh, nhưng với data engineer thì đây không phải là một lựa chọn. Tất cả dữ liệu của bạn được sinh ra là để phục vụ cho kinh doanh, và khi bạn hiểu được một số thứ - dù chỉ là cơ bản thôi - về nghiệp vụ chính của các mảng business thì bạn sẽ dễ dàng hơn khi làm việc với các phòng ban khác. Bạn cũng có thể hiểu hơn về khó khăn mà các phòng ban khác gặp phải, từ đó tạo ra giải pháp data tốt hơn cho bạn.
Cũng vì lý do này mà nhiều trường có ngành hệ thống thông tin, trong đó các bạn sinh viên được dạy cả về kế toán, marketing cơ bản, xác suất thống kê, nguyên lý doanh nghiệp các thứ. Học mấy cái này, khi đi làm data engineer thì bạn có nhiều lợi thế lắm.
Các bạn thấy đó, để làm data engineer thì bạn phải hiểu biết nhiều lĩnh vực, khá là rộng, trong khi vẫn phải rành cái việc chính của mình, tức là phải biết sâu. Nhưng đó là một hành trình rất vui, rất thú vị và bạn học được rất nhiều thứ, cơ hội của bạn cực kì rộng lớn.
Kĩ năng mềm
Cuối cùng là những kĩ năng mềm mà đi làm ai cũng cần: thuyết trình, cách giao tiếp với đồng nghiệp, cách giao tiếp với sếp, cách trình bày vấn đề, cách làm quen với những người khó tính… Những thứ này đi làm rồi dần dần bạn sẽ học được thôi, không khó đâu. Quan trọng là bạn cần nhận thức đó là cái quan trọng và bạn nỗ lực để học là ok. Nhiều công ty giờ cũng có các buổi training cho nhân viên về những kĩ năng này, nếu bạn tìm được những công ty dạng đó thì hay.
Đây chỉ là những cái bao quát nhất, chứ còn chi tiết thì dài lắm. Không biết còn sót gì không :D Anh em nào biết thì bổ sung giúp mình nhé.
datadata engineer