38 điểm bởi GN⁺ 2026-02-25 | 3 bình luận | Chia sẻ qua WhatsApp
  • “Không đọc mã” có nghĩa là dựa vào đặc tả, kiểm thử, phân tích tĩnh và tín hiệu từ production thay vì review từng dòng; vẫn có thể leo thang sang review mã ở các vùng rủi ro cụ thể
  • Các trường hợp Harness Engineering của OpenAI và OpenClaw cho thấy cách tiếp cận tập trung vào kiểm thử, quan sát và hạ tầng xác minh tự động thay vì bản thân mã
  • Để phản biện sự hoài nghi về black box, bảo mật và sự tích tụ lỗi, bài viết nhấn mạnh mô thức lịch sử của các tầng trừu tượng và tầm quan trọng của công cụ xác minh tự động
  • Bài viết đưa ra lập trường cân bằng rằng không phải loại bỏ hoàn toàn việc đọc mã, mà vẫn cần xem xét trực tiếp khi đưa ra quyết định về an toàn, bảo mật và kiến trúc
  • Mã ngày càng trở thành chi tiết triển khai, và cần đặt cược vào quỹ đạo mà trong đó các lớp đặc tả, kiến trúc và xác minh nổi lên như những đầu ra cốt lõi

Ý nghĩa chính xác của “không đọc mã”

  • Câu “Tôi không còn đọc mã nữa” trong bài trước đã khơi mào hơn 200 bình luận tranh luận sôi nổi trên Hacker News
  • Ý nghĩa chính xác là với phần lớn mã sản phẩm, không lấy review từng dòng làm phương thức xác minh mặc định
  • Vẫn kiểm tra đặc tả và kiểm thử, xem xét chọn lọc các diff đã thay đổi, và tín hiệu từ production; ở các vùng rủi ro cụ thể vẫn có thể leo thang sang đọc mã
  • Lý do không đọc mã không phải vì mã kém quan trọng hơn, mà vì đặc biệt trong môi trường quy mô lớn, đọc từng dòng không phải là cách hiệu quả nhất để bảo đảm tính đúng đắn

Những ví dụ làm cơ sở

  • Harness Engineering của OpenAI

    • OpenAI thông qua bài blog Harness Engineering giải thích rằng vai trò trung tâm của đội ngũ kỹ sư phần mềm đã chuyển từ viết mã sang thiết kế môi trường, đặc tả ý định và xây dựng vòng lặp phản hồi
    • 3 kỹ sư chỉ với tác tử Codex đã tạo ra 1 triệu dòng mã để xây dựng sản phẩm được hàng trăm người dùng nội bộ sử dụng
    • Họ đầu tư tập trung vào harness xung quanh mã — tài liệu, quy tắc phụ thuộc, linter, hạ tầng kiểm thử, hệ thống quan sát — hơn là bản thân mã
    • Không có đầu tư riêng cho review mã ở cấp từng dòng
  • OpenClaw

    • OpenClaw, do một người duy nhất xây dựng mà không có đội ngũ, là một trong những dự án mã nguồn mở tăng trưởng nhanh nhất vài tháng gần đây, đạt hơn 100.000 sao trên GitHub
    • Cấu trúc vận hành song song 5–10 tác tử, được thiết kế và điều hành bởi một kỹ sư giàu kinh nghiệm, không phải người mới
    • Trong cuộc phỏng vấn có tiêu đề “Tôi triển khai mã mà mình không đọc”, tác giả nói rằng mình đầu tư tập trung vào refactor, kiến trúc, kiểm thử và harness xoay quanh AI coding
  • Từ Coder sang Orchestrator

    • Một kỹ sư kỳ cựu đã tạo ra ESLint và viết nhiều đầu sách của O'Reilly dự báo trong bài viết gần đây rằng tương lai của kỹ nghệ phần mềm sẽ không còn xoay quanh việc viết mã mà là điều phối các tác tử AI
    • Năng lực cốt lõi đang dịch chuyển từ cú pháp và triển khai sang thiết kế kiến trúc, viết đặc tả và thiết kế vòng lặp phản hồi

