Summary
View original tweet →Hạn Chế và Tiềm Năng của AI trong Lập Trình Phần Mềm
Mới đây, anh Santiago (@svpino) có đăng một tweet chia sẻ góc nhìn của mình về tình hình AI trong lập trình phần mềm. Ảnh nhấn mạnh mấy cái khó khăn khi dự án càng ngày càng phức tạp. Ảnh bảo, mấy con AI thì giỏi lắm khoản khởi động dự án mới hay làm prototype, nhưng mà khi đụng tới mấy dự án vừa vừa tới lớn thì lại hay bị "lú", không giữ được ngữ cảnh và dễ phá vỡ mấy nguyên tắc thiết kế đã định sẵn. Nghe cũng hợp lý, mà cũng làm tụi mình phải suy nghĩ: AI liệu có thay thế được lập trình viên không, hay chỉ là "trợ lý" thôi?
Điểm mấu chốt trong ý của Santiago là mấy công cụ AI hay bị "nhiều chuyện" (chatty), cứ thích sinh thêm code mới thay vì tập trung cải thiện code cũ. Cái này thì dễ dẫn tới việc làm việc không hiệu quả, nhất là khi dự án càng ngày càng bự. Vậy câu hỏi đặt ra là: AI sẽ còn "lú" như vậy bao lâu nữa?
Nếu ngồi ngẫm kỹ về khả năng và hạn chế của AI trong lập trình, thì đúng là mấy công cụ như GitHub Copilot hay DeepCode đang làm mưa làm gió trong việc debug, gợi ý code, và phát hiện lỗi. Nhưng mà, tụi nó vẫn cần con người "soi" lại để đảm bảo code không bị "tào lao bí đao". Điều này cũng khớp với ý của Santiago: AI chỉ nên là công cụ hỗ trợ, chứ chưa đủ trình để thay thế lập trình viên.
Mấy cái khó khăn của AI trong lập trình thì nhiều lắm. Đầu tiên là mấy ông dev phải học cách xài mấy công cụ AI này, mà học thì không phải dễ. Rồi còn mấy vấn đề như bias trong thuật toán, bảo mật, quyền riêng tư nữa. Nếu dựa dẫm quá vào AI thì dễ bị "lười" tư duy sáng tạo, mà đây lại là kỹ năng quan trọng trong lập trình. Đây cũng là lý do tại sao AI hay bị "đuối" khi xử lý mấy dự án phức tạp, như Santiago đã nói.
Nhưng mà, cũng có chút hy vọng với mấy mô hình ngôn ngữ lớn (LLMs) như Magic.dev's LTM-2-Mini hay Google’s Gemini 1.5. Mấy con này có khả năng xử lý ngữ cảnh dài hơn, phân tích code trên diện rộng, nên có thể cải thiện khả năng của AI trong mấy dự án vừa và lớn. Nhưng mà, mấy cái này vẫn đang trong giai đoạn phát triển, chưa phổ biến trong thực tế.
Santiago cũng nhắc tới một khía cạnh khác: AI trong quản lý dự án. Ừ thì AI có thể tối ưu hóa phân bổ tài nguyên, dự đoán kết quả dự án, hay cải thiện giao tiếp. Nhưng mà, AI vẫn chưa đủ "não" để hiểu hết được tầm nhìn kiến trúc của một dự án. Điều này càng khẳng định vai trò không thể thiếu của con người trong mấy tình huống phức tạp, vì AI không thể nắm hết được mấy cái "ý đồ" của dự án.
Ngoài ra, AI cũng giúp cải thiện chất lượng code bằng cách tự động hóa mấy việc lặp đi lặp lại, học nhanh mấy ngôn ngữ mới. Nhưng mà, khi đụng tới mấy yêu cầu phức tạp hay giữ vững tầm nhìn tổng thể của dự án, thì vẫn phải nhờ tới lập trình viên. Điều này lại càng củng cố quan điểm của Santiago: AI hiện tại vẫn còn nhiều hạn chế, và con người vẫn là "trùm cuối".
Nhìn về tương lai, chắc chắn AI sẽ tiếp tục làm thay đổi cách lập trình, từ việc viết nháp, cập nhật nhỏ, tới việc rút ngắn thời gian phát triển. Nhưng mà, AI sẽ không thay thế được sự sáng tạo và khả năng ra quyết định của con người. Những gì Santiago nói cũng giống như một lời nhắc nhở: AI giỏi thì giỏi, nhưng mà để quản lý dự án phức tạp và giữ chất lượng code thì vẫn phải có con người.
Tóm lại, tweet của Santiago là một lời nhắc nhẹ về tình hình AI trong lập trình hiện nay. Dù AI có nhiều tiềm năng, nhưng mấy hạn chế trong việc quản lý dự án phức tạp và đảm bảo chất lượng code cho thấy vai trò không thể thay thế của lập trình viên. Trong cái thời đại AI đang phát triển như vũ bão này, quan trọng là phải biết cân bằng giữa việc tận dụng sức mạnh của AI và giữ vững sự sáng tạo, tư duy của con người. Vậy mới "chất"!