Tuan Huynh

AI đang biến việc "Viết Code" thành hàng hoá giá rẻ

AI đang biến việc "Viết Code" thành hàng hoá giá rẻ

Sự phát triển quá nhanh về công nghệ, sự cạnh tranh nằm ở tốc độc đáp ứng, khả năng hiểu chính xác yêu cầu, khả năng xử lý chính xác nhu cầu, khả năng lý luận mở rộng yêu cầu để phát thảo tác vụ trọn vẹn cho một tính năng, hệ thống, hay khả năng xử lý đa tác vụ đồng thời đã đưa các AI Agent tới giai đoạn mới, biến việc viết code thành hàng hoá. Ship nhanh! Ship rẻ! Ship đúng!

1. AI hoá quy trình phát triển phần mềm:

- Giảm chi phí về xây dựng phần mềm, tăng tốc độ phát triển, biến idea thành hình nhanh nhất, và khả năng hiểu ngôn ngữ tự nhiên (text, voice, hình ảnh cung cấp) xoá mờ dần rào cản giữa người có ý tưởng xây dựng phần mềm với người biết code xây dựng phần mềm.

- Từ Prompt, AI Agents có thể xây dựng giao diện tương tác (frontend), xây dựng luôn cả phần hệ thống xử lý logic phía sau (backend), thiết kế cấu trúc database phù hợp dự án, tự động cấu hình và triển khai lên server/cloud được chỉ định.

Hiện tại, AI Agents đã làm tốt các vấn đề trên đồng thời dấy lên câu hỏi vậy Developer còn làm gì? Tại sao cần Developer?

AI đảm nhận công việc cực nhanh, mạnh, cực tốt ở khía cạnh:

- Xây dựng chức năng CRUD (create - read - update - delete) - quy trình tương tác frontend với backend, database.

- Hiểu UI - copy/capture 1 ảnh layout yêu cầu AI phân tích và xây dựng các thành phần, hiểu mối quan hệ các thành phần (textbox, button, form, ...) AI xây dựng nên cấu trúc database để sẵn sàng cho tương tác trên UI đó.

- Xây dựng backend REST APIs: đúng chuẩn, rõ ràng, tái sử dụng và mở rộng tốt.

- Sẵn sàng đọc toàn bộ dự án, hiểu ý nghĩa dự án, các class, function, tính năng để hỗ trợ tái cấu trúc hoàn toàn dự án lộn xộn thành dự án rõ ràng về cấu trúc, tái sử dụng các thành phần mã nguồn.

- Xây dựng bộ test cơ bản để unit test các tính năng mới.

Thật sự là Junior level không còn cửa nữa!

Nhưng! Chậm chút đã!

Sự thật đó là bề nổi nó giống như ta thấy việc gõ enter 1 từ khoá thì chưa tới 1/triệu giây google đưa ra list kết quả đúng theo nhu cầu, tạo 1 cảm giác đủ WAO!! nhưng phía sau cú enter đó là 1 đế chế khổng lồ vận hành mà chắc gì chúng ta hiểu biết - chúng ta cần hiểu ko? người sử dụng thì không cần, nhưng google dev thì có đấy!

Từ 1 ảnh chụp landing page của chiến dịch sale -> đưa cho AI -> chưa tới 5 phút đã có thể chạy hoàn thiện, sử dụng tốt tất cả tương tác trên đó. Đủ QUOA thật sự, quá tự hào!

Hay prompt ngắn gọn: "Sử dụng React Native hãy xây dựng cho tôi một ứng dụng Chat, hỗ trợ chat 1-1 và chat nhóm".

-> Chắc chắn với sự hỗ trợ từ AI Agent như Claude AI, Cursor AI,... thì chưa tới 20 phút, ta đã có 1 ứng dụng Chat, cài được trên điện thoại, chat chít gửi tin nhắn qua lại bụp bụp, gửi ảnh riêng tư các kiểu, chát nhóm, gửi files, ... hệ thống sử dụng firebase xác thực người dùng, firebase store để lưu trữ message, dùng socket để realtime notification, sử dụng redis để cache,...

Ú oà! đủ Quoa thật sự, một cú búng tay như Thanos, 1 kiệt tác trước đây mất cả tháng build giờ 20 phút chạy vi vu!

2. AI hỗ trợ chúng ta tăng dần chứng ảo giác:

Tôi đưa ra 2 ví dụ đơn giản trên, để dễ hình dung về Khả năng, hiệu quả từ AI, và mở ra câu hỏi về Khả năng sử dụng AI.

Với tôi, Chúng ta cho rằng AI ảo giác nhưng ít khi thừa nhận mình - đang dùng AI - cũng ảo giác không thua kém.

