Nhiệm vụ của bạn là làm những việc liên quan tới dữ liệu. Thường ở các công ty ở Việt Nam và nước ngoài, ông data engineer sẽ xây dựng các luồng dữ liệu để phân tích, để vận hành, để tích hợp các hệ thống với nhau, để đồng bộ dữ liệu giữa nhiều hệ thống riêng lẻ. Một số việc có thể sẽ trùng với việc của các bạn software engineer (phát triển phần mềm) hoặc các bạn làm hệ thống backend, nhưng không sao cả, cùng là dân engineer cả. Có bài toán thì phải giải thôi, chứ đừng quá phân biệt chuyện đó.
Vai trò của data engineer dễ thấy nhất và đang được tuyển dụng nhiều nhất là xây dựng luồng dữ liệu (data pipeline) để phục vụ cho nhu cầu phát triển data warehouse - một loại chỗ lưu trữ đặc biệt dùng cho mục đích phân tích, theo dõi số liệu, lên báo cáo, dashboard và phục vụ một vài việc về vận hành. Data pipeline sẽ mang dữ liệu từ những chỗ khác nhau về data warehouse, trong quá trình đó có thể sẽ cần dọn dẹp dữ liệu một chút.
Ngoài ra, bạn cũng có thể thấy data engineer làm nhiệm vụ đem dữ liệu từ một hệ thống A sang hệ thống B để phục vụ cho một tính năng mới. Ví dụ, hệ thống gợi ý cho tab ForU của Tinh tế cần dữ liệu về follow, về bài bạn đã đọc, về hành vi của bạn trên app và web Tinhte.vn. Dữ liệu này sẽ được mang từ hệ thống chính sang hệ thống ForU (với một loại database đặc thù bên dưới) thì thuật toán mới chạy được. Nếu không có data pipeline để di chuyển dữ liệu thì thuật toán này sẽ không bao giờ có thể hiện thực hóa, hoặc phải làm thủ công và ảnh hưởng rất nhiều tới tốc độ xử lý.
Nói chung, data engineer làm hết mọi thứ về kĩ thuật liên quan tới data. Một số bạn đủ giỏi, hoặc khi công ty cần, có thể sẽ làm thêm một chút về AI đơn giản. Cái này thì tùy khả năng của mỗi người. Một số công ty quy mô nhỏ thì ông làm data engineer cũng có khi đi xây dựng báo cáo, dashboard luôn. Quan điểm của mình là công ty cần cái gì thì làm cái đó, và khi bạn làm tốt được nhiều việc thì lương bạn sẽ cao hơn. Vậy thôi, tất cả đều quy về tiền hết
Làm data engineer có phải là làm Big Data không? Big Data hay Small Data gì thì cũng là data. Quan điểm của mình là không phân biệt hai vai trò này, miễn là data thì bạn phải xử lý được. Tùy theo lượng data lớn hay nhỏ mà bạn sẽ có lựa chọn công cụ phù hợp, cái nào không biết thì học tiếp, không có gì phải lo lắng. Suốt ngày đi coi cách làm Big Data xong lại không để ý tới Small Data thì cũng căng, nhất là khi đa số doanh nghiệp cả ở VN lẫn thế giới chưa chắc gì đã có "Big Data" cho bạn làm.
Data warehouse là cái bạn sẽ xây nên, nên bạn phải hiểu nó là đương nhiên. Bạn cần biết về kiến trúc data warehouse, cách chúng vận hành, cách chúng thực thi các câu lệnh SQL của bạn, cách lấy dữ liệu ra và đưa lên những hệ thống báo cáo / visualization. Hiện nay data warehouse trên cloud đang được nhiều công ty sử dụng, thế nên bạn cũng cần coi Google BigQuery, AWS RedShift, Snowflakes, và những thứ tương tự.
Nói về SQL, đây là cái bạn dùng để tương tác với data, để lấy data ra, để chuyển hóa data. SQL là công cụ mà bạn bắt buộc phải giỏi nhất công ty. Bạn làm sao mà mọi người cần hỏi về SQL phải đi hỏi bạn là ok. SQL là cái sống còn với data engineer nhé.
Ngoài ra, bạn cũng cần tìm hiểu về kĩ thuật ETL và ELT. Đây là hai cách tiếp cận khác nhau trong việc thu thập, chuyển hóa dữ liệu để sử dụng cho nhiều mục đích khác nhau. ETL và ELT là 2 từ khóa quan trọng mà data engineer không được dở. Bạn phải biết cách làm của chúng nhé. Google giờ có nhiều bài nói về vụ này, bạn cũng có thể học chúng trong các khóa học online dễ dàng.
Bạn làm data engineer thì bạn cũng cần biết được những hệ thống sinh ra data nó chạy ra sao, người ta làm nó bằng cách nào. Thế nên một ông làm data engineer cũng nên biết hệ thống front end (web, app) và backend được xây dựng ra sao, dùng ngôn ngữ gì, thậm chí bạn phải vọc vào và vọc nhiều để hiểu. Khi bạn có hiểu biết thì bạn mới có thể giải quyết được những vấn đề xảy ra khi làm việc của data engineer. Bạn lâu lâu sẽ cần hỏi bên lập trình xem dữ liệu đó họ tạo ra nó bằng cách nào, nó đi qua những hệ thống nào, có những điều kiện gì sinh ra dữ liệu đó. Nếu bạn không hiểu thì việc giao tiếp này khó khăn lắm.
Ngoài ra, đến một lúc nào đó, bạn sẽ muốn đưa data của mình cho nhiều người dùng hơn, giúp công ty sử dụng data hiệu quả hơn nhưng công cụ không có sẵn. Hoặc chỉ đơn giản là bạn muốn tự động hóa công việc của mình cho tiết kiệm thời gian, giảm sai sót. Đây là lúc mà hiểu biết về phát triển phần mềm sẽ giúp bạn.
Chưa kể những công việc của data engineer liên quan tới data pipeline cũng cần sử dụng các ngôn ngữ lập trình thường thấy trong việc xây dựng backend để làm. Hiện nay rất nhiều data pipeline được xây nên nhờ Python, Java, Scala.., và tụi nó cũng là cái dùng để làm ra backend của các hệ thống đấy. Học một được hai là vậy.
Một số từ khóa có liên quan: biết về Python, biết về lập trình web, lập trình backend (PHP, Python, Java…), biết về database
Dữ liệu được chứa trong cơ sở dữ liệu, và đương nhiên bạn phải hiểu biết về lĩnh vực này thì mới làm tốt được công việc của mình. Bạn phải biết được cách vận hành của các loại database lớn hiện nay (MySQL, Postgres, SQL Server, Oracle), bạn phải biết chúng chạy ra sao, làm sao để tối ưu SQL khi cần lấy dữ liệu.
Rồi bạn sẽ cần xem thêm tới những loại "database" mới sử dụng cho các mục đích riêng biệt, ví dụ như database về dữ liệu địa lý, database về dữ liệu streaming và xử lý thời gian thực… Kiến thức thì bao la, đụng tới đâu thì bạn tìm hiểu tới đấy, nhưng lời khuyên chung của mình là bạn không được dở database, thậm chí bạn phải rành database hơn mấy ông developer trong công ty.
Rồi bạn sẽ phải biết về NoSQL database, một loại database mới đang được dùng ngày càng nhiều. MongoDB là một từ khóa bạn có thể dùng để đi Google tiếp. Ngoài ra còn có nhiều loại database NoSQL khác nhưng ý tưởng cũng tương tự.
Hạ tầng là những thứ liên quan tới server, Linux, cách lưu trữ, cách dùng Docker, và mở rộng hơn là sử dụng cloud để làm công việc của bạn. Bạn sẽ cần biết cách dựng nên một con server, các thiết lập nó, cài các công cụ cần thiết để làm việc, cách để hạ tầng scale ra tùy theo nhu cầu và lượng data cần xử lý… Nhiều thứ cần phải tìm hiểu, nhưng cứ bắt đầu dần dần, tìm hiểu từng thứ một.
Thật ra còn nhiều thứ khác về tech bạn phải tìm hiểu lắm, mình chỉ mới kể ra những cái mà theo mình là quan trọng nhất cho những bạn mới tìm hiểu và bắt đầu làm. Dần dần bạn sẽ giỏi lên, đừng lo. Cứ học, cứ làm, cứ tìm hiểu liên tục là được.
Bạn làm data thì cỡ nào bạn cũng phải đi nói chuyện với loài người, có thể là các phòng ban khác ở khối kinh doanh, có thể là các phòng ban về tech khác nữa. Nên bạn phải tập nói sao cho người ta hiểu ý mình, nói ngắn gọn, và có khả năng giải thích những thứ phức tạp theo cách đơn giản thì mới làm tốt được việc của data engineer.
Đó là chưa kể bạn phải tìm hiểu về những khái niệm rất là "business", ví dụ như tỉ lệ chuyển đổi, cái khái niệm về quảng cáo, sản xuất, vận hành, chăm sóc khách hàng. Những kiến thức về business này sẽ giúp bạn làm việc của mình tốt hơn vì bạn biết nó là gì, bạn cần làm gì để giúp công ty tạo ra giá trị có liên quan. Nếu rảnh, hãy đi nói chuyện, giao lưu, đi ăn trưa với các phòng ban kinh doanh, bạn sẽ giỏi hơn rất nhiều so với việc chỉ ngồi làm tech, chỉ ngồi code suốt ngày.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.