+42

Hồi ức của một Data Engineer (nửa mùa)

Nhìn nhận nghề nghiệp "sexy nhất thế kỷ 21" qua lăng kính của một "culi".

alt text

Data Scientist theo Harvard Business Review được coi là nghề nghiệp "sexy nhất thế kỷ 21". Mặc dù Data Engineer thì có khác so với Data Scientist một chút, tuy nhiên về cơ bản thì cũng có thể coi những công việc liên quan tới xử lý, phân tích dữ liệu này đều hot như nhau vậy.

Mình, tất nhiên cũng không thể cưỡng lại sự cám dỗ to lớn đối với sự sexy mới này nên cũng ít nhiều ngụp lặn trong data lake, cũng hóa thân thành anh công nhân bốc xếp trong data warehouse. Nhìn thì cũng chuyên nghiệp ra phết chứ chẳng chơi, ấy vậy mà hóa ra mình vẫn chỉ là gã trăng hoa lỡ bước qua nàng Kiều mà thôi.

Bài viết này không có nhiều kiến thức chuyên sâu, cũng chẳng có những hướng dẫn để các bạn đến với nghề. Nhưng đã chót yêu rồi thì ai chẳng muốn mình là người đặc biệt. Giữa muôn vàn ngòi bút, muôn vàn bài viết cảm thán vẻ đẹp của Data, cách tiếp cận Data Scientist, cách để trở nên gần gũi hơn với Data Engineer,... mình vẫn hy vọng nó sẽ để lại cho các bạn một cái gì đó mới lạ về lĩnh vực này.

First things first

Mấy hôm nay ngồi xem phim hàn hơi nhiều, nên cũng hơi có nhiễm tâm hồn mộng mer lãng mạn một chút các bạn thông cảm. Thế nhưng các bạn yên tâm, phía sau chàng công tử nghèo khó nhưng tài hoa thi sĩ vẫn là mình - Minh Monmen - kẻ liều lĩnh luôn chọc phá những lý tưởng xa vời của các bậc bô lão và đưa họ về thực tại như các bạn đã thấy trong những bài viết như: Scalability và câu chuyện về ảo tưởng distributed hay Software Architect: Bad practices.

Tại sao mình lại viết bài viết này? Để kể lại câu chuyện không hề giống như tưởng tượng của nhiều người đối với nghề Data Engineer, những cơ duyên nào đã đưa mình đến với công việc này, những thử thách cũng như lợi thế của bản thân ra sao, mình đã trải qua những gì,... Cũng có thể nói đây là phiên bản blog của bộ phim hàn Thanh xuân vật vã mà mình đang xem vậy.

À thật ra là mình đang không thật sự làm Data Engineer. Giờ mình cũng không biết mình làm gì ở công ty nữa. Người ta thường bảo một nghề cho chín còn hơn chín nghề. Tức là làm gì thì cũng phải chuyên sâu ấy. Thế nhưng mình có vẻ lại đang đi ngược lại thì phải. Hồi mình mới đi làm không lâu thì nghề Data Analyst chưa nở rộ, DevOps cũng ít người biết tới nhưng mình đã đi xúi các bạn mình (học bên kinh tế) theo Data Analyst còn những bạn khác (bên kỹ thuật) thì theo DevOps. Chính mình cũng tự học thêm để hiểu được cả 2 nghề này. Giờ thành ra không biết nên vui hay nên buồn nữa.

Vui vì kiến thức quan trọng nhất mà người ta phải tích lũy được sau quá trình đi học, đi làm là sự thấu hiểu bản thân. Hiểu rằng mình là người yêu thích bức tranh tổng thể, hiểu được tổng thể mới có thể đi sâu vào chi tiết, ấy vậy nên mình mới đặc biệt ưa thích những nghề nghiệp, vị trí có thể tiếp cận với bức tranh tổng thể như trên. Đồng thời cũng cố gắng mở rộng kiến thức về nhiều thứ hơn.

Còn buồn vì giờ chẳng biết gọi mình là gì. Sau nhiều lần cố gắng giải thích cho bạn gái hiểu những công việc mình làm hàng ngày, nào là code, quản trị hạ tầng, vận hành hệ thống, phân tích số liệu,… thì mình cũng bỏ cuộc, vì nghe giống làm culi quá =))). Đến cả daily meeting note task hàng ngày ở công ty thì người chị thư ký cũng không biết phải note cái gì cho mình. HR có gọi đến hỏi chuyên môn của anh là gì thì mình cũng không biết nên trả lời như nào. Chốt lại 1 câu là công việc hàng ngày của mình vẫn là 1 ẩn số với những người xung quanh.

