Kỹ Sư là "bậc thầy kỹ thuật", ko phải là "lập trình viên"!

Hôm qua, Sư Phụ hẹn tôi lên nói chuyện về dự định đồ án cũng như nghiên cứu. Đồ án thì xong từ thời cổ lỗ sĩ rồi, chủ yếu là công việc nghiên cứu. Ngoài ra cũng có mấy cậu sv năm cuối được hẹn lên gặp để làm đồ án tốt nghiệp. Qua cuộc nói chuyện giữa Sư Phụ và các cậu sv đó, Sư Phụ đã chỉ ra 2 sai lầm của mọi người về mặt tư tưởng rằng:
  1. AI/Machine Learning cũng chỉ là 1 phần trong 1 kỹ sư thôi, và cũng ko phải là phần cốt lõi tạo nên chất của kỹ sư đó! Đừng vì nó hot mà cố tìm cách sử dụng nó để tạo ra thứ mà ko ai cần!
  2. Kỹ sư ko phải loại người mà hầu hết xã hội (thị trường lao động) đang nghĩ! Quá lạm dụng từ "kỹ sư" đẫn đến xã hội hiểu và đánh giá sai vai trò của 1 người thực sự là kỹ sư.
Về điều đầu tiên, hiển nhiên rồi! Trong vài năm gần đây, AI (Artificial Intelligence) - hay còn gọi là "trí tuệ nhân tạo" - là từ khóa hot nhất trong ngành. Hot đến nỗi các bác nông dân ở quê cũng biết có thuật ngữ này tồn tại. Nhưng thật sự thì như vậy là hay? Ko, chả hay ho con khỉ j cả! Khi 1 chủ đề mà được lan tỏa bởi những người ko hiểu biết thật sự về nó, thì sẽ xảy ra hiện tượng "tam sao thất bản". Y hệt như hiện tượng vanishing gradient hay exploding gradient hay xảy ra trong quá trình gradient propagation khi ta huấn luyện mạng nơ-ron vậy.

AI là 1 khái niệm quá lớn, tôi chưa đủ hiểu để diễn tả 1 cách ngắn gọn dễ hiểu cho các bạn. Tôi chỉ biết vài nhánh của nó như Computer Vision (thị giác máy tính), Natural Language Processing (xử lý ngôn ngữ tự nhiên). Còn Machine Learning cũng chỉ là 1 kỹ thuật có thể được sử dụng trong các nhánh đó. Ví dụ, ta còn có thể sử dụng 1 kỹ thuật khác là Digital Signal Processing (xử lý tín hiệu số), chứ đâu nhất thiết là cứ phải có Machine Learning đâu! Ảnh hay âm thanh cũng đều có thể biểu diễn dưới dạng tín hiệu số. Ảnh thì đương nhiên rồi; âm thanh thì ban đầu thu được ở dạng tín hiệu tương tự (analog signal), sau đó được số hóa để đưa về tín hiệu số (digital signal). Hoàn toàn chưa cần đến các kỹ thuật Machine Learning, người ta cũng có thể giải quyết được cơ số công việc bằng Digital Signal Processing rồi!

Thế còn trong Machine Learning, sao cứ nhắc đến Machine Learning là phải nhắc đến Deep Learning? Machine Learning được chia thành 2 nhánh con là Generative model và Discriminative model, chứ ko phải Deep Learning và phần còn lại ko phải Deep Learning! Nhiều người demo thành công dăm 3 cái model thuần Deep Learning xong rồi cứ ngỡ mình đã đột phá đc cảnh giới quan trọng nhất của Machine Learning; mà ko biết rằng đã lầm đường lạc lối ngay từ trong trứng nước. Dễ hiểu thôi, giờ có nhiều thư viện, code mẫu, dataset để bất cứ ai cũng có thể code ra được 1 cái liên quan đến Deep Learning (như chatbot, phân loại chó/mèo, phân loại thể loại nhạc, ...); quanh đi quẩn lại cũng chỉ là Backpropagation Gradient Descent, mà cũng có phải code bằng tay đâu, lib hỗ trợ hết rồi.

