- Về lý do vì sao khó thay thế lập trình viên bằng AI
- Nhiều bài báo nói rằng AI sẽ thay thế lập trình viên, nhưng trong việc xây dựng phần mềm, phần khó nhất không phải là viết mã mà là tạo ra các yêu cầu rõ ràng và chính xác
- "Đó không phải bug mà là tính năng. À, chờ chút, đúng là bug"
- Yêu cầu không rõ ràng sẽ tạo ra bug
- "Để AI thay thế lập trình viên, khách hàng phải mô tả chính xác những gì họ muốn. Chúng ta vẫn an toàn"
Thực tế của AI: cờ vua vs. xe tự lái
- AI đã được ứng dụng thành công trong những lĩnh vực có luật lệ giới hạn và rõ ràng như cờ vua, nhưng xe tự lái là một thách thức phức tạp hơn nhiều đối với AI do có vô số biến số và tình huống ngoại lệ
- Trong lĩnh vực công nghệ, tiêu chuẩn thường là 5 hoặc 6 số 9 về Availability (độ sẵn sàng) (99.999% đến 99.9999%)
- Chi phí để đạt 99% không quá lớn. 99% có nghĩa là website của bạn bị downtime không quá 3 ngày mỗi năm (87,6 giờ)
- Nhưng mỗi khi thêm một số 9, chi phí để đạt được mức đó lại tăng theo cấp số nhân
- Để đạt 99.9999%, hệ thống chỉ được downtime 31,5 giây mỗi năm (99.9% là 526 phút/8,76 giờ, 99.99% là 52 phút, 99.999% là 5,2 phút)
- Để làm được điều này cần một lượng kế hoạch và công sức khổng lồ, và dĩ nhiên là rất tốn kém
- Dù AI có tốt đến đâu đi nữa, vẫn luôn tồn tại rủi ro tai nạn
- Không rõ có thể chấp nhận mức độ tai nạn đến đâu, nhưng ít nhất cũng phải ngang với con người
AI không thể tạo ra phần mềm, nó chỉ có thể tạo ra mã
- Việc tạo ra và duy trì phần mềm có nhiều điểm chung với lái xe hơn là với cờ vua
- Có vô số biến số, và các quy tắc được quyết định bằng phán đoán
- Khi làm phần mềm, ta có thể có một kết quả mong muốn, nhưng nó không đơn giản như cờ vua
- Phần mềm gần như không bao giờ thực sự hoàn tất. Đó là một quá trình liên tục, nơi tính năng tiếp tục được thêm vào và bug tiếp tục được sửa
- Khác với phần mềm, một ván cờ sẽ kết thúc khi đã thắng hoặc thua
- Trong phát triển phần mềm, chúng ta có một công cụ để biến thiết kế phần mềm thành thứ giống như bộ máy luật của cờ vua: đặc tả kỹ thuật
- Ở trạng thái tốt nhất, đặc tả kỹ thuật này dự đoán hành vi của người dùng và luồng của chương trình
- Nhưng trường hợp như vậy rất hiếm. Quá thường xuyên, chúng ta nhận được một wishlist thay vì đặc tả tính năng, hoặc một wireframe nguệch ngoạc trên khăn giấy hay tài liệu yêu cầu mơ hồ, khiến chúng ta phải tự đưa ra phán đoán tốt nhất
- Tệ hơn nữa, các yêu cầu còn thay đổi và đôi khi bị phớt lờ
- Những yêu cầu bất khả thi. Bài gốc nêu ví dụ một dự án khảo sát COVID qua tin nhắn ở nơi không có WIFI. Đáng ra không nên làm
- Liệu AI có thật sự xử lý được kiểu tình huống này không?
- Để AI có thể tạo ra phần mềm hoạt động được, trước hết phải biết rõ mình muốn gì và có thể định nghĩa điều đó một cách rõ ràng, chính xác
- Trong 10 năm qua, ngành công nghiệp phần mềm đã chuyển từ waterfall sang phương pháp agile
- Trong waterfall, người liên quan nghĩ rằng họ biết mình muốn gì và có thể tài liệu hóa điều đó, nhưng cách này thất bại vì khi sản phẩm cuối cùng được bàn giao, họ lại vô cùng thất vọng
- Agile là lời giải cho quy trình này
- AI có thể phù hợp nhất với việc viết lại phần mềm hiện có sang phần cứng hiện đại và ngôn ngữ mới
- Vẫn còn nhiều nơi sử dụng phần mềm viết bằng COBOL, nhưng gần như không còn ai học ngôn ngữ đó nữa
- AI có thể tạo ra phần mềm đã tồn tại nhanh hơn con người, nhưng đó là vì đã có ai đó suy nghĩ trước về cách phần mềm ấy cần được xây dựng
- AI có thể xây dựng phần mềm khá tốt nếu chúng ta dùng quy trình waterfall, thứ mà chúng ta gọi là cuộc hành quân tử thần
- Trong waterfall, thứ tệ hại là ai? Chính là con người
- Không chỉ là phần viết tài liệu để chuyển cho đội lập trình, mà là toàn bộ mọi thứ trước đó
- AI có thể làm được vài điều đáng kinh ngạc, nhưng nó không thể đọc suy nghĩ của bạn hay nói cho bạn biết bạn muốn gì
8 bình luận
Tôi nghĩ điều này áp dụng cho toàn bộ các lĩnh vực có lo ngại về AI, chứ không chỉ riêng phát triển phần mềm.
Có lẽ các công nghệ để tự động hóa việc xác minh yêu cầu sẽ còn tiến bộ rất nhiều. Tự động hóa kiểm thử dường như sẽ càng tỏa sáng hơn nữa... Phải chăng sắp đến một thế giới nơi con người chỉ còn quản lý các test case thôi sao....
“Trong waterfall, ai là kẻ tệ hại nhất? Chính là con người”
Là người đã từng trải qua, tôi rất đồng cảm
Đã đọc được một bài hay rồi, giờ thì đi tổng hợp issue thôi nào
Dù AI có thể khó thay thế được lập trình viên, nhưng nếu lập trình viên chỉ cần đưa ra vài từ khóa thì liệu AI có thể làm phần viết mã không?
Biết đâu kiểu “lập trình bằng miệng” từng được nói đùa trước đây lại trở thành hiện thực..
Bây giờ chẳng phải mọi người đang phát triển theo kiểu này bằng cách tận dụng copilot hay các AI khác sao?
Chỉ cần viết bằng tiếng Anh trong phần chú thích những nội dung cần thiết thì nó sẽ tự tạo ra, rồi mình chỉ cần kiểm tra xem có khớp với điều mình muốn hay không thôi.
Tôi rất đồng cảm với nội dung này. Tôi cho rằng trong tương lai, tất cả các kỹ sư phần mềm sẽ đều có năng lực mang tính TPM và cũng sẽ được yêu cầu như vậy.