Bởi vì Data Analyst hay Data Engineer chỉ là một trong những công việc mình có làm, chứ không phải công việc chính nên có những thứ mình không có được giỏi và chuyên sâu như những chuyên gia thứ thiệt. Cách mình làm cũng chẳng phải là cách mà Data Engineer thường làm nữa, nên các bạn chỉ đọc cho vui thôi nha đừng phán xét =)))

Thống nhất vậy nhé? Let's go!

Từ điểm xuất phát khác với mọi người

Ngắn gọn: Mình là dân kinh tế.

alt text

Dài dòng: Mặc dù xuất phát của mình khác với những bạn học Bách Khoa hay Công Nghệ, mình lúc đó cũng chưa biết nhiều về web, về thuật toán hay hệ điều hành và network,... nhưng mình đã may mắn biết được bản thân thích gì và không thích gì. Đến năm cuối mình đã biết mình không phù hợp làm những công việc như Kiểm toán hay Kế toán nên sẽ không đi làm đúng ngành. Thế nhưng mình ưa thích bài toán cơ bản của kinh tế, tức là thỏa mãn nhu cầu vô hạn dựa vào nguồn lực hữu hạn - sự hiệu quả hay tính kinh tế. Đây cũng là điểm lợi thế của mình trong công việc mà không phải ai cũng có được.

Có kiến thức về tài chính doanh nghiệp, doanh thu hay báo cáo kết quả kinh doanh là một điểm mạnh đầy bất ngờ của mình khi đi làm. Trong khi hầu hết những người khác sẽ phải học thêm khi bước chân vào con đường dữ liệu thì mình đã có sẵn một ít. Biết được thế nào là doanh thu, chi phí, lợi nhuận, các chỉ số phản ánh hoạt động kinh doanh, hiệu quả và ý nghĩa của chúng,... là thứ đầu tiên giúp mọi người đi đúng hướng trong ngành dữ liệu chứ không phải là công cụ gì, tool nào.

Tiện đây nói luôn, kiến thức vềtin học văn phòng mà cụ thể là excel vẫn hay bị các thanh niên công nghệ bỏ sót bởi vì nghĩ đó là công cụ cho hội ngoại đạo, hội kinh tế,... chứ công nghệ là phải biết code, python, R,... Đây là quan điểm hết sức sai lầm đó. Hãy học thêm excel ngay hôm nay đi.

Tính được một chỉ số không khó, hiểu được nó nói lên điều gì mới khó. Kể cả với những chỉ số phổ biến như Active User (AU) chẳng hạn, có rất nhiều cách tính ra chỉ số này nhưng với mỗi cách thì nó lại mang 1 ý nghĩa khác nhau.

  • Với mạng xã hội, đôi khi chỉ đơn giản là số lượng user truy cập app.
  • Nhưng với một sản phẩm giáo dục trực tuyến, nó lại không chỉ là truy cập app mà còn phải tham gia buổi học bởi vì nếu chỉ là truy cập app thì nó không đem lại nhiều ý nghĩa cho người ra quyết định chẳng hạn.

Đây chính là điều mình đã nhận ra từ những ngày đi làm đầu tiên: Các công ty không thiếu vị trí chuyên gia trong một lĩnh vực cụ thể mà thiếu người có thể kết nối những chuyên gia đó với nhau.

Ví dụ nhé: team backend và system của công ty mình đầu tiên là 2 team hoàn toàn riêng biệt, làm việc với nhau cũng rất khó vì 2 bên đều là chuyên gia trong lĩnh vực của mình nhưng lại không hiểu về lĩnh vực còn lại. Team sys luôn có 1 tâm lý cực kỳ đề phòng với team BE vì mấy ông BE thiếu hiểu biết hệ thống thường gây họa production.

~> Vào thời 2015-2016 thì DevOps vẫn là một cái gì đó rất rất xa lạ với các công ty ở VN, vì vậy đề xuất được ra quy trình DevOps (mà lúc đó mình gọi là quy chuẩn vận hành) bao gồm quá trình tổ chức code, luồng CI/CD, các cấu hình server chuẩn, checklist deploy,... như kiểu một cuộc cách mạng vậy. Dù chưa biết DevOps là gì nhưng mình đã mường tượng đây chính là xu hướng mà các công ty phải tiến tới.