Phản biện đối với sự hoài nghi

  • Phê phán black box

    • Trước phê phán rằng “có ai tự nguyện chọn cách tiếp cận black box không?”, bài viết nhấn mạnh rằng đầu ra của mã không phải là bản thân mã mà là sản phẩm
    • Phép ví von gần hơn không phải là nhiếp ảnh gia không xem ảnh, mà là không soi vào cấu trúc bên trong chiếc máy ảnh tạo ra bức ảnh đó
    • Việc xây dựng hệ thống trên các tầng trừu tượng mà ta không trực tiếp nhìn vào vốn đã là thực hành phổ biến trong nhiều lĩnh vực kỹ thuật, bao gồm cả phần mềm
  • Lo ngại về bảo mật

    • Trước lo ngại rằng mã do AI sinh ra có thể bị cài backdoor, bài viết cho rằng đây không phải vấn đề “con người phải đọc mọi dòng”, mà là vấn đề của tooling và hệ thống xác minh
    • Phân tích tĩnh, quét phụ thuộc và security linter tồn tại cũng vì con người có thể viết mã dễ tổn thương; lời giải là hệ thống xác minh tự động mạnh hơn, tức cùng hướng với cách tiếp cận lấy harness làm trung tâm
    • Tuy vậy, ở những khu vực đặc biệt nhạy cảm về bảo mật thì review của con người vẫn cần thiết
  • Vấn đề tích tụ lỗi

    • Phê phán thường gặp nhất là: “Nếu mã thất bại thì tiền của người dân biến mất, máy bay dừng lại, ô tô hỏng. Hãy đọc mã.”
    • Theo dữ liệu của CodeRabbit, mã do AI tạo ra gây ra nhiều khuyết tật hơn 1,7 lần trên toàn bộ chất lượng phần mềm
    • Tuy nhiên, cách làm AI coding rất đa dạng, và phát triển lấy harness làm trung tâm với đặc tả, kiểm thử phân tầng và ràng buộc kiến trúc khác về bản chất so với vibe coding đơn thuần
    • Một cách tiếp cận được nêu trong bình luận: dựa vào đặc tả, kiểm thử và phân tích tĩnh, duy trì độ bao phủ kiểm thử trên 85%, xây dựng testing ladders là các bài kiểm thử tích hợp mở rộng phạm vi dần dần, và dùng benchmarking cùng dogfooding cường độ cao để lộ lỗi sớm
    • Câu hỏi cốt lõi không phải là “mã AI trung bình có nhiều lỗi hơn không?”, mà là “khi phát triển với cùng tốc độ trong một harness được thiết kế tốt, nó có tạo ra nhiều lỗi hơn các lựa chọn thay thế không?”
    • Greg Brockman, đồng sáng lập OpenAI, cũng cho rằng cần áp dụng cùng một tiêu chuẩn như với mã do con người viết

Cấu trúc hệ thống thực tế

  • Trong phần lớn sự nghiệp, tác giả đã viết mã cho những hệ thống dù chủ yếu là công cụ nội bộ nhưng vẫn được người dùng thực tế phụ thuộc vào
  • Tác giả hiểu hình dạng và cấu trúc của mã, nhưng chọn không trực tiếp đọc nó
  • Quy trình làm việc dựa trên đặc tả

    • Trước khi tác tử viết mã, trước tiên tác giả cùng AI viết ra một bản đặc tả cực kỳ cụ thể và chi tiết thông qua đối thoại
    • Cấu trúc được tổ chức để có thể truy vết từ đặc tả sản phẩm đến kế hoạch thực thi thông qua ID yêu cầu
    • Mọi tác vụ trong kế hoạch thực thi đều có tiêu chí chấp nhận nêu rõ phương thức xác minh
      • Kiểm thử tự động là (TEST)
      • Xác nhận trực quan là (BROWSER:DOM)
      • Chỉ dùng (MANUAL) khi không còn cách nào khác, và ngay cả khi đó vẫn cố tạo kiểm tra tự động dựa trên curl hoặc bash trước nếu có thể
    • Những tác vụ không có metadata xác minh cụ thể sẽ bị kỹ năng audit chặn trước khi bắt đầu công việc
  • AI Coding Toolkit (harness)

    • Bộ công cụ gồm prompt, skill, hook và script ràng buộc cách tác tử làm việc, bao gồm hơn 35 skill, chỉ dẫn tác tử có cấu trúc và hạ tầng xác minh phân tầng
    • Quản lý chỉ dẫn cho tác tử như một phần của hạ tầng
      • AGENTS.md đóng vai trò bộ quy tắc chính: sửa đổi thận trọng, giữ nguyên interface hiện có, tuân thủ TDD, không phỏng đoán, không viết lại lịch sử git
      • VISION.md định nghĩa các ranh giới chiến lược
    • Vận hành hệ thống xác minh phân tầng
      • Sau mỗi giai đoạn, skill checkpoint chạy các cổng kiểm tra nhiều lớp gồm kiểm tra kiểu, linting, test, build, mutation test và quét bảo mật
      • Nếu có thể dùng công cụ trình duyệt thì sẽ thực hiện xác minh trình duyệt tự động
      • Gửi diff đã thay đổi sang một mô hình AI khác (Codex CLI) để thực hiện review kiểu second opinion
      • Xác minh chéo giữa các mô hình giúp bù đắp điểm mù của một mô hình đơn lẻ
    • Đôi khi vẫn đọc mã trực tiếp, nhưng chỉ trong các tình huống ngoại lệ
      • Khi mọi kiểm thử đều qua nhưng hành vi của sản phẩm vẫn tạo cảm giác kỳ lạ
      • Khi cần đưa ra quyết định kiến trúc quan trọng
      • Khi gỡ lỗi một sự cố mà nhiều tác tử đều không giải quyết được
    • Ngay cả trong các trường hợp đó, mục tiêu không phải phân tích bản thân mã, mà là xác định lỗ hổng nào trong harness đã cho phép vấn đề xảy ra để ngăn tái diễn

Khi cần đọc mã

  • Với các hệ thống liên quan trực tiếp đến an toàn, dịch vụ nhạy cảm về bảo mậtcác quyết định kiến trúc quan trọng, kỹ nghệ phần mềm chính là kỹ thuật, và trong thời đại mã được tạo ra hàng loạt như hiện nay, tầm quan trọng đó thậm chí còn lớn hơn
  • Phép ví von "Children of the Magenta" trong ngành hàng không chỉ hiện tượng phi công phụ thuộc quá mức vào đường bay màu magenta trên màn hình điều hướng
    • Bài học không phải là “đừng dùng autopilot”, mà là hãy duy trì khả năng can thiệp khi cần
    • Khi có vấn đề, cần có khả năng hạ mức tự động hóa để quay về kỹ năng nền tảng, nhưng yêu cầu mọi chuyến bay luôn phải điều khiển thủ công là kém hiệu quả và còn nguy hiểm hơn
    • Cốt lõi là sự cân bằng: tận dụng tự động hóa nhưng không đánh mất năng lực can thiệp

Hãy đặt cược vào quỹ đạo

  • Mọi tầng trừu tượng trong lịch sử điện toán đều từng gặp sự phản đối khi mới xuất hiện; một ví dụ tiêu biểu là việc Dennis Ritchie và Ken Thompson viết lại Unix bằng C vào năm 1973
  • Khi đó đã có những chỉ trích rằng nó sẽ chậm hơn, làm mất khả năng kiểm soát phần cứng và khiến độ phức tạp gây khó cho bảo trì; nhưng tầng trừu tượng của C đã giúp Unix mở rộng thành một hệ điều hành có tính di động và tầm ảnh hưởng cao
  • Mô thức lặp lại là những người có chuyên môn ở tầng đang bị trừu tượng hóa sẽ nhấn mạnh tầm quan trọng của việc hiểu tầng đó; điều này đúng trong một số tình huống, nhưng phần lớn thời gian lại có xu hướng được dùng để tư duy và thiết kế ở tầng trừu tượng cao hơn
  • Việc chọn không đọc mã không phải là tuyên bố rằng công cụ đã hoàn hảo, mà là một nhận định rằng trong nhiều trường hợp sử dụng, cách này đã đủ hiệu quả và đang cải thiện rất nhanh
  • Mã không biến mất mà ngày càng dịch chuyển thành chi tiết triển khai, trong khi đặc tả, kiến trúc và các lớp xác minh đang nổi lên như những đầu ra cốt lõi

3 bình luận

 
foriequal0 2026-02-25

Có vẻ như lập trình bằng AI, hơn là một dạng trừu tượng hóa hay tự động hóa, lại gần với việc ngoại hóa/thuê ngoài hơn.
Và tôi cũng có cảm giác rằng thiết kế và kiểm chứng, thay vì là các yếu tố để nâng cao mức độ tinh vi và độ chính xác, đang được đưa vào như những yếu tố mang tính quy chế nhằm cố níu giữ một xã hội có mức độ tin cậy thấp.

 
sang459 2026-02-25

Phân tích rất chính xác.
Có vẻ điểm quan trọng là lập trình bằng AI về bản chất mang tính xác suất.

 
chamchi 2026-03-03

Tôi đang tạo thư viện bằng AI, và có vẻ như cả việc refactor, cải thiện chất lượng mã lẫn kiểm tra lỗi cũng nên chạy bằng AI.