Source: Servion.com
Những công cụ và công nghệ xử lí dữ liệu đang phát triển với tốc độ đáng kinh ngạc, kéo theo đó, bản chất của việc thu thập và phân tích dữ liệu cũng đang thay đổi đáng kể. Những công cụ mà tôi dùng để làm việc bây giờ rất khác biệt so với những gì tôi dùng 10 hay thậm chí 5 năm trước, tuy nhiên nhiều bài học và kinh nghiệm từ thời đó vẫn giữ nguyên giá trị cho đến nay.
Tôi đã làm việc với dữ liệu từ trước khi kỹ thuật dữ liệu (data engineering) trở thành một lĩnh vực riêng biệt và trước khi khoa học dữ liệu trở thành ngành hấp dẫn nhất của thế kỷ 21. Tôi "chính thức" trở thành một kỹ sư dữ liệu (data engineer) sáu năm trước, và tôi đã tự mình trải nghiệm những thách thức mà những kỹ sư dữ liệu “truyền thống” phải vượt qua. Tất nhiên quá trình thích nghi với những công nghệ và công cụ mới cũng không kém phần khó khăn đối với những kỹ sư phần mềm, chỉ là khó khăn theo một cách khác.
Mặc dù công nghệ không ngừng phát triển – điều mà ai làm trong lĩnh vực công nghệ cũng phải chấp nhận – một số kỹ năng tôi học được từ trước kia vẫn áp dụng được, nhưng chúng lại bị những kỹ sư dữ liệu phớt lờ trong quá trình thích nghi với sự phát triển của công nghệ. Và chúng cũng là những kĩ năng những kỹ sư phần mềm thường không để tâm đến.
Trong bài đăng này, tôi sẽ nói về sự phát triển của kỹ thuật dữ liệu và những kĩ năng mà những kỹ sư dữ liệu “truyền thống” nên có trong thời đại công nghệ phát triển như hôm nay.

Sự ra đời của kỹ thuật dữ liệu (Data Engineering)

Image for post
Photo by Pixabay from Pexels
Một đội kỹ thuật dữ liệu trước khi có xu thế Big Data gồm có những người phát triển BI (Business Intelligence) và ETL (Extract Transform Load). Những công việc của họ thường liên quan đến việc di chuyển những bộ dữ liệu từ A đến B (ETL) và xây dựng những bảng dashboard lưu trữ web với những dữ liệu đó (BI). Để phục vụ những công việc này có những công cụ chuyên hóa và những kiến thức nằm trong mảng công nghệ thông tin.
Trong 10 năm qua, càng lúc lượng dữ liệu ngày càng lớn và lượng người quan tâm đến phân tích dữ liệu ngày càng nhiều, những công nghệ mới đã ra đời. Một số trong chúng bị bỏ lờ, số còn lại thì trở nên thông dụng, vì thế nên những yêu cầu về kĩ năng cá nhân và cấu trúc của một đội xử lý, phân tích dữ liệu thay đổi. Những công cụ BI hiện đại cho phép những nhà phân tích và doanh nhân tạo ra được dashboard mà không cần đến sự trợ giúp của công nghệ thông tin, thế nên kỹ thuật dữ liệu trở thành một ngành riêng biệt, tích hợp những kỹ năng gia công phần mềm vào phát triển ETL qua việc sử dụng những công cụ mới.
Những thách thức
Image for post
Photo by Alexander Dummer from Pexels
Việc tạo một quy trình xử lí dữ liệu (data pipeline) thoạt đầu nghe có vẻ dễ, nhưng khi xét theo quy mô của big data thì nó nghĩa là phải kết nối hàng tá những công nghệ khác nhau, thâm chí còn có thể nhiều hơn thế. Một kỹ sư dữ liệu phải hiểu chuyên sâu rất nhiều những công nghệ khác nhau, phải chọn ra công cụ thích hợp nhất cho công việc và viết nên một code bằng Scala, Java hay Python nhằm tạo ra những sản phẩm ổn định và bền vững. Một kỹ sư dữ liệu phải hiểu được tận tình dữ liệu của họ để có thể làm những công việc có thể tận dụng đến xử lí phân tán. Một kỹ sư dữ liệu phải nắm được cơ sở hạ tầng để có thể xác định được lí do tại sao một công việc không thực hiện được.
Theo khái niệm thì phần lớn những quy trình xử lí dữ liệu trên là những công việc thông thường của một nhà phát triển ETL – thu thập những bộ dữ liệu từ nhiều nguồn khác nhau và trữ chúng trong một không gian lưu trữ dữ liệu trung tâm sẵn sàng cho các nhà phân tích hoặc để biến đổi chúng thành BI hay dành cho machine learning. Tuy nhiên, những nhà phát triển ETL “truyền thống” không có những kĩ năng cần thiết để làm những công việc này trong bối cảnh Big Data.

Tình hình hiện nay có còn như thế không?