Một ví dụ khác là trong việc kết nối giữa team business và team tech với nghiệp vụ Business Intelligence. Có những thành viên BGD là chuyên gia về business, và cũng có những techlead là chuyên gia về tech. Nhưng bản chất 2 ngành nó khác nhau dẫn tới việc truyền tải được ý tưởng của business tới team tech nó không được trọn vẹn. Bên business thì không biết bên tech có thể đo lường những gì, hay có những dữ liệu ẩn gì, phản ánh điều gì,... và ngược lại tech sẽ gặp khó trong việc follow những metrics của business nếu không thật sự hiểu chỉ số đó phản ánh cái gì và nên được đo lường thế nào.

~> Data Engineer, Data Analyst hay BI với những công ty nhỏ tới vừa thời đó vẫn là những vị trí xa xỉ. Xu thế Data driven mà các bạn nghe tới mới chỉ phổ biến với các công ty nhỏ và vừa vài năm trở lại đây thôi. Thế nên dù chưa có nhiều hiểu biết lắm về ngành nhưng mình cũng hiểu đây sẽ là cái đích sáng giá mà các công ty đều muốn hướng đến.

Thông qua những người thầy đặc biệt về business

alt text

Nói thì tưởng mình có định hướng cho oai thế thôi chứ thật ra cũng là dòng đời xô đẩy. Ở vào thời điểm mới chân ướt chân ráo bước chân vào nghề IT sau khi chuyển ngành thì có được 1 chút định hướng để phấn đấu học tập với mình giống như cờ bạc đãi tay mới vậy. Bước đệm lớn nhất trong sự nghiệp với mình là có may mắn được làm việc cùng anh CTO siêu giỏi về công nghệ, vọc vạch từ mobile tới crawler, từ backend tới client,... và một anh Giám đốc phát triển sản phẩm đầy kinh nghiệm mang mindset Data driven đến từ HCM.

Ước mơ của các anh lúc đó là xây dựng 1 platform về Bussiness Intelligence đủ mạnh để tự tin phát hành bất kỳ sản phẩm nào ở thị trường VN. Lúc ấy việc vận hành vẫn thường xuyên phải thông qua những báo cáo thủ công, chậm trễ và thiếu chính xác, tốn nhiều sức người mà lại không đưa ra được quyết định một cách kịp thời.

Sản phẩm ban đầu chỉ là một hệ thống report doanh thu đơn thuần, sau đó được đắp thêm những chỉ số về vận hành, hoạt động, rồi đến cả những tính năng cảnh báo, theo dõi các hành vi gian lận,... Việc được trao quyền tự xây dựng một hệ thống từ a-z như vậy là may mắn và cơ hội của mình, nên quyết tâm học tập lúc đó cũng rất lớn, kiểu ngày đêm nghiên cứu các hệ thống tương tự như Facebook Analytics, Google Analytics, Game Analytics, Mixpanel,... rồi đọc sách về data, về thiết kế và tối ưu DB,...

Thế nhưng cái mà mình học được sau khi xây dựng sản phẩm này không chỉ là về tech mà còn là cái nhìn sâu sắc từ vị trí của bên phát triển kinh doanh khi phải hiểu được từng chỉ số được tính toán thế nào, thu thập ra sao, sai số thế nào, tại sao lại như vậy,... Theo mình đây là loại kiến thức phải học từ người có kinh nghiệm trong ngành, xem họ sử dụng những data đó để đưa tới kết luận và hành động ra sao. Đây vốn là những thứ không ai nói trên mạng cả (khác với kiến thức về tech nhé).

Chính vì vậy, nếu bạn muốn thật sự trở thành người làm chủ các con số thì hãy tìm một mentor về business nhé.

Tới lối đi riêng về công nghệ

alt text

Việc mở lối đi riêng là một hành động mạo hiểm, chỉ nên thực hiện khi đã thực sự hiểu lối đi ấy sẽ dẫn tới đâu.

Mình đã thấy những đại lộ rộng thênh thang, những con đường lát gạch đông người qua lại sau một thời gian dài tìm hiểu về các BI tool và các hệ thống xử lý dữ liệu lớn. Thế nhưng cuối cùng mình vẫn chọn việc mở 1 con đường mòn qua vùng đồng bằng đầy cỏ dại vì những con đường kia dốc quá nhắm leo không nổi.

