42 điểm bởi GN⁺ 2026-03-25 | 2 bình luận | Chia sẻ qua WhatsApp
  • Tóm tắt trải nghiệm 6 tuần số lượng commit tăng vọt nhờ cải thiện hạ tầng phát triển như tự động hóa các tác vụ lặp đi lặp lại đơn giản của AI agent, loại bỏ thời gian chờ build và xây dựng hệ thống worktree song song
  • Tự động hóa quy trình tạo PR bằng skill /git-pr để loại bỏ chi phí chuyển ngữ cảnh, đồng thời agent trực tiếp viết phần mô tả PR chi tiết hơn
  • Chuyển công cụ build sang SWC để rút ngắn thời gian khởi động lại server xuống dưới 1 giây, tạo ra môi trường phát triển không bị đứt mạch
  • Dùng tính năng preview của Claude Code để agent tự kiểm chứng UI, giải quyết điểm nghẽn khi lập trình viên phải tự mình kiểm tra mọi thay đổi
  • Khi lần lượt loại bỏ từng yếu tố gây ma sát, mô hình Theory of Constraints nơi điểm nghẽn tiếp theo lộ ra được áp dụng nguyên vẹn
  • Giờ đây, thay vì triển khai tính năng, trọng tâm là xây dựng hạ tầng để agent làm việc hiệu quả và tăng tốc độ vòng lặp

Tự động hóa các tác vụ lặp đi lặp lại đơn giản

  • Ban đầu, toàn bộ quy trình từ stage thay đổi, viết commit message, viết mô tả PR, push, đến tạo GitHub PR đều được thực hiện thủ công
  • Việc nhận ra đây là công việc lặp lại đơn thuần (grunt work) là bước ngoặt đầu tiên, và vai trò đã thay đổi từ người trực tiếp triển khai sang người quản lý agent
  • Viết skill Claude Code đầu tiên là /git-pr để tự động hóa toàn bộ quá trình tạo PR
    • Vì agent đọc toàn bộ diff và tóm tắt thay đổi một cách chuẩn xác, nên mô tả PR còn chi tiết hơn so với khi tự viết
    • CLAUDE.md của codebase ghi rõ dùng Graphite, cá nhân vẫn thích plain git hơn nên vận hành bằng /git-pr
  • Hiệu quả lớn hơn cả việc tiết kiệm thời gian là loại bỏ overhead tinh thần: không còn những lần chuyển ngữ cảnh nhỏ từ “tư duy về code → tư duy giải thích code” mỗi khi viết PR

Loại bỏ thời gian chờ

  • Để xem preview cục bộ, liên tục phải tắt dev server và khởi động lại trên nhánh mới, tách khỏi phần việc đang làm
  • Build server mất khoảng 1 phút, đủ dài để phá vỡ sự tập trung nhưng lại quá ngắn để làm việc khác
  • Chuyển build sang SWC giúp thời gian khởi động lại server giảm xuống dưới 1 giây
    • Vừa lưu file là server đã sẵn sàng, không còn khoảng trống khiến sự chú ý bị trôi đi
    • Được ví như khác biệt giữa “một cuộc trò chuyện có những khoảng im lặng gượng gạo” và “một cuộc trò chuyện trôi chảy tự nhiên”

Agent tự kiểm chứng UI

  • Trước đây, mọi thay đổi UI đều phải tự mở preview cục bộ để kiểm tra nên lập trình viên trở thành điểm nghẽn của mọi tính năng
  • Sau khi extension Chrome liên tục bị crash, đã chuyển sang dùng tính năng preview của Claude Code
    • Agent có thể thiết lập preview và giữ nguyên dữ liệu phiên, từ đó trực tiếp nhìn thấy UI thực sự hiển thị ra sao
  • Tích hợp điều này vào workflow, để agent chỉ được coi là “xong” khi tự kiểm chứng UI
    • Có thể ủy quyền việc kiểm chứng nên chỉ cần can thiệp ở bước review cuối, đồng thời agent có thể tự vận hành lâu hơn
    • Việc agent tự phát hiện lỗi của chính mình tạo ra tác động lớn hơn dự đoán rất nhiều

Hệ thống worktree song song

  • Sau khi có rebuild nhanh và preview tự động, điểm ma sát tiếp theo lộ ra là: chỉ có thể thoải mái làm một việc tại một thời điểm
  • Muốn review PR của agent khác hoặc đồng đội thì phải checkout từ main sang nhánh PR rồi rebuild và test, nhưng việc này xung đột với các thay đổi chưa commit
    • stash → checkout → rebuild → test → switch back → pop stash, hoặc tạo worktree thủ công rồi lại gặp xung đột cổng
  • Ứng dụng cần các cổng riêng cho frontend và backend, trong khi mọi worktree đều dùng chung cùng một biến môi trường, nên đều cố bind vào cùng cổng
  • Để giải quyết, đã xây dựng hệ thống tự động gán dải cổng riêng cho từng server khi tạo worktree
    • Có thể chạy đồng thời 10 preview
  • Từ chỗ còn quá tải với 2 nhánh song song, đã chuyển sang vận hành cùng lúc 5 worktree
    • Cho nhiều agent chạy trên các worktree riêng để build các tính năng khác nhau, và để chúng tự chạy cho đến khi hoàn tất tự kiểm chứng UI
    • Sau khi tham gia sâu ở giai đoạn lập kế hoạch, sẽ không can thiệp cho đến lúc review code
  • Việc review cũng mượt hơn nhiều: không cần thao tác thiết lập, rebuild hay xử lý xung đột cổng, chỉ còn luồng đọc, kiểm tra, merge

Cốt lõi không phải AI mà là hạ tầng

  • Vai trò đã thay đổi: thay vì dành thời gian tự giải bài toán phức tạp và làm ra UI hoàn hảo, việc xây dựng hạ tầng để agent hoạt động hiệu quả lại trở nên thú vị hơn
  • Tương tự như trở thành người quản lý của một đội 10 người, chứ không còn là lập trình viên đơn độc
  • Đây không phải công việc hào nhoáng mà là phần plumbing, nhưng chính nó quyết định liệu có thể ở trong trạng thái flow hay phải vật lộn với môi trường
  • Ở Tano, công việc có đòn bẩy lớn nhất không phải phát triển tính năng mà là xây hạ tầng biến dòng commit thành một dòng thác

Vòng lặp: áp dụng Theory of Constraints

  • Mỗi bước loại bỏ một kiểu ma sát khác nhau:
    • /git-pr: loại bỏ ma sát định dạng khi biến thay đổi code thành PR
    • SWC: loại bỏ ma sát chờ đợi từ lúc thay đổi đến khi thấy kết quả
    • Tính năng preview: loại bỏ ma sát kiểm chứng khi xác nhận thay đổi
    • Hệ thống worktree: loại bỏ ma sát chuyển ngữ cảnh giữa nhiều luồng công việc
  • Mỗi khi gỡ bỏ một điểm, điểm nghẽn tiếp theo lập tức lộ ra — đúng kiểu mẫu điển hình của Theory of Constraints
  • Bản chất công việc cũng thay đổi: không còn là “dùng công cụ để viết code”, mà là một vòng phản hồi chặt gồm bắt đầu công việc → agent viết code → kiểm tra preview → đọc diff → phản hồi hoặc merge → công việc tiếp theo
  • Khi vòng lặp đủ nhanh, sự chú ý không còn kẽ hở để trôi đi, và bản thân việc tăng tốc đã trở thành trò chơi
  • Cuối cùng, mục tiêu của phát triển không còn là triển khai tính năng mà là có thể tăng tốc vòng lặp lên thêm bao nhiêu nữa
    • Tốc độ tự nó trở thành niềm vui của kỹ thuật

2 bình luận

 
t7vonn 2026-03-25

Với tư cách là người review, khi thấy PR Description do máy viết thì trải nghiệm của tôi thực sự không mấy tốt. Cũng có lúc tôi nghĩ không biết chỉ cần tinh chỉnh prompt cho tốt là được hay không..

 
GN⁺ 2026-03-25
Ý kiến trên Hacker News
  • Có cảm giác như chỉ số “số dòng code mỗi tuần” của thập niên 90 đang quay trở lại
    Việc “tạo nhiều PR hơn” không phải là bằng chứng cho thấy AI hoạt động tốt, mà chỉ có nghĩa là đang merge nhiều hơn
    Đánh giá hiệu quả chỉ bằng sản lượng mà không tính đến chất lượng code, bug, hay gánh nặng bảo trì thì chẳng khác gì những chỉ số tệ hại mà các nhà quản lý ngày xưa từng áp đặt
    Cuối cùng có lẽ chúng ta không phản đối chỉ số tệ, mà là ghét chính việc bị đo lường

    • Tôi cũng dùng AI hằng ngày, nhưng thay vì nhắm đến “số dòng code”, tôi hướng tới giảm comment PR·lặp lại·bug xuống mức tối thiểu
      Mục tiêu thực sự là tạo ra kết quả đơn giản nhưng có tác động lớn
      Tôi đang thử chạy nhiều agent cùng lúc để chúng thử các cách triển khai khác nhau, rồi kết hợp những ý tưởng tốt nhất lại
      Ngoài ra, tôi tập hợp tài liệu và yêu cầu rồi đặt câu hỏi cho agent, sau đó khái quát hóa feedback từ code review thành checklist để áp dụng cho lần review sau
    • Tác giả còn từng viết blog về burnout và lo âu, nên kiểu ám ảnh năng suất này có vẻ cũng liên quan đến điều đó
      Làm việc đến mức đổ bệnh không phải điều đáng tự hào, mà là dấu hiệu cho thấy hệ thống có vấn đề
    • Ngay ở câu đầu bài viết cũng đã thừa nhận rằng “commit là một chỉ số tệ, nhưng là tín hiệu dễ thấy nhất mà tôi có”
    • Số dòng code vô nghĩa ở cấp độ cá nhân, nhưng lại có ý nghĩa khi ước lượng quy mô toàn hệ thống
      Ví dụ, mô hình COCOMO được tin cậy đến mức còn được dùng trước tòa để ước tính giá trị hệ thống
    • Câu “chúng ta không phản đối chỉ số tệ mà ghét việc bị đo lường” rốt cuộc dẫn đến câu hỏi liệu có tồn tại chỉ số tốt hay không
      Phần lớn lập trình viên không muốn lượng hóa bản thân bằng số liệu
      Tuy vậy, những người ủng hộ AI cho rằng muốn chứng minh có cải thiện thì vẫn cần đo lường
  • Tôi nghĩ nên dùng LLM theo hướng giảm tải nhận thức
    Con người vốn không giỏi multitasking, và LLM cũng không bù được điều đó
    Thay vì giao hẳn phần triển khai cho Claude, tôi dùng nó theo kiểu được hướng dẫn trực tiếp trong quá trình triển khai
    Làm vậy tôi vẫn hiểu được toàn bộ quá trình, đồng thời nhìn được cả chi tiết lẫn bức tranh lớn
    Chỉ cần giao cho Claude những phần lặp đi lặp lại và mang tính máy móc

    • Tôi cũng dùng workflow tập trung vào POC
      Tôi đặt câu hỏi để LLM hiểu bài toán, tự viết phần code cốt lõi rồi để nó lập kế hoạch cho phần triển khai còn lại
      LLM mạnh ở đọc code·giải thích·làm việc đơn giản, còn tôi tập trung vào việc chọn hướng giải quyết vấn đề
    • Tôi thích ý tưởng này đến mức sẽ thử ngay
      Tôi đang thử các prompt như “lập danh sách giả định” hay “liệt kê các quyết định không có trong kế hoạch” để theo dõi những phần mà LLM đã quyết định thay tôi
    • Có người nói kiểu cộng tác cường độ cao này vừa thú vị vừa tạo cảm giác nhập tâm
      Nếu hiểu rõ đặc tính của Claude thì hiệu quả kiểm chứng cũng tăng, và càng có kinh nghiệm thì quản lý chất lượng càng dễ
  • Khi chạy nhiều agent để làm tính năng lớn, cuối cùng sẽ phát sinh vấn đề là thời gian review tăng khủng khiếp
    Vì đọc code của người khác (hoặc AI) khó hơn tự mình viết
    Có thể dùng tự động hóa kiểm thử để bao phủ phần nào, nhưng vẫn khó mà tin tưởng hoàn toàn

    • Vì thế tôi nhấn mạnh sự nghiêm ngặt ở giai đoạn lập kế hoạch
      Cần làm rõ phạm vi·kiểm thử·kế hoạch tài liệu, đồng thời áp dụng bot code review (Sourcery, CodeRabbit, Codescene) và quy tắc lint thật chặt
      Tôi còn dùng BDD, property testing, kiểm thử e2e, audit code, thậm chí cả mutation/fuzzing test
      Điểm mạnh của agent coding là nó giúp ta có thêm thời gian để làm những việc kiểm soát chất lượng như vậy
    • Nút thắt là LLM thường tạo ra các chỉnh sửa dài dòng và không cần thiết, làm phạm vi review bị nới rộng
    • Nhưng với các thay đổi rủi ro thấp như sửa đơn giản hay cải thiện UI thì có thể tự động deploy
      Tôi đang thử triển khai dần dần theo hướng như 100 PRs a day
    • Tôi không deploy nguyên xi phần code do agent tạo ra, mà chỉ tận dụng kết quả đầu ra của nó
    • Code review hoàn toàn có thể nhanh lên đáng kể nhờ luyện tập
      Nếu chia nhỏ công việc và tin vào test, thì việc review code do AI viết cũng nhẹ nhàng hơn
      Tôi xem test case kỹ hơn, còn code review thì kết thúc nhanh
      Tôi không chạy nhiều agent song song, nhưng nhờ AI mà năng suất chắc chắn đã tăng
  • Nếu quá trình viết PR bị tự động hóa đơn thuần thì sẽ mất đi cơ hội tự kiểm chứng
    Tôi thường phát hiện ra điểm bất thường trong code của mình khi viết phần mô tả PR
    Khoảnh khắc phải diễn đạt nó bằng tiếng Anh chính là lần sanity check cuối cùng

  • Nhờ hệ thống worktree, việc chuyển ngữ cảnh đã dễ hơn, nhưng đồng thời mệt mỏi tinh thần cũng tăng lên

    • Tôi cảm thấy cần có nghiên cứu về việc chạy nhiều agent song song thực sự ảnh hưởng thế nào đến tốc độ hay độ chính xác
    • Tôi thuộc kiểu chỉ tập trung vào 1–2 việc cùng lúc
      Nếu chia việc thành đơn vị nhỏ và giữ chu kỳ review ngắn thì việc kiểm soát chất lượng sẽ dễ hơn
    • Tôi dùng chiến lược xếp hàng đợi bằng cách giao cho agent tạo PR rồi review dồn sau
    • Tôi có chạy nhiều worktree song song, nhưng không phải lúc nào cũng ngồi canh
      Tôi chỉ thích việc không bị đứt mạch làm việc, và hôm sau quay lại thì mọi thứ vẫn tiếp tục tiến triển
  • Tôi hoài nghi về giả định rằng Claude có thể viết code với độ hoàn thiện cao
    Trên thực tế vẫn cần nhiều vòng phản hồi và chỉnh sửa, và nếu quản lý nhiều việc song song cùng lúc thì còn kém hiệu quả hơn

  • Claude Code mang tính cách mạng như một công cụ học tập, nhưng chất lượng sinh code thì khá thất thường
    Khi học Flutter/Dart, tôi đã học bằng cách hỏi Claude về các khái niệm, và chỉ sau một tuần không cần sách vẫn có thể làm ra ứng dụng
    Nó giống như một bách khoa toàn thư tương tác

    • Tôi hoàn toàn đồng ý với công dụng này. Thật sự rất mang tính cách mạng
    • Nhiều người cũng dùng theo cách đó
      Với những câu hỏi như “cách làm X đúng kiểu trong ngôn ngữ này là gì?”, nó đưa ra câu trả lời hữu ích ngay lập tức
      Nhưng thay vì là thứ thay đổi thế giới, nó chỉ là một công cụ rất tốt mà thôi
    • Nên dùng AI theo hướng tăng tốc học tập và tích lũy kỹ năng thay vì thay thế con người
      Tuy nhiên, việc marketing quá đà đang gây tác động tiêu cực lên toàn bộ nền kinh tế
      Cũng có lo ngại rằng ảo tưởng AI sẽ thay thế việc làm đang khiến thế hệ trẻ từ bỏ nghề nghiệp
  • Có đoạn nói rằng “sau khi chuyển build sang SWC, thời gian restart server giảm xuống dưới 1 giây”,
    SWCSpeedy Web Compiler, một công cụ transpile nhanh mà không kiểm tra kiểu
    Tài liệu NestJS cũng giải thích điều tương tự

  • Dùng LLM không có nghĩa là đáng để khoe năng suất đã tăng bùng nổ
    Nếu ai cũng dùng cùng một công cụ thì mặt bằng chuẩn chỉ tăng lên mà thôi
    Hơn nữa, nếu lượng lớn code do AI tạo ra không được review tử tế thì chất lượng dài hạn vẫn là dấu hỏi

    • Thành quả nên được đánh giá bằng kết quả và giá trị của chính mình, chứ không phải so sánh đơn giản
    • Nói rằng năng suất tăng nhờ dùng compiler hiện đại (như GHC) cũng nằm trong cùng một logic
  • LLM quả thật có giúp tăng năng suất, nhưng đo bằng biểu đồ số commit thì vô nghĩa
    Nó cũng ngớ ngẩn như việc dùng LOC để đánh giá chất lượng

    • Nhờ Claude mà tôi đã làm xong trong vài ngày một tính năng vốn trì hoãn nhiều tháng
      Tôi vẫn tự viết code để hiểu rõ, còn Claude giúp rất nhiều với vai trò đối tác phân rã công việc và review
    • Chỉ số tốt nhất cho việc cải thiện codebase là LOC âm, tức xóa đi những đoạn code không cần thiết
    • Theo kinh nghiệm của tôi, những kỹ sư xuất sắc nhất là những người làm giảm lượng code
      Khả năng thay thế code phức tạp bằng các trừu tượng đơn giản mới là năng suất thực sự