Andrew Ng, đồng sáng lập Coursera và là một trong những chuyên gia hàng đầu về deep learning, cho rằng nền tảng kỹ thuật phần mềm vẫn là yếu tố cốt lõi ngay cả khi coding agent ngày càng phổ biến. Theo ông, AI có thể viết phần lớn mã nguồn, nhưng lập trình viên vẫn phải hiểu sâu cách phần mềm vận hành để đưa ra quyết định đúng.
Trong bài đăng mới đây trên mạng xã hội X, Andrew Ng nói rằng ngay cả khi coding agent có thể tạo ra toàn bộ mã, người làm kỹ thuật vẫn cần nắm các nguyên lý cơ bản của phát triển phần mềm. Chỉ khi có nền tảng này, họ mới đủ khả năng định hướng agent nên ưu tiên điều gì, bỏ qua điều gì và xử lý các đánh đổi trong quá trình xây dựng sản phẩm.
Ông nhấn mạnh khi phát triển ứng dụng AI, trọng tâm không chỉ nằm ở chính mô hình AI. Theo Andrew Ng, AI chỉ là một thành phần trong một ứng dụng lớn hơn, còn lập trình viên vẫn phải xây dựng, tinh chỉnh và vận hành toàn bộ hệ thống bao quanh nó.
Andrew Ng cũng cảnh báo rằng một số lập trình viên mới có thể tạo ra các ứng dụng đơn giản chỉ bằng “vibe coding”, dù thiếu nền tảng kỹ thuật vững chắc. Tuy nhiên, trong những trường hợp như vậy, coding agent thường dễ đưa ra lựa chọn sai về độ trễ, tính sẵn sàng, tính nhất quán, độ tin cậy, khả năng bảo trì, mức độ đơn giản và chi phí. Nguyên nhân là người dùng không nhận ra các đánh đổi kỹ thuật và không thể định hướng chính xác cho agent.
Dựa trên nghiên cứu “AI Engineering Skills” do ông thực hiện, Andrew Ng tổng hợp 5 năng lực kỹ thuật phần mềm mà lập trình viên cần có trong giai đoạn mới.
Năng lực đầu tiên là xây dựng ứng dụng full-stack.
Theo Andrew Ng, nhờ agentic coding, ngay cả những lập trình viên vốn chỉ phụ trách một mảng như front-end hoặc mobile cũng có thể đảm nhiệm vai trò full-stack. Dù vậy, họ vẫn phải hiểu cách toàn bộ stack vận hành, từ UI component, caching, render trang, thiết kế API, xác thực, quản lý state và session, xử lý bất đồng bộ, lưu trữ dữ liệu, kiểm thử, bảo mật cho tới khả năng truy cập.
Năng lực thứ hai là quản lý dữ liệu.
Andrew Ng cho rằng dữ liệu là nền tảng của mọi phần mềm. Dù agent có thể hỗ trợ migration, cấu trúc dữ liệu sau khi đã chốt thường rất khó thay đổi.
Ông cho biết việc hiểu cách dữ liệu được truy cập sẽ quyết định nên lưu gì và lưu trong bao lâu. Lựa chọn đúng mô hình lưu trữ như quan hệ, tài liệu, key-value hay đồ thị sẽ ảnh hưởng trực tiếp đến tốc độ, khả năng mở rộng, tính sẵn sàng, độ tin cậy và chi phí hệ thống. Với các hệ thống AI, dữ liệu còn là cơ sở để mô hình đưa ra quyết định. Nếu kiến trúc dữ liệu được thiết kế sai, AI thậm chí có thể không nhận ra mình đang thiếu thông tin nào. Theo ông, những vấn đề như vậy thường chỉ có thể được xử lý đúng bởi người hiểu rõ bối cảnh hệ thống.
Năng lực thứ ba là thiết kế kiến trúc hệ thống.
Andrew Ng nói rằng chỉ khi hiểu rõ mục tiêu của phần mềm, chẳng hạn quy mô người dùng, yêu cầu về độ trễ hay áp lực chi phí, đội ngũ phát triển mới có thể đưa ra quyết định phù hợp về nền tảng, ranh giới giữa front-end và back-end, cách phân rã hệ thống, cũng như lựa chọn giữa monolith và microservices.
Ông nhấn mạnh không có một kiến trúc đúng cho mọi giai đoạn. Cấu trúc phù hợp với prototype có thể không còn phù hợp khi bước vào production đầu tiên, và khi dịch vụ tiếp tục mở rộng, kiến trúc cũng phải thay đổi theo.
Năng lực thứ tư là bảo đảm an toàn và ổn định cho hệ thống.
Theo Andrew Ng, để xác minh hệ thống vận hành đúng như kỳ vọng, lập trình viên cần biết cách xây dựng chiến lược kiểm thử, bao gồm tỷ lệ giữa unit test và integration test, lựa chọn công cụ phù hợp, cũng như xác định độ bao phủ kiểm thử.
Ông cũng cho rằng hệ thống cần được thiết kế để ứng phó với sự cố, chẳng hạn khi API bị giới hạn request, khi một thành phần gặp lỗi hoặc khi lưu lượng tăng đột biến. Mục tiêu là hệ thống vẫn duy trì được mức hoạt động tối thiểu thay vì sập hoàn toàn, đồng thời thu hẹp tối đa phạm vi ảnh hưởng. Trong bối cảnh xu hướng “shift left” đưa bảo mật lên sớm hơn trong vòng đời phát triển, nhiều lập trình viên hiện cũng phải đảm nhiệm một phần công việc vốn thuộc về kỹ sư bảo mật.
Năng lực thứ năm là mở rộng quy mô và vận hành trong môi trường production.
Andrew Ng cho rằng trọng tâm ở giai đoạn này là nắm trọn vòng đời phát triển phần mềm, từ cấu hình môi trường triển khai, chiến lược phát hành cho tới tự động hóa CI/CD.
Ở khâu vận hành, đội ngũ cần thiết lập công cụ quan sát hệ thống, cấu hình cảnh báo và xây dựng quy trình xử lý sự cố. Họ cũng phải đánh giá quy mô lưu lượng để mở rộng hạ tầng máy chủ, triển khai cân bằng tải và tối ưu hạ tầng dữ liệu bằng các kỹ thuật như sharding, indexing và replication.
Andrew Ng nhận định coding agent đang thay đổi mạnh cách phần mềm được tạo ra, kể cả với những sản phẩm không tích hợp AI. Vì vậy, kiểu kiến thức thiên về “học thuộc cú pháp” ngày càng kém giá trị. Tuy nhiên, theo ông, những lập trình viên thực sự hiểu nguyên lý vận hành của phần mềm sẽ có lợi thế rõ rệt so với những người chỉ dựa vào “vibe coding”.
Ông kết luận rằng khi nắm vững nền tảng kỹ thuật phần mềm, lập trình viên không chỉ biết cách tận dụng coding agent hiệu quả hơn mà còn đánh giá chính xác phần mềm có thể làm được gì và không thể làm gì. Đây mới là bối cảnh quan trọng để biến AI thành sản phẩm thực tế.