Chúng ta sử dụng nhiều AI, vì tiện lợi, hữu ích, đáp ứng nhu cầu, việc này dần đẩy chúng ta tới lu mờ dần về năng lực nội tại của chính chúng ta và khả năng sử dụng AI. Như ví dụ trên, 1 landing page, 1 web site, tính năng từ ý tưởng nào đó, 1 ứng dụng chat,... tốc độ hoàn thành chỉ 1 cú búng tay!

Chưa kể, cái cảm giác - thoáng nghe đâu đó - Enter một prompt đi pha ly cà phê, ghé sang fb coi cô nào vừa show ảnh hở rốn, rồi quay lại nhận thành quả! Nghe kịch bản có vẻ rất quen thuộc nếu bạn join vào các group Vibe Coding!

Sự ngộ nhận sức mạnh đẩy chúng ta đi xa hơn trong cuộc đua mà khả năng code của AI càng ngày vượt xa chúng ta cấp số nhân về tốc độ và sự chính xác!

Quay lại, sự ảo giác ở ví dụ trên là gì? đó là chúng ta hiểu nhầm đôi chút về công việc, phát triển phần mềm nó không chỉ là viết code, làm sản phẩm, hệ thống phần mềm không phải là code chạy được, mà là:

- Khả năng mở rộng hệ thống,

- Khả năng bị toang (failures),

- Tính nhất quán trong code, ý tưởng, kiến trúc,

- Đánh đổi (trade-off) gì khi áp dụng kiến trúc, workflow, cách triển khai đó (VPS, Cloud, Database, Cache,...)

- Tính năng ngày càng phức tạp, chắp vá, mở rộng codebase và vấn đề cực lớn trong vòng đời phát triển phần mềm,

- Khả năng giám sát, quan sát được hoạt động hệ thống theo đúng hoạt động kinh doanh, chi phí vận hành, tiềm năng phát sinh rủi ro về bảo mật, pháp lý, tính chính xác thông tin,...

3. AI cũng có điểm yếu:

- AI vẫn khá yếu về thiết kế kiến trúc trade-offs, nó sẽ hướng đến lựa chọn dựa trên hiểu biết từ mô hình mà đề xuất! nghe có vẻ đúng chứ chắc gì phù hợp với bạn, project, task hiện tại của bạn!

- AI vẫn còn rất mơ hồ, và phần lớn đoán ý định người dùng, sau đó mở rộng tác vụ và triển khai - cũng là lỗi chủ quan từ chính người dùng AI không có khả năng mô tả rõ ràng việc gì nên làm, làm thế nào cho AI.

- AI không thể nào hiểu được đầy đủ ngữ cảnh: bối cảnh kinh doanh, nhiệm vụ kịp thời, tác vụ tức thời/ lâu dài, định hướng theo giai đoạn, đánh đổi giữa chi phí - vận hành - kết quả, ...

Sử dụng AI là tốt, nhưng biết sử dụng AI như thế nào cho hiệu quả, tránh ảo giác cho cả AI và chúng ta là một bài toán không dễ dàng. Làm việc với AI không phải là ra lệnh AI viết code, mà phải hiểu toàn cảnh, hiểu task, hiểu workflow, biết chia task, biết nghiên cứu lựa chọn tech stack, workflow triển khai, rõ ràng và kiểm soát về sự đánh đổi khi lựa chọn hướng triển khai, khi đó mới tận dụng AI làm việc gì, làm như thế nào, và nó không dừng lại ở Prompt, hay chỉ đạo bằng ý tưởng, bằng mồm, mà phải dùng AI bằng não, càng dùng AI thì càng căng não, trước khi gõ 1 prompt thì phải biết cần làm gì trước, cái nào sau, nên đi theo hướng nào, tại sao cần làm vậy, kết quả kỳ vọng là gì, và khả năng đọc/ hiểu/ đánh giá đống code AI tạo ra đó đúng hướng, workflow, quy chuẩn, ... hay chưa!

Nếu dùng AI một cách minh mẫn thì sẽ tránh luỵ tình vào AI! :))

Qua đây, mình cũng nhận thấy sinh viên theo định hướng lập trình, phát triển phần mềm, đang hiện diện 2 nhận định:

1. Có AI viết code rồi, học code chi nữa, chỉ cần đọc qua để biết thôi, cái gì không rõ hỏi AI, bảo AI viết code, xây dựng phần mềm, lỗi bảo AI fix, mở rộng bảo AI tái cấu trúc!

2. Có AI viết code rồi, phải cân não ra học, học sâu hơn, củng cố hơn, thực hành nhiều hơn nữa, chính bản thân có kiến thức gì, chính bản thân có thực sự có giá trị hay không, khi đó mới nghĩ tới việc tận dụng AI để làm việc!