Rồi là báo chí các thể loại thi nhau đưa tin; cứ cái j cũng phải cố nhét thuật ngữ AI vào thì sẽ auto được coi là "thượng đẳng". Các trung tâm "dạy AI" cũng mọc lên theo. Tất cả chỉ vì muốn ăn xổi. Học xong mấy cái khóa vớ vẩn đó mà thành "chuyên gia AI" được thì ...!

Sư Phụ nói rằng cái cốt lõi của đồ án tốt nghiệp ko phải là làm cái j, mà là làm như thế nào! Chỉ cần có 1 chút mới mẻ thôi là đủ rồi; còn quan trọng nhất vấn là tư duy phân tích thiết kế hệ thống, tối ưu thuật toán! Đây là cái căn bản quan trọng, sẽ đi theo cả sự nghiệp làm kỹ sư sau này, chứ ko phải AI. Còn nếu dùng Machine Learning thì cũng chỉ cần khai thác 1 tính năng để giải quyết nhu cầu nhỏ thôi, biết đâu sau này nếu tiện ích, nó sẽ thành nhu cầu lớn; còn những nhu cầu lớn sẵn thì người ta đã phát hiện ra và làm hết rồi, ko đến lượt mình khai thác.

Về điều thứ 2, Sư Phụ tôi rất trân trọng từ "KỸ SƯ". Trước khi theo con đường Khoa học, ông đã là 1 phần trong thế hệ kỹ sư đầu tiên gây dựng nên 1 FPT lớn mạnh như ngày nay. Đối với ông ấy, kỹ sư là chỉ những "bậc thầy sử dụng tri thức khoa học để làm kỹ thuật". Trong cái ngành này, tri thức khoa học chính là Toán, thuật toán thì cũng từ toán mà ra! Kỹ sư phải có khả năng nhìn ra vấn đề, đưa ra phương hướng giải quyết 1 cách triệt để "end-to-end", vạch ra những công việc chính và chỉ huy 1 nhóm người để cùng giải quyết vấn đề đó! Nó là cảnh giới đỉnh cao của những người làm kỹ thuật. Học xong BK, cầm tấm bằng kỹ sư trên tay, cũng còn lâu mới xứng đáng với 2 tiếng "kỹ sư"!

Thế mà xã hội lại nghĩ như nào? Xã hội lại coi kỹ sư rất tầm thường! Tuyển nhân lực về để code cũng coi là tuyển kỹ sư; đấy là lập trình viên chứ đâu phải kỹ sư? Nhiều thành quen, đâu đâu cũng là "tuyển Software Engineer, AI Engineer, Security Engineer, Back-end/Front-end Engineer, System Engineer, Data Engineer, ... (còn j nữa ko nhỉ)"; thế nên khái niệm Engineer (kỹ sư) bị hạ thấp xuống mức Worker (thợ). Sau rồi, để đặt tên cho những chuyên gia lâu năm, người ta phải tìm 1 thuật ngữ khác là Architect chứ ko dùng khái niệm Engineer. Thế là trong cái ngành này, kỹ sư thì bị coi là thợ, còn kiến trúc sư mới được coi là thầy.

Trước giờ tôi vẫn chỉ dám tự nhận mình là Developer, chứ chưa bao giờ dám nhận mình là Engineer, cho dù tôi 1 mình end-to-end làm 2 cái module Machine Learning ở công ty. Hiển nhiên thôi, vì người đặt nền móng ý tưởng cho nó là sếp Triệu Trần Đức; tôi chỉ là người kế thừa ý tưởng và tìm cách giải quyết, rồi tự giải quyết lấy từ đầu đến cuối; chứ chưa phải là người nhìn ra vấn đề cần giải quyết ban đầu. Sếp Đức thì thôi khỏi bàn; từ ngày tôi mới học cấp 2 cấp 3, sếp đã trấn áp quần hùng thiên hạ trong cái ngành này rồi, mà ko phải thiên hạ tầm cỡ Việt Nam, mà là thiên hạ tầm cỡ thế giới cơ.

