7 điểm bởi GN⁺ 2025-03-25 | 1 bình luận | Chia sẻ qua WhatsApp
  • Các công cụ lập trình dựa trên AI đang bùng nổ, và dù một số lập trình viên cá nhân đạt được kết quả ấn tượng với AI, trong các nhóm kỹ thuật thực tế, hiệu quả thường khá hạn chế
  • Có 2 lý do tạo ra sự khác biệt về kết quả: "green-field vs codebase lớn", "chơi đơn vs nhiều người chơi"
  • Vì vậy, tác giả dự đoán một quy trình làm việc viết code mới cho AI và xu hướng sắp tới như sau:
    • Nhiều công ty đang tuyển thêm kỹ sư — đặc biệt là các công ty tốt
    • Thách thức lớn nhất là codebase quy mô lớn — đây là nơi thực sự tạo ra giá trị
    • Robot vs Iron Man — khác biệt về triết lý của các công cụ AI
    • Tối ưu hóa hạnh phúc của lập trình viên — những việc nặng nhọc nào AI có thể xử lý?
    • Theo dõi mã do AI tạo là phản mẫu — đừng sa vào cám dỗ phải truy vết

Nguyên nhân của sự khác biệt về hiệu quả

  • Green-field vs codebase lớn
    • Phần lớn công cụ AI được tối ưu cho dự án mới (green-field)
    • Với codebase cũ, mức độ tận dụng giảm đi
  • Chơi đơn vs nhiều người chơi
    • Quy trình làm việc AI hiện tại tập trung vào chế độ chơi đơn
    • Khi cộng tác trong nhóm sẽ phát sinh vấn đề (xung đột merge, xử lý ngữ cảnh phức tạp, v.v.)

"Quy trình AI ổn khi làm việc một mình, nhưng khi dùng trong nhóm thì xung đột xảy ra thường xuyên và kém hiệu quả."

Các công ty xuất sắc đang tuyển thêm nhiều kỹ sư hơn

  • Dự đoán rằng AI phát triển sẽ làm giảm nhu cầu kỹ sư là sai
  • Khi AI làm tăng năng suất, cuối cùng sẽ xảy ra nghịch lý Jevons khiến tuyển dụng kỹ sư tăng lên
  • Phản ứng của từng loại tổ chức trước việc áp dụng AI

    • Nhóm hàng đầu: năng suất tăng nhờ AI → tuyển thêm kỹ sư
    • Nhóm trung bình: không thay đổi tuyển dụng do quan liêu và chi phí điều phối
    • Nhóm yếu: công nghệ chỉ là công cụ đơn thuần → thu hẹp đội ngũ để cắt giảm chi phí

Vấn đề lớn nhất là codebase quy mô lớn

  • AI rất giỏi giải bài toán thuật toán, nhưng hiệu quả trong công việc freelance thực tế lại thấp
  • Thiếu ngữ cảnh là nguyên nhân chính
  • Các cách truyền ngữ cảnh vào codebase:
    • Fine-tuning → khó dự đoán và tốn kém
    • Mở rộng context window → khó đảm bảo độ chính xác
    • RAG (Retrieval-Augmented Generation) → hiện là hướng hứa hẹn nhất

RAG tốt là chìa khóa để mở rộng công cụ lập trình AI

Robot vs Iron Man: khác biệt triết lý của công cụ AI

  • Công cụ tự trị → hoạt động như một tác nhân độc lập
    • Nhận lệnh từ Slack và tự động gửi PR
    • Ví dụ: Devin, Lindy
  • Công cụ tăng cường → con người dẫn dắt công việc, công cụ đóng vai trò hỗ trợ
    • Dùng như công cụ hỗ trợ trong IDE, PR cuối cùng do con người gửi
    • Ví dụ: Augment, Cursor
  • Chiến lược nào có lợi hơn?

    • Vòng phản hồi → công cụ tăng cường có thể sửa lỗi nhanh hơn
    • Khả năng mở rộng → công cụ tự trị có nguy cơ làm tăng độ phức tạp tổ chức
    • Tiếp cận lấy con người làm trung tâm → công cụ tăng cường phát triển theo hướng tăng sức mạnh cho con người

"AI không nên tạo ra chiến tranh vô tính, mà nên tạo ra Avengers"

Tối ưu hóa vì hạnh phúc của lập trình viên

  • Các nhóm thành công không tập trung vào năng suất mà vào hạnh phúc của lập trình viên
  • Tập trung dùng AI để giảm các công việc đơn giản, nặng nhọc
  • Những Toil mà AI có thể giải quyết
    • 1) Tự động hóa kiểm thử
      • AI viết mã kiểm thử → giảm gánh nặng code boilerplate
      • Phần thưởng cho việc viết đặc tả trước tăng lên → dễ áp dụng TDD hơn
    • 2) Tự động hóa tài liệu
      • AI viết chú thích mã và đặc tả kỹ thuật → giảm gánh nặng quản lý tài liệu
      • AI có thể giải thích cấu trúc và cách hoạt động của mã → tuy nhiên ý đồ khi viết mã vẫn cần con người giải thích
    • 3) Cải thiện chất lượng mã
      • Có thể kiểm tra style code và lỗ hổng bảo mật
      • Ví dụ công cụ AI: Augment, Packmind, Codacy

Theo dõi mã do AI tạo là phản mẫu

  • Nếu AI làm việc tự trị thì cần theo dõi hiệu quả
  • Nhưng nếu AI tăng cường cho con người, việc phân biệt mã AI và mã người là vô nghĩa
  • Tập trung vào năng suất và sự hài lòng của lập trình viên sẽ hiệu quả hơn

Điểm đáng chú ý chính

  1. Áp dụng AI làm tăng tuyển dụng kỹ sư → do nghịch lý Jevons, khi năng suất tăng thì tuyển dụng cũng mở rộng
  2. Cần đưa AI vào môi trường nhiều người chơi → cần tăng cường cộng tác trong nhóm
  3. Cần giải quyết vấn đề codebase quy mô lớn → cung cấp ngữ cảnh là chìa khóa
  4. Công cụ tăng cường có lợi hơn công cụ tự trị → con người dẫn dắt, AI hỗ trợ
  5. Tối ưu hóa hạnh phúc của lập trình viên → coi trọng hạnh phúc hơn năng suất
  6. Sự trở lại của TDD → AI làm nhẹ gánh viết kiểm thử
  7. Giảm gánh nặng tài liệu hóa → AI tự động viết chú thích mã và đặc tả kỹ thuật
  8. Cải thiện chất lượng mã → AI kiểm tra style code và vấn đề bảo mật
  9. Theo dõi mã AI là vô nghĩa → nên đánh giá kết quả bằng năng suất và mức độ hài lòng tổng thể

1 bình luận

 
livekth 2025-03-25

Mình thấy khó đồng ý với ý số 1.

  • Các công ty tốt thường chỉ muốn tuyển những kỹ sư thật giỏi. Nguồn lực kỹ sư như vậy thì có hạn. Vì thế việc tuyển dụng không tăng lên.

Mình cảm nhận điều này rất nhiều. Vì công ty nhỏ cũng đang cố gắng tuyển kỹ sư giỏi, nhưng thực sự không hề dễ.