Các bạn sẽ thấy việc học Tableau, Power BI hay Pentaho, Talend,... gần như là tool quy chuẩn mà những người làm data bây giờ được hướng dẫn. Mình cũng thấy những tool ấy, thấy những cách làm ấy tuy nhiên với một công ty tầm trung, team công nghệ cho sản phẩm analytics lại chỉ có mỗi mình mình thì việc tiếp cận, vận hành và custom các tool có sẵn và đa di năng như vậy lại trở thành 1 công việc khó khăn.

Mình thì muốn hiểu được bản chất ở phía sau xem hệ thống lấy dữ liệu thế nào, xử lý ra sao, ra số thế nào. Thế nên mình đã chọn cách xây dựng hệ thống bằng những cục gạch hết sức đơn sơ mà mình có thể tự sản xuất và kiểm soát được. Ban đầu đơn giản chỉ là vài script python chạy bằng cronjob, vài table trong mysql, rồi từ từ nâng cấp lên dần thành hệ thống quản lý job với nodejs, rồi data lake bằng MongoDB, rồi Data warehouse với PostgreSQL, rồi cũng xây dựng OLAP API bằng Lumen (1 framework con của Laravel), rồi Analytic Dashboard bằng Yii và Angular 1.x,...

Cứ như thế, bằng những công nghệ quen thuộc có sẵn quanh mình, mình đã tạo ra hệ thống của riêng công ty như vậy. Dù có méo mó chưa chỉn chu nhưng ít ra mình có thể control được toàn bộ và có được nhiều bài học từ nó.

Những chuỗi ngày vất vả

alt text

Tự build hệ thống riêng đồng nghĩa với phải giải quyết rất nhiều bài toán, từ thu thập dữ liệu, làm sạch dữ liệu, xử lý dữ liệu, lập báo cáo,... Tuy nhiên khác với anh em làm data thuần túy, mình còn phải làm cả công việc đảm bảo hệ thống business hoạt động bình thường, không bị ảnh hưởng bởi hoạt động analytic nữa.

Đây là hai điều trăn trở lớn nhất mình đã trải qua trên con đường làm data:

  • Tối ưu performance
  • Chất lượng dữ liệu

Những ngày đấy ngoài thiết kế hệ thống, thiết kế luồng data ban đầu ra thì công việc tốn thời gian nhất của mình chính là ngồi tối ưu: tối ưu database nguồn, tối ưu database đích, tối ưu luồng ETL, tối ưu API OLAP, tối ưu giao diện dashboard,... Ví dụ như mình phải dành vài giờ tới vài ngày để có thể tối ưu 1 câu query nhìn rất dễ hiểu như này: SELECT count(*) FROM user_activities; bởi đơn giản là trên dữ liệu lớn thì query này chạy chậm thôi rồi.

Đây là mindset của nhà nghèo, khác hoàn toàn với 1 bạn làm data trên hệ thống đắt tiền BigQuery là cứ đưa query trên vào là chạy nhé. Mình phải loay hoay chế ra các bảng dẫn xuất, rồi sử dụng các loại dữ liệu ước lượng, rồi transform, index đủ kiểu để tăng tốc query. Chính vì có mindset của nhà nghèo nên mình mới có cơ hội đưa ra những phương pháp tối ưu vắt cổ chày ra nước như thế được.

Để quản lý được chất lượng dữ liệu, mọi con số mà mình tính ra thì mình đều phải hiểu nó được tính thế nào, có thể có sai số ở đâu, độ trễ bao lâu, phản ánh được điều gì, lý do ra sao, có đúng với mong muốn của bên business không,... Hiểu được nó tính thế nào thì mình lại nghĩ được tới việc thu thập nó thế nào, cần những thông tin gì, khi nào thì client cần gửi lên, lưu trữ ra sao,...

Hai thứ trăn trở này đòi hỏi sự hy sinh, nhiều khi là phải hy sinh chất lượng để đổi lấy performance, hoặc hy sinh performance để đổi lấy chất lượng. Khả năng control hai yếu tố này có lẽ là thứ đáng giá nhất khi tự cảm nhận mặt đất bằng đôi chân của mình chứ không phải qua xe cộ.

Nỗi lòng của người KHÔNG làm công ty lớn