Tôi đã xem qua nhiều bài viết liệt kê những kĩ năng những kỹ sư dữ liệu nên có. Hầu hết những bài viết đó khuyên nên học Hadoop, Spark, Kafka, Hive, HBase, Cassandra, MongoDB, Oozie, Flink, Zookeeper, ...
Dù tôi đồng ý là biết những công nghệ trên không có hại gì, nhưng vào năm 2020, chỉ biết đến chúng thôi là chưa đủ – những công việc cụ thể mà chúng được thiết kế để giải quyết, khi nào nên và không nên dùng chúng, và những gì có thể thay chúng giải quyết một công việc. Công nghệ đám mây không ngừng phát triển đã cho ra đời rất nhiều những ứng dụng và dịch vụ liên quan đến công nghệ đám mây trong những năm gần đây. Cũng như các mà những công cụ BI hiện đại đã làm cho việc phân tích dữ liệu dễ tiếp cận hơn cho các doanh nghiệp vài năm trước đây.

Những kĩ năng mà những kỹ sư dữ liệu cần có là gì?

Image for post
Photo by Pixabay from Pexels
Bên dưới là ba lĩnh vực mà tôi thấy các kỹ sư dữ liệu “truyền thống” thường gặp vấn đề, vì họ đã không có những công cụ và những lối tiếp cận mà những kỹ sư phần mềm có trong một khoảng thời gian dài. Hiểu được và khắc phục những lỗ hổng kiến thức trong những lĩnh vực này không tốn nhiều thời gian, nhưng chúng sẽ giúp cho việc thích nghi với những công cụ hiện đại dễ dàng hơn.
1. Quản lý phiên bản (Git) và kiến thức về CI/CD (CI/CD pipeline)
Code SQL vẫn là code và vì thế những nguyên tắc trong kỹ thuật phần mềm nên được áp dụng.
- Việc nắm được ai đã thay đổi code, khi nào và tại sao là rất quan trọng
- Code nên đi kèm với những test có thể tự chạy được
- Code nên được triển khai dễ dàng trong những môi trường khác nhau
2. Hiểu biết tốt về phân tích dữ liệu đám mây 
Chúng ta thường làm việc với những công cụ quen thuộc vì chúng giúp ta nâng năng suất công việc. Nhưng nhiều thác thức mà ta phải đối mặt thường có nhiều cách giải quyết và ngày nay chúng thường được giải quyết một cách hiệu quả hơn.
Thoạt đầu việc mò mẫn hệ sinh thái đám mây có vẻ hơi đáng sợ. Khi đó, thay vì tự mình tìm hiểu thì ta có thể học từ kinh nghiệm của những công ty.
Nhiều nhà khởi nghiệp thành công rất sẵn lòng chia sẻ về dữ liệu của họ, cũng như những bài học họ có được trong quá trình khởi nghiệp. Hiện nay, việc sử dụng một phiên bản của một kho chứa dữ liệu đám mây, một vài phần tử khác để giúp việc tiếp nhận dữ liệu và trực quan hóa dữ liệu là cần thiết.
3. Học thêm một ngôn ngữ lập trình ngoài SQL
Dù tôi rất thích Scala, Python là một lựa chọn an toàn hiện nay. Nó khá dễ tiếp thu, được giới khoa học dữ liệu ưa chuộng, và được hỗ trợ bởi hầu hết các hệ sinh thái đám mây. SQL thích hợp với nhiều cách chuyển đổi dữ liệu, nhưng đôi khi phân tích những kết cấu dữ liệu phức tạp với Python trước khi nó được đưa vào một bảng thống kê hoặc dùng Python để tự động hóa những bước cụ thể trong quy trình xử lí dữ liệu một cách dễ dàng hơn.

Vai trò của một kỹ sư dữ liệu đang thay đổi

Image for post
Photo by Christina Morillo from Pexels
Các công cụ và công nghệ xử lí dữ liệu đã thay đổi rất nhiều trong những năm vừa qua. Phần lớn chúng đã thay đổi đến mức có thể thích nghi với sự lớn dần của lượng dữ liệu trong khi có thể làm việc tốt với những dữ liệu nhỏ.
Điều đó có nghĩa là vai trò của kỹ sư dữ liệu đang thay đổi không? Tôi nghĩ là thế. Điều đó không có nghĩa là mọi việc sẽ trở nên dễ dàng hơn – công nghệ càng phát triển thì các doanh nghiệp sẽ càng đòi hỏi nhiều hơn. Dù thế, có vẻ như vai trò này có thể sẽ trở nên chuyên hóa hơn hoặc sẽ tách ra thành nhiều ngành khác.
 Các công cụ mới cho phép các kỹ sư dữ liệu tập trung vào cơ sở hạ tầng dữ liệu cốt lõi, tối ưu hóa hiệu suất, việc thiết kế những quy trình trong đó có những bước tiếp nhận dữ liệu cá nhân. Phân tích dữ liệu đang trở thành một ngành mới. Nó là một nút giao giữ thiết kế dữ liệu và phân tích dữ liệu, tập trung vào chuyển đổi dữ liệu và chất lượng dữ liệu. Thiết kế kho chứa dữ liệu đám mây cũng là một ngành mới khác.
Dù sự phân chia vai trò bằng các tên như trên có trở nên thông dụng hay không thì tôi vẫn tin rằng các kỹ sư dữ liệu “truyền thống” sở hữu nhiều kĩ năng thiết yếu để trở nên thành công trong nhiều lĩnh vực kỹ thuật dữ liệu hiện nay – có nền tảng vững trong SQL và mô hình hóa dữ liệu là một trong số những kĩ năng đó. Bằng cách học một ngôn ngữ lập trình và làm quen với quản lý phiên bản, việc thích nghi với những đổi mới về công cụ và công nghệ sẽ trở nên tương đối dễ dàng.

                                                            .   .   .