Có thể thấy rằng để trở thành 1 kỹ sư thực thụ là ko hề đơn giản! Phải mất nhiều năm học hỏi, làm việc, rồi trải qua vô số các công việc, các dự án, ... thì mới có thể tự mình đột phá từ cảnh giới Worker lên cảnh giới Engineer được. Vậy mà thị trường lao động lại coi 2 cái đó là 1! Xung quanh toàn là kỹ sư êi!

Nói về công việc Machine Learning, các "AI Engineer" hiện tại cũng đa phần là code xong thuật toán, tạo ra được model, đưa ra được đầu ra tương thích. Còn đầu ra đấy sau đó được xử lý thế nào thì là công việc của người khác; dữ liệu thô đầu vào thì cũng đều có người lấy cho. 1 product thật sự ko thể rời rông rổng như vậy được! Bọn Back-end ko thể nào mà cung cấp từng cái API cho từng dạng dữ liệu đầu vào được! Khi sản phẩm đưa vào vận hành, thứ nhất là ko bị crash, sau đó muốn thế nào thì tùy; các công việc đều phải tự động, phải có log ghi lại, phải có API để các service khác tương tác, phải có tùy chọn khả năng chạy ngầm và hoạt động theo kế hoạch đã được lên lịch cụ thể; phải quản lý được permission để tránh service này làm gián đoạn service khác trong một hệ thống lớn, cũng như người dùng có thể tương tác quá sâu với hệ thống. Các hệ thống ở VN hiện giờ, đa số toàn kiểu "rắn ở bên ngoài, lỏng lẻo ở bên trong". Chỉ cứng cáp với bọn hacker ở bên ngoài thôi; còn khi nó đã bypass vào trong được thì các thành phần bên trong lại rất lỏng lẻo, dễ dàng xâm nhập từng thành phần con, permission giữa các service với nhau ko được coi trọng lắm, chỉ chú trọng hardening mỗi cái vỏ bên ngoài. Như vậy thì có xứng với 2 tiếng "kỹ sư"?

Nói về công việc Security, những "hacker" sẽ là thượng đẳng hơn bọn Coder, System Admin. Đơn giản là vì để bypass được một hệ thống, người tấn công ko những phải hiểu thật rõ mọi mặt của hệ thống, mà còn phải nhìn ra được những điểm quan trọng chưa được gia cố mà bọn lập trình viên ko nhìn ra được. Những lỗ hổng được công bố thì hầu hết đều đã được vá rồi, thế nên phải "tấn công 1 cách thủ công" thì mới có thể tìm ra được những lỗ hổng mới; chứ ko phải dùng tool viết sẵn, bypass được thì ngon, ko được thì tìm tool khác để chọc ngoáy (đương nhiên mấy tool basic nhất thuộc dạng gathering thì vẫn dùng được).

Thời gian tới có lẽ tôi có thể viết nhiều, chia sẻ được nhiều thứ. Đương nhiên những thứ căn bản nhất mà đâu đâu cũng viết thì tôi sẽ ko rảnh mà nhai lại như họ; thay vào đó, những góc nhìn và phát hiện mới mà người khác chưa từng nhai lại, chưa nhai lại được, hoặc chưa thấy để mà nhai lại, thì tôi sẽ nhai lại theo bản sắc của riêng mình, đơn giản thôi! "Keep it simple, stupid!"

Nhận xét

Bài đăng phổ biến từ blog này

Trên con đường tu đạo luôn cực kỳ theo đuổi!

C++ Con trỏ (Pointer) toàn thư: Phần 4: Con trỏ "đa cấp". Đánh nhau bằng con trỏ.

Vừa ngộ ra sự vi diệu của Padding Oracle Attack thì được tin crush hồi lớp 12 sắp cưới.