alt text

Làm Data nói chung hiện tại là một nghề hot được săn đón rất nhiều. Các bạn có thể thấy từ những công ty rất lớn, bình thường ít khi đăng tuyển do cơ cấu nhân viên đã hòm hòm cho tới những công ty nhỏ như startup thì vẫn xuất hiện khá nhiều trên các trang tuyển dụng ở những vị trí về data như Data Analyst, Data Engineer, Data Scientist,...

Nhu cầu cao thì cũng xuất hiện nhiều hướng dẫn, nhiều con đường dẫn các bạn đến với nghề thôi. Thế nhưng thật sự khi đọc những bài viết về những skill cần có ở Data Engineer thì mình thấy vô hình trung nó làm gò bó suy nghĩ của mọi người về nghề này quá.

Không làm công ty lớn, đồng nghĩa với việc phải tự cáng đáng nhiều vai trò. Các bạn sẽ chẳng thể yêu cầu công ty phải có riêng 1 người làm BI, 1 người làm Data Analyst, 1 người làm Data Engineer, 1 người làm DB Admin, 1 người làm System,.... được. OK mình thấy có công ty đã cố gắng thuê riêng 1 BI với giá rất cao, nhưng công việc của bạn ấy chỉ thuần túy là ngồi query trên BigQuery thôi. Thế giờ làm sao để data lên được đó? Lại đi thuê những người khác làm hở?

Sự thật là công ty nhỏ chỉ cần 1 hoặc 2 người, nhưng phải đảm nhận hết từ khâu thu thập data từ client tới DB hoạt động (Backend Engineer), lưu chuyển data tới kho phân tích (Data Engineer), vận hành, tối ưu các database (DB Admin), phân tích, visualize data (Data Analyst),... Thế mới thấy cái vai trò Data Engineer ở công ty nhỏ không được giới hạn kiến thức của mình chỉ vào 1-2 khâu mà phải toàn bộ quá trình sinh ra và phát triển của dữ liệu vậy.

Vài lời sau cuối

Ngồi chúi mặt vào đống hổ lốn data không vui tí nào cả.

Đó là lời khuyên của mình nếu các bạn chỉ nhìn vào mấy bài báo kiểu Làm Data Analyst lương ngàn đô rồi cắm đầu vào ngành này. Trừ khi bạn thật sự hiểu được đằng sau đống data đó là một bộ phim truyền hình hành động, kịch tính, hài hước, cảm động đẫm nước mắt. Lúc ấy công việc buồn tẻ hàng ngày của bạn mới trở thành phút giây thư giãn xem phim đầy hồi hộp và gay cấn được.

Cái quan trọng nhất giúp mình đi con đường riêng mà không lạc lối chính là thấy rõ được đích đến, hiểu được data mình đang cần là gì, biết ý nghĩa của nó, cách tính nó ra sao, cách thu thập nó thế nào, đi từ nhỏ tới lớn, từ đơn giản tới phức tạp chứ không phải là nhắm mắt ốp 1 công cụ siêu to khổng lồ vào dự án mà chưa hiểu rõ phía sau là gì.

Mình không khuyến khích các bạn đi con đường giống mình, bởi nó vốn là con đường dài và mạo hiểm, hay nói thẳng là phát minh lại cái bánh xe. Nhưng bởi vì có rất nhiều người làm trong ngạch data đang bị phụ thuộc vào công cụ, framework nhiều magic như Google BigQuery, Power BI,... thay vì hiểu được toàn bộ quá trình sinh ra và biến đổi của dữ liệu nên mình mới kể câu chuyện này ở đây để các bạn có thể để ý hơn.

Học rộng không bao giờ là thừa. Công ty hiện tại của mình chưa lớn, chưa có BI hay DE riêng mà những việc đó vẫn do mình làm cả. Nhiều lúc thấy giống "culi" nhưng mà cũng thấy có ích cho bản thân nhiều lắm. Hệ thống analytics hiện tại của công ty với vài chục job ETL, gần trăm loại query khác nhau, tổng hợp trong 10 dashboard riêng biệt được tối ưu đầy đủ về index, schema được mình xây dựng trong khoảng 1 tuần là nhờ trong quá khứ mình đã mất 6 tháng tìm hiểu để phát minh lại cái bánh xe đấy.

Câu chuyện đến đây là hết, chào thân ái và quyết thắng.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí