- Có hai mô thức chính mà các lập trình viên sử dụng AI
- Bootstrapper:
- Sử dụng các công cụ như Bolt, v0, AI chuyển ảnh chụp màn hình thành mã để nhanh chóng tạo nguyên mẫu ban đầu.
- Dùng AI từ điểm khởi đầu là thiết kế hoặc ý tưởng để tạo codebase ban đầu, rồi phát triển nguyên mẫu hoạt động được chỉ trong vài giờ hoặc vài ngày
- Iterator:
- Sử dụng các công cụ như Cursor, Cline, Copilot, WindSurf trong công việc phát triển hằng ngày để hoàn thành mã, refactor phức tạp, tạo test và tài liệu
Khác biệt trong cách dùng AI giữa lập trình viên giàu kinh nghiệm và người mới bắt đầu
- Lập trình viên giàu kinh nghiệm: liên tục refactor mã do AI đề xuất, xử lý edge case, củng cố định nghĩa kiểu và rà soát các quyết định kiến trúc
- Người mới bắt đầu: có xu hướng chấp nhận nguyên trạng đầu ra của AI, nên dễ tạo ra thứ mã kiểu 'ngôi nhà bằng bài' có thể gặp sự cố trong môi trường thực tế
Nghịch lý của công cụ AI: nghịch lý tri thức
- Lập trình viên giàu kinh nghiệm: dùng AI để tăng tốc những việc họ đã biết
- Người mới bắt đầu: cố dùng AI để học xem mình phải làm gì
- Kết quả: hiệu quả sử dụng AI thay đổi rất lớn tùy theo mức độ thành thạo
Vấn đề 70% khi người không chuyên dùng công cụ lập trình AI
- Tiến độ ban đầu: có thể nhanh chóng triển khai 70% tính năng mong muốn bằng công cụ AI
- 30% còn lại: khi cố sửa các lỗi nhỏ thì lại phát sinh vấn đề mới, và trong lúc xử lý chúng có thể rơi vào vòng luẩn quẩn tạo thêm nhiều vấn đề hơn
Chiến lược để tận dụng công cụ AI hiệu quả
- Mẫu AI tạo bản nháp: dùng AI tạo phần triển khai cơ bản rồi tự rà soát và refactor
- Dùng AI như công cụ học tập: thông qua đối thoại liên tục để hiểu đoạn mã AI tạo ra, đồng thời học các khái niệm lập trình cơ bản và tích lũy kiến thức dần dần
- Nhận thức giới hạn của AI: công cụ AI hữu ích cho phát triển nguyên mẫu, hỗ trợ học tập và kiểm chứng ý tưởng, nhưng để tạo ra phần mềm có thể bảo trì và sẵn sàng cho production thì vẫn cần kiến thức kỹ thuật thực sự
Sự trỗi dậy của kỹ thuật phần mềm mang tính tác tử
- Hệ thống tác tử: đang phát triển vượt ra ngoài việc chỉ phản hồi lệnh, trở thành các hệ thống có thể lập kế hoạch, thực thi và lặp lại
- Triển vọng tương lai: AI không thay thế lập trình viên mà đang tiến tới vai trò cộng tác viên ngày càng chủ động hơn, tôn trọng chỉ dẫn và chuyên môn của con người đồng thời chủ động giải quyết vấn đề
- AI đặc biệt hữu ích trong việc triển khai các mẫu mà ta đã biết, tạo nguyên mẫu ý tưởng nhanh và khám phá nhiều cách tiếp cận khác nhau
- Tự động hóa các công việc lập trình lặp đi lặp lại và thường nhật để có thể tập trung vào những vấn đề thú vị hơn
Những điểm cần lưu ý khi dùng công cụ AI
- Tầm quan trọng của trải nghiệm người dùng: có thể dùng AI để nhanh chóng tạo bản demo, nhưng nếu không xử lý cẩn thận các thông báo lỗi, edge case, trạng thái UI có thể phát sinh khi người dùng thực tế sử dụng thì sẽ gây bất tiện cho họ
- Sự trở lại của tinh thần thủ công:
- AI đã giúp việc phát triển phần mềm nhanh hơn, nhưng có nguy cơ làm mất đi nghệ thuật tạo ra trải nghiệm đạt chất lượng tiêu dùng thực sự.
- Công cụ AI có thể xử lý các công việc lập trình thường nhật để giúp lập trình viên tập trung vào những chi tiết quan trọng.
Kết luận
- Vai trò của AI:
- AI không phải để viết nhiều mã hơn thật nhanh, mà để giúp xây dựng phần mềm tốt hơn
- AI không cải thiện chất lượng phần mềm một cách đột biến.
- Phần khó của phát triển phần mềm vẫn cần đến phán đoán của con người.
- AI cho phép khám phá nhanh để tìm giải pháp tốt hơn, nhưng không thể thay thế các thực hành phần mềm tốt.
- Trách nhiệm của con người: việc dùng AI một cách khôn ngoan để giữ vững các nguyên tắc kỹ thuật và nâng cao chất lượng phần mềm vẫn là phần việc của con người
12 bình luận
Việc tận dụng công nghệ là tốt, nhưng có quá nhiều người giao phó cả việc suy nghĩ cho nó, và điều đó càng thấy rõ hơn mỗi khi tham gia các hoạt động như giáo dục nên tôi khá lo ngại. Thành thật mà nói, tôi không muốn làm việc cùng những người như vậy.
Có lẽ cũng tương tự như cuộc tranh luận rằng IDE làm hỏng lập trình viên..
Tôi mệt mỏi vì phải sửa mã AI do khách hàng tạo ra
Khi AI bắt đầu tự đưa ra phán đoán thì có vẻ như sẽ không còn lời giải nào nữa
Có vẻ như khi đưa phản hồi cho AI thì nó sẽ dần tốt lên… nhưng đến một thời điểm nào đó lại hỏng. Cần có cách để bắt được đúng khoảnh khắc đó. Và khi khoảnh khắc ấy đến, phải chọn giữa việc bỏ AI hay làm lại từ đầu.
production-ready(trong ngữ cảnh bài viết là sẵn sàng đưa vào vận hành thực tế) thì nên dịch thế nào cho tự nhiên?Mức độ sẵn sàng cho dịch vụ thực tế
Mức độ sản phẩm
Sẵn sàng phát hành!
Tôi thường dịch là có thể phát hành hoặc sẵn sàng phát hành.
"Có vẻ như mức "có thể phát hành" là khá ổn!"
"sẵn sàng để triển khai" (cho sử dụng thực tế hoặc cho khách hàng)thì thế nào?Còn những thứ đã được kiểm chứng trong thực tế thì sao?
Có vẻ trong thực tế người ta thường diễn đạt việc đã được kiểm chứng thực chiến là battle tested.
Ý kiến trên Hacker News
AI, cũng như nhiều công cụ trước đây, đã cố gắng thay thế một phần của việc lập trình. Nhưng những công việc cốt lõi vẫn cần đến bộ não con người
AI giống như một lập trình viên junior đầy nhiệt huyết trong nhóm
Có thể dùng công cụ AI để nhanh chóng phát triển công cụ mới
Với lập trình viên junior, AI là con dao hai lưỡi
Mô hình "tin tưởng nhưng phải kiểm chứng" là rất quan trọng
csscolorparsercủa Rust sang PythonAI có thể viết mã rất nhanh, nhưng không làm quá trình học nhanh hơn
Copilot thất bại trong các tác vụ phức tạp
GenAI có thể mang lại kết quả đủ chiều sâu với các giải pháp có yêu cầu đã được biết rõ
Việc kiểm chứng công việc của AI là rất quan trọng
Rất khó gặp được những người thực sự đã tăng mạnh năng suất nhờ AI