—
Thế giới phát triển phần mềm đang thay đổi chóng mặt, và AI chính là động lực chính. Từ “vibe coding” (lập trình theo cảm hứng) của Andrej Karpathy vào tháng 2 năm 2025 đến “agentic engineering” (kỹ thuật tác nhân) mà ông giới thiệu tại sự kiện AI Ascent 2026 của Sequoia Capital, cách chúng ta tương tác với công cụ AI đã trưởng thành đáng kể. Nếu trước đây chúng ta hỏi “liệu AI có thể viết code không?”, thì giờ đây câu hỏi là “làm thế nào để quản lý những gì AI tạo ra?”.
Bản chất của lập trình đã thay đổi. Trong 70 năm, lập trình viên phải học ngôn ngữ của máy. Từ mã nhị phân đến hợp ngữ, C, Java, và các framework mới nhất, mỗi thế hệ ngôn ngữ đều giảm bớt gánh nặng dịch thuật nhưng không loại bỏ giao dịch cơ bản: ý định của con người, được nén thành cú pháp mà máy có thể thực thi. Cú pháp luôn là cái giá phải trả. Giờ đây, các mô hình ngôn ngữ lớn (LLM) đã thay đổi điều đó – máy móc đang tiến gần hơn đến ý định của con người. Gánh nặng cú pháp đang dần biến mất, thay vào đó là gánh nặng kiểm thử và xác minh. Và quy trình SDLC mới chính là cách chúng ta trả khoản thuế xác minh này một cách hiệu quả.
Điểm cốt lõi:
- Vibe coding không phải là một phương pháp phát triển. Đó là thái độ xem nhẹ việc xác minh, chỉ phù hợp cho các bản thử nghiệm ban đầu.
- Agentic engineering đặt AI vào một “khung hỗ trợ” bao gồm các ràng buộc, kiểm thử và vòng lặp phản hồi. Công việc chính của lập trình viên là thiết kế hệ thống tạo ra mã, chứ không phải tự viết mã.
- Công thức quan trọng từ báo cáo của Google: Agent = Model + Scaffold. Hầu hết các nhóm đầu tư mạnh vào mô hình mà bỏ qua “scaffold” (khung hỗ trợ) – đó là một sai lầm.
- Context engineering phân biệt đầu ra AI nhanh chóng với đầu ra AI hữu ích. Những gì bạn đưa vào cửa sổ ngữ cảnh quan trọng hơn việc bạn chọn mô hình nào.
- Mô hình nhà máy có nghĩa là công việc của bạn bây giờ là thiết kế dây chuyền lắp ráp, không phải lắp ráp từng sản phẩm thủ công.
Mục lục
SDLC Mới Trông Như Thế Nào Vào Năm 2026?
Theo dữ liệu của JetBrains vào đầu năm 2026, 85% lập trình viên chuyên nghiệp thường xuyên sử dụng công cụ mã hóa AI và 51% sử dụng chúng hàng ngày. Khoảng 41% tổng số mã mới ước tính được tạo ra bởi AI. Điều này có nghĩa là, trong một tính năng Flutter gồm mười tệp tiêu chuẩn, khoảng bốn tệp không do con người gõ. Lập trình viên xem xét mã nhiều hơn viết mã không còn là ngoại lệ mà đã trở thành tiêu chuẩn.
Báo cáo của Google “The New SDLC with Vibe Coding” (Osmani, Saboo, Kartakis, tháng 5 năm 2026) đã định hình bối cảnh này như một phổ, không phải một lựa chọn nhị phân:
| Khía cạnh | Vibe Coding | Hỗ trợ AI có cấu trúc | Agentic Engineering |
|---|---|---|---|
| Ý định | Prompt ngôn ngữ tự nhiên thông thường | Prompt chi tiết với ví dụ | Đặc tả chính thức, tài liệu kiến trúc, file quy tắc |
| Xác minh | “Có vẻ hoạt động không?” | Kiểm thử thủ công, kiểm tra ngẫu nhiên | Bộ kiểm thử tự động, cổng CI/CD, LM judges |
| Xử lý lỗi | Dán lỗi trở lại prompt | Lập trình viên chẩn đoán nguyên nhân gốc | Agent tự chẩn đoán trong giới hạn đã định |
| Hiểu codebase | Lập trình viên có thể không đọc mã được tạo | Xem xét chọn lọc các đường dẫn quan trọng | Xem xét kiến trúc toàn diện |
| Phạm vi tốt nhất | Prototype, hackathon, script cá nhân | Tính năng trong codebase đã có sẵn | Hệ thống sản xuất, triển khai quy mô nhóm |
| Rủi ro | Cao (chấp nhận được với mã dùng một lần) | Trung bình (đánh giá của con người tại các điểm kiểm tra chính) | Thấp (xác minh có hệ thống ở mọi giai đoạn) |
Điểm mấu chốt từ bảng trên: sự khác biệt không nằm ở mô hình AI bạn sử dụng, mà ở mức độ cấu trúc, xác minh và đánh giá của con người xung quanh đầu ra của mô hình.
Tại Ngân hàng Oman Housing, chúng tôi đã chứng kiến điều này rõ rệt. Khoảnh khắc nhóm chúng tôi chuyển từ các prompt thông thường sang viết các file quy tắc rõ ràng trước, chất lượng đầu ra của AI đã thay đổi nhiều hơn bất kỳ bản nâng cấp mô hình nào. Mô hình không thay đổi, nhưng ngữ cảnh xung quanh mô hình thì có.
SDLC truyền thống đã chuyển từ waterfall sang Agile trong khoảng hai thập kỷ. AI đang nén chu kỳ lặp hiện tại một cách đáng kể, nhưng không đồng đều. Việc triển khai từng mất một tuần giờ có thể chỉ mất vài giờ. Tuy nhiên, các yêu cầu, kiến trúc và xác minh vẫn cần tốc độ của con người. Kết quả là một quy trình làm việc khác biệt, không phải là phiên bản nhanh hơn của quy trình cũ. Ranh giới giữa các giai đoạn bị xóa nhòa, chu kỳ lặp rút ngắn từ tuần xuống còn phút ở một số lĩnh vực. Vai trò của lập trình viên chuyển từ người triển khai chính sang nhà thiết kế hệ thống và người phân xử chất lượng.
Agent Scaffold: Điều Gì Thực Sự Bao Quanh Mô Hình AI?
Khi áp dụng các công cụ mã hóa AI, có một cám dỗ là coi mô hình như toàn bộ hệ thống. Một mô hình mới ra mắt làm tác nhân thông minh hơn, một mô hình cũ làm nó tệ đi. Mô hình trở thành lời giải thích cho mọi thứ tốt và xấu.
Trực giác này dẫn đến các khoản đầu tư sai lầm.
Mô hình chỉ là một trong các yếu tố đầu vào của một tác nhân đang hoạt động. Mọi thứ khác – các prompt, công cụ, file quy tắc, trình chạy kiểm thử, lớp quan sát – đều là “scaffold” (khung hỗ trợ): bộ máy cung cấp trạng thái, phản hồi và ràng buộc cho mô hình. Phương trình trong báo cáo kỹ thuật rất rõ ràng:
Agent = Model + Scaffold
Mô hình không phải là có khả năng ngoại cảm. Nó đến kho mã của bạn với sự không chắc chắn giống như một kỹ sư mới vào ngày đầu tiên, ngoại trừ việc nó không thể đặt câu hỏi. Nó sẽ suy luận. Nếu không có file quy tắc, những suy luận đó sẽ sai đối với dự án cụ thể của bạn theo những cách có thể đoán trước: sai mô hình quản lý trạng thái, sai cấu trúc thư mục, sai quy ước kiểm thử, sai đường dẫn import. “Scaffold” chính là tài liệu hướng dẫn mà kỹ sư mới không bao giờ có thể yêu cầu bạn viết.
Các điểm chuẩn công khai làm rõ tác động này. Trên Terminal Bench 2.0, một nhóm đã đưa một tác nhân mã hóa từ ngoài top 30 lên top 5 chỉ bằng cách thay đổi “scaffold”, không thay đổi mô hình. Một nghiên cứu của LangChain đã tăng điểm chuẩn của tác nhân lên 13.7 điểm chỉ bằng cách điều chỉnh prompt hệ thống và middleware xung quanh một mô hình cố định. Hầu hết các lỗi của tác nhân, khi được xem xét một cách trung thực, đều là lỗi cấu hình “scaffold”.
Một “scaffold” thực tế cho dự án Flutter có thể trông như thế này:
# AGENTS.md ## Stack - Flutter 3.32+, Dart 3.8+ - Riverpod for state management - Freezed for data classes - dio + retrofit for networking ## Architecture - Hexagonal architecture. Feature folders, not layer folders. - Domain layer has zero Flutter imports. - Repositories are interfaces. Concrete implementations live in the data layer. - UI components are stateless where possible. State lives in providers. ## Hard Rules - Never add a package not already in pubspec.yaml. Ask first. - Tests live in test/, not alongside source files. - No print() statements. Use the Logger package. - Named parameters for any function with more than 2 arguments. - Run flutter analyze before considering a task complete. - Null safety is non-negotiable. No dynamic, no implicit nulls. ## Workflow 1. Read the relevant feature spec before generating any code. 2. Write the test first. Then implement to make the test pass. 3. If the change touches the domain layer, flag it for human review before proceeding. 4. After implementation, confirm that flutter test and flutter analyze both pass.
File này không phải là prompt. Đó là hướng dẫn vận hành. Lập trình viên viết nó mất khoảng một giờ. Mỗi tương tác AI tiếp theo trong dự án đó đều được hưởng lợi từ giờ làm việc đó. Nó là một sự tích lũy có giá trị.
Kỹ Thuật Ngữ Cảnh (Context Engineering) Khác Biệt Với Kỹ Thuật Prompt (Prompt Engineering) Như Thế Nào?
Một sự phân biệt quan trọng từ báo cáo kỹ thuật: kỹ thuật prompt và kỹ thuật ngữ cảnh không phải là cùng một thực hành.
Kỹ thuật prompt hỏi “làm thế nào để tôi diễn đạt câu hỏi này để nhận được câu trả lời thông minh hơn từ mô hình?”. Kỹ thuật ngữ cảnh hỏi “một thành viên mới trong nhóm cần biết gì để đóng góp chính xác cho dự án này, và làm thế nào để tôi mã hóa kiến thức đó dưới dạng mà AI có thể sử dụng?”.
Sự khác biệt trong thực hành hàng ngày là đáng kể. Kỹ thuật prompt tối ưu hóa một lượt tương tác. Kỹ thuật ngữ cảnh tối ưu hóa toàn bộ phiên, và khi ngữ cảnh tồn tại qua các phiên, nó tối ưu hóa mọi phiên trong tương lai.
Sáu loại ngữ cảnh quan trọng trong bất kỳ quy trình làm việc tác nhân nào:
- Hướng dẫn (Instructions): Xác định vai trò, ràng buộc và giới hạn hoạt động của tác nhân.
- Kiến thức (Knowledge): Bao gồm các tài liệu được truy xuất, sơ đồ kiến trúc và dữ liệu chuyên biệt của miền.
- Bộ nhớ (Memory): Bao gồm trạng thái phiên ngắn hạn (những gì vừa xảy ra) và trạng thái dự án dài hạn (dự án là gì).
- Ví dụ (Examples): Cung cấp các mẫu hành vi “few-shot” từ chính codebase của bạn, không phải các mẫu chung chung trên internet.
- Công cụ (Tools): Là các định nghĩa chính xác về API, script và dịch vụ mà tác nhân có thể gọi.
- Rào cản (Guardrails): Là các ràng buộc cứng mà tác nhân không thể vượt qua.
Các tài liệu về kỹ thuật ngữ cảnh hiện rất ít. Hầu hết các công cụ yêu cầu bạn “thêm quy tắc” mà không cụ thể về mức độ chi tiết nào thực sự hiệu quả trong thực tế. Tôi đã mất nhiều thời gian để tìm ra ranh giới giữa các file quy tắc quá rộng để hữu ích và các file quy tắc quá dài để phù hợp hiệu quả trong ngữ cảnh. Nguyên tắc hữu ích: một quy tắc nên ngắn gọn, cụ thể và đi kèm với một ví dụ cụ thể về hành vi bạn muốn.
Ngữ cảnh tĩnh (file quy tắc, hướng dẫn hệ thống) luôn được tải và tốn kém: mỗi token được trả phí trên mỗi lệnh gọi mô hình, bất kể mức độ liên quan. Ngữ cảnh động (kết quả công cụ, tài liệu được truy xuất, lịch sử phiên theo cửa sổ) được tải theo yêu cầu và chỉ tốn kém khi thông tin thực sự cần thiết. Quyết định cái gì thuộc về ngữ cảnh tĩnh và cái gì thuộc về ngữ cảnh động là một sự đánh đổi kỹ thuật thực sự, đáng được chú ý cẩn thận như bất kỳ quyết định kiến trúc nào khác.
Mô hình hiệu quả nhất để quản lý ngữ cảnh động là cái mà báo cáo kỹ thuật gọi là Agent Skills (Kỹ năng tác nhân): các gói kiến thức thủ tục có cấu trúc, di động mà tác nhân chỉ tải khi nhiệm vụ phù hợp. Tác nhân nhìn thấy siêu dữ liệu nhẹ khi khởi động, tải hướng dẫn đầy đủ khi một nhiệm vụ phù hợp và chỉ kéo tài liệu tham khảo sâu khi cần thiết một cách rõ ràng. Đây chính là điều tôi đã khám phá trong chuỗi bài viết Flutter Agent Skills.
AI Có Thực Sự Làm Lập Trình Viên Lão Làng Chậm Lại? Sự Thật Đằng Sau
Lời chỉ trích công bằng về các công cụ mã hóa AI không phải là chúng tạo ra mã kém chất lượng. Lời chỉ trích công bằng là các lập trình viên giàu kinh nghiệm sử dụng các công cụ AI ban đầu, trong các điều kiện có kiểm soát, đã chậm hơn đáng kể trong các tác vụ phức tạp.
METR đã công bố phát hiện này vào tháng 7 năm 2025. Mười sáu cộng tác viên mã nguồn mở giàu kinh nghiệm, làm việc trên các kho mã trung bình 22.000 sao và hơn một triệu dòng mã, mất nhiều thời gian hơn 19% cho các tác vụ khi sử dụng công cụ AI. Các lập trình viên tương tự ước tính rằng họ đã nhanh hơn 20%. Khoảng cách giữa nhận thức và thực tế đo được không phải là một sự sai lệch nhỏ. Đó là một sự mất kết nối hoàn toàn, như MIT Technology Review đã lưu ý trong bài viết về nghiên cứu này (Technology Review, 2026).
Nghiên cứu tiếp theo của METR vào tháng 2 năm 2026 đã làm phức tạp thêm bức tranh. Phương pháp ban đầu của họ có vấn đề về lấy mẫu: các lập trình viên được hưởng lợi nhiều nhất từ công cụ AI đã từ chối tham gia vào các điều kiện không có AI, ngay cả với ưu đãi 50 USD/giờ. Những người dùng AI nặng đã tự loại mình một cách có hệ thống khỏi nhóm kiểm soát. Kết luận sửa đổi là thực sự trung thực: “Chúng tôi không biết liệu AI có làm lập trình viên năng suất hơn hay không” (METR, 2026).
Tuy nhiên, dữ liệu rộng hơn cho thấy rõ ràng điều này: các lập trình viên sử dụng AI cho các tác vụ được xác định rõ, nặng về triển khai và duy trì các thực hành đánh giá chặt chẽ báo cáo mức tăng từ 25 đến 39% (JetBrains, Index.dev, 2026). Các lập trình viên chấp nhận đầu ra mà không xem xét thấy lỗi tăng 41% trong một số nghiên cứu, và chất lượng mã suy giảm do tăng sự thay đổi và trùng lặp.
Sự gia tăng năng suất từ agentic engineering là có thật. Nhưng nó có điều kiện. Điều kiện đó là cấu trúc. Hỗ trợ AI không có cấu trúc vào năm 2025 chậm hơn vì nó làm tăng chi phí xác minh mà không giảm chi phí đặc tả. Agentic engineering giải quyết điều này bằng cách đầu tư ngay từ đầu vào đặc tả, “scaffold” và bộ kiểm thử, để chi phí triển khai của AI thay thế việc triển khai của con người vốn chậm hơn, thay vì cộng thêm vào đó.
Mô Hình Nhà Máy: Xây Dựng Hệ Thống Tạo Ra Phần Mềm
Mô hình tư duy kết nối mọi thứ ở trên lại với nhau là cái mà báo cáo kỹ thuật gọi là mô hình nhà máy (factory model). Trong mô hình này, đầu ra chính của lập trình viên không phải là mã nguồn. Đó là hệ thống tạo ra mã nguồn.
Hệ thống đó bao gồm các đặc tả và ngữ cảnh xác định những gì cần được xây dựng, các tác nhân dịch các đặc tả thành triển khai, các kiểm thử và cổng chất lượng xác minh tính đúng đắn, các vòng lặp phản hồi chuyển các lỗi trở lại cho tác nhân để sửa chữa, và các rào cản hạn chế tác nhân hoạt động theo cách có thể dự đoán, an toàn.
Một quản lý nhà máy không tự tay lắp ráp từng sản phẩm. Họ thiết kế dây chuyền lắp ráp và đảm bảo kiểm soát chất lượng. Lập trình viên hiện đại thiết kế hệ thống phát triển và đảm bảo đầu ra của nó đáp ứng tiêu chuẩn yêu cầu.
Điều này định hình lại vai trò của lập trình viên theo hai chế độ hoạt động:
- Chế độ Conductor (Người điều khiển): Chỉ đạo trực tiếp, thực hành tại chỗ. Lập trình viên ở trong IDE, quan sát mã xuất hiện, hướng dẫn bằng prompt và sửa lỗi, duy trì kiểm soát chặt chẽ những gì được viết. Các công cụ như GitHub Copilot, Gemini Code Assist, Cursor và Windsurf chủ yếu hỗ trợ chế độ này. Nó tự nhiên đối với các kỹ sư từ các nền tảng truyền thống vì nó giữ được cảm giác hiểu biết ở mỗi bước. Rủi ro: nếu lập trình viên tự mình chỉ đạo mọi tương tác, cải thiện thông lượng từ AI sẽ bị giới hạn.
- Chế độ Orchestrator (Người dàn xếp): Lập trình viên hoạt động ở mức độ trừu tượng cao hơn. Họ xác định mục tiêu, giao chúng cho các tác nhân và xem xét kết quả mà không cần quan sát mã xuất hiện từng dòng. Claude Code, chế độ tác nhân của GitHub Copilot, Google Jules và các công cụ tương tự hỗ trợ điều này thông qua việc thực thi tác vụ không đồng bộ trong môi trường sandbox. Chế độ này tốt nhất cho các tác vụ được xác định rõ ràng: sửa lỗi, triển khai tính năng theo các mẫu đã có, tạo kiểm thử, di chuyển codebase.
Chế độ dàn xếp đòi hỏi một bộ kỹ năng khác: viết các đặc tả chính xác để tác nhân có thể thực thi mà không mơ hồ, phân tách các tác vụ lớn thành các đơn vị có kích thước phù hợp, nhanh chóng đánh giá liệu đầu ra của tác nhân có đáp ứng tiêu chuẩn chất lượng hay không, và thiết kế các ràng buộc và vòng lặp phản hồi giúp tác nhân hoạt động hiệu quả.
Hầu hết các lập trình viên di chuyển giữa cả hai chế độ trong một ngày. Hạn chế thành thật ở đây: chế độ dàn xếp đòi hỏi kỷ luật ban đầu cao hơn, chứ không phải ít hơn. Bạn phải viết đặc tả trước khi có thể giao phó việc triển khai. Các nhóm chịu áp lực sprint sẽ thấy điều này phản trực giác. Hiệu quả sẽ đến ở sprint thứ hai, chứ không phải sprint đầu tiên. Các nhóm coi công cụ AI là một lối tắt để tránh công việc đặc tả cuối cùng sẽ tạo ra các bản thử nghiệm được đưa vào sản xuất một cách ngẫu nhiên.
Bạn Nên Làm Gì Trong Kỷ Nguyên Mới? Lời Khuyên Từ Chuyên Gia
Sự dịch chuyển trong SDLC và vai trò của AI đòi hỏi cả lập trình viên và lãnh đạo kỹ thuật phải thích nghi. Dưới đây là những hành động cụ thể bạn có thể thực hiện:
Dành Cho Lập Trình Viên Cá Nhân
- Viết file quy tắc cho mỗi dự án: Bắt đầu với mười dòng: stack, ràng buộc kiến trúc, quy tắc cứng, quy ước kiểm thử. Thêm một quy tắc mỗi khi tác nhân làm điều gì đó không nên lặp lại. Sau vài tuần, bạn sẽ có một cấu hình dự án cụ thể giúp đầu ra AI hữu ích hơn đáng kể mà không cần thay đổi mô hình.
- Viết kiểm thử và đánh giá trước khi tạo mã: Một bộ kiểm thử được viết tốt truyền đạt ý định cho tác nhân chính xác hơn bất kỳ prompt ngôn ngữ tự nhiên nào. Nó cũng cung cấp cho tác nhân thứ để chạy, thất bại và sửa chữa. Một kiểm thử là một đặc tả mà máy có thể xác minh.
- Xem xét mọi dòng mã AI tạo ra trước khi triển khai: Hãy hoài nghi với bất cứ điều gì trông quá thông minh. Kiểm tra xem các gói được import có thực sự tồn tại không. Xác minh rằng việc xử lý lỗi bao gồm các chế độ lỗi thực tế, không chỉ là “happy path”. Mã mà nhóm của bạn không hiểu sẽ trở thành chi phí gỡ lỗi mà nhóm của bạn không thể chi trả. Điều này càng đúng trong các ngành được quản lý chặt chẽ như ngân hàng và công nghệ tài chính, nơi tôi đã chứng kiến mã được tạo tốt thất bại theo những cách mà tác nhân không bao giờ lường trước vì nó không có ngữ cảnh về ràng buộc quy định khiến trường hợp biên trở nên quan trọng.
- Duy trì kỹ năng kỹ thuật cốt lõi: AI xử lý các công việc thường ngày để bạn có thể tập trung vào những điều khó khăn. Sự sắp xếp đó chỉ hoạt động nếu các kỹ năng nền tảng – gỡ lỗi, thiết kế hệ thống, trực giác về hiệu suất và tính đúng đắn – luôn sắc bén. Hãy coi AI là một cách để áp dụng chuyên môn ở quy mô lớn hơn, không phải là sự thay thế cho việc phát triển nó.
Dành Cho Các Nhà Lãnh Đạo Kỹ Thuật
- Coi file quy tắc, prompt hệ thống, bộ đánh giá và thư viện kỹ năng như mã nguồn: Phiên bản hóa, xem xét trong các pull request, thuộc sở hữu của các kỹ sư được chỉ định. Nếu không có kỷ luật này, hành vi của tác nhân sẽ không thể tái tạo giữa các thành viên trong nhóm.
- Đặt tiêu chuẩn ở việc đánh giá, không phải bản demo: Một bản demo hoạt động chứng minh rằng một tác nhân có thể thành công một lần. Một bộ đánh giá vượt qua chứng minh rằng nó thành công một cách đáng tin cậy. Một bản demo là một kích thước mẫu là một.
- Phân biệt rõ ràng công việc tạo prototype và công việc sản xuất trong các quy tắc của nhóm: Vibe coding là tốc độ phù hợp cho việc khám phá. Agentic engineering là kỷ luật phù hợp cho sản xuất. Hãy làm rõ ranh giới: dự án nào, nhánh nào, môi trường nào cần chế độ làm việc nào. Các nhóm giữ sự phân biệt này mơ hồ sẽ tạo ra các prototype được đưa vào sản xuất một cách ngẫu nhiên.
Những Câu Hỏi Thường Gặp Về Agentic Engineering
Vibe Coding và Agentic Engineering Khác Gì Nhau?
Vibe coding là việc prompt AI, chấp nhận đầu ra và sử dụng tiêu chí “có vẻ hoạt động không?” làm tiêu chí xác minh duy nhất. Agentic engineering có nghĩa là AI hoạt động như một công cụ triển khai trong một cấu trúc gồm các đặc tả chính thức, file quy tắc, kiểm thử tự động và vòng lặp phản hồi, với con người giữ quyền giám sát kiến trúc, tính đúng đắn và chất lượng. Điểm khác biệt không nằm ở công cụ bạn sử dụng, mà ở mức độ cấu trúc bao quanh đầu ra của mô hình. Một lập trình viên có thể thực hiện vibe coding hoặc áp dụng agentic engineering bằng chính tác nhân đó.
Kỹ Thuật Ngữ Cảnh (Context Engineering) Trong Phát Triển Phần Mềm Là Gì?
Kỹ thuật ngữ cảnh là nguyên tắc cấu trúc và tuyển chọn thông tin cung cấp cho tác nhân AI để nó có thể hành động chính xác trên codebase, kiến trúc và ràng buộc cụ thể của bạn. Nó vượt ra ngoài cách diễn đạt prompt để bao gồm các file quy tắc (AGENTS.md, CLAUDE.md), tài liệu được truy xuất, các ví dụ “few-shot” từ các mẫu mã của riêng bạn, định nghĩa công cụ và các rào cản cứng. Nghiên cứu và bằng chứng thực tiễn luôn cho thấy chất lượng mã do AI tạo ra ít phụ thuộc vào độ thông minh của prompt mà phụ thuộc nhiều hơn vào mức độ ngữ cảnh phản ánh những gì dự án của bạn thực sự yêu cầu.
Nên Đưa Gì Vào File AGENTS.md Hoặc CLAUDE.md?
Một file quy tắc nên bao gồm stack và phiên bản của bạn, các mẫu và quy ước kiến trúc (các mẫu bạn thực sự sử dụng, không phải các mẫu chung chung), các quy tắc cứng mà tác nhân không thể phá vỡ như các gói không bao giờ được thêm hoặc các mẫu cần tránh, phương pháp kiểm thử của bạn và nơi đặt các kiểm thử, và một quy trình làm việc mà tác nhân nên tuân theo trước khi tạo mã. Bắt đầu với mười dòng và thêm quy tắc khi tác nhân làm sai. Một file quy tắc ngắn gọn, tín hiệu cao luôn hoạt động tốt hơn một file dài, lan man vì mỗi token trong ngữ cảnh tĩnh được trả phí trên mỗi lệnh gọi mô hình.
AI Có Thật Sự Tăng Năng Suất Lập Trình Viên Năm 2026 Không?
Bằng chứng là hỗn hợp và phụ thuộc nhiều vào ngữ cảnh. Dữ liệu của JetBrains và Index.dev cho thấy mức tăng năng suất tự báo cáo từ 25 đến 39% cho các lập trình viên sử dụng công cụ AI thường xuyên. Nghiên cứu của METR vào tháng 7 năm 2025 cho thấy các lập trình viên giàu kinh nghiệm mất nhiều thời gian hơn 19% cho các tác vụ phức tạp với công cụ AI, mặc dù nghiên cứu tiếp theo vào tháng 2 năm 2026 đã thừa nhận rằng những người dùng AI nặng đã tự loại mình một cách có hệ thống khỏi nhóm kiểm soát, làm suy yếu kết quả. Phát hiện nhất quán rõ ràng nhất: các lập trình viên sử dụng AI cho các tác vụ triển khai được xác định rõ và duy trì các thực hành đánh giá chặt chẽ đạt được nhiều hơn đáng kể so với những người chấp nhận đầu ra mà không xác minh.
“Vấn Đề 80%” Trong Phát Triển Có Hỗ Trợ AI Là Gì?
“Vấn đề 80%” đề cập đến quan sát rằng các tác nhân AI có thể nhanh chóng tạo ra khoảng 80% mã cho bất kỳ tính năng nào, nhưng 20% còn lại (các trường hợp biên, xử lý lỗi, điểm tích hợp và các yêu cầu về tính đúng đắn tinh tế) đòi hỏi kiến thức ngữ cảnh sâu mà các mô hình hiện tại luôn thiếu. 20% còn lại này là nơi hầu hết các lỗi sản xuất phát sinh. Nó đòi hỏi sự đánh giá kiến trúc và chuyên môn miền của con người mà không thể giao phó cho một tác nhân nếu không có ngữ cảnh được chỉ định rất chính xác. Các lập trình viên giải quyết vấn đề này hiệu quả nhất sử dụng AI cho 80% được xác định rõ trong khi dành sự chú ý của mình cho 20% đòi hỏi phải biết tại sao ràng buộc tồn tại, không chỉ là nó tồn tại.
Mô Hình Nhà Máy Thay Đổi Vai Trò Của Lập Trình Viên Như Thế Nào?
Mô hình nhà máy coi đầu ra chính của lập trình viên là hệ thống tạo ra mã, không phải mã nguồn. Hệ thống bao gồm các đặc tả, cấu hình tác nhân, bộ kiểm thử, vòng lặp phản hồi và các rào cản. Một quản lý nhà máy không tự tay lắp ráp từng sản phẩm. Họ thiết kế dây chuyền lắp ráp và đảm bảo kiểm soát chất lượng. Kỹ năng có giá trị chuyển từ sự thông thạo cú pháp sang chất lượng đặc tả, đánh giá kiến trúc và sự chặt chẽ trong đánh giá. Cách diễn đạt của Karpathy tại AI Ascent 2026 đã nắm bắt được điều đó: “Bạn không trực tiếp viết mã 99% thời gian. Bạn đang dàn xếp các tác nhân làm điều đó, và đóng vai trò giám sát.”
Bức Tranh Lớn Hơn: Lịch Sử Của Các Lớp Trừu Tượng
Nhìn lùi lại đủ xa, có một mô hình ở đây đã tồn tại trước mọi framework hiện đại.
Vào những năm 1950, nút thắt cổ chai là sự sẵn có của phần cứng: chỉ một số ít tổ chức có máy tính đáng để lập trình. Vào những năm 1970, đó là ngôn ngữ: chỉ những chuyên gia có thể suy luận bằng hợp ngữ mới hữu ích. Vào những năm 1990, đó là mạng và phân phối. Vào những năm 2010, đó là cơ sở hạ tầng: ai có đủ máy chủ. Trong mỗi lần chuyển đổi, các kỹ năng quan trọng nhất đã thay đổi, và một nhóm người mới có được khả năng xây dựng những thứ mà trước đây chỉ yêu cầu một nhóm nhỏ hơn, chuyên biệt hơn.
Mỗi lớp trừu tượng trong lịch sử điện toán đều làm cho các kỹ năng bên dưới nó trở nên ít trung tâm hơn. Việc viết trực tiếp bằng hợp ngữ trở nên ít giá trị hơn khi C ra đời. Việc biết chi tiết về TCP/IP trở nên ít cần thiết hơn khi các framework trừu tượng hóa mạng. Và điều quan trọng là, trong mọi trường hợp, các kỹ sư coi lớp trừu tượng mới là mối đe dọa đối với kỹ năng của họ không sai khi cho rằng những kỹ năng cụ thể đó sẽ ít quan trọng hơn. Họ đã sai khi cho rằng bản thân họ sẽ ít quan trọng hơn. Lớp trừu tượng đã nâng cao giới hạn về những gì một kỹ sư có kỹ năng có thể xây dựng, mỗi lần như vậy.
Chúng ta đang ở điểm uốn đó một lần nữa. Gánh nặng cú pháp chưa hoàn toàn biến mất, nhưng nó đủ thấp để gánh nặng xác minh hiện là chi phí chủ đạo. Nút thắt cổ chai không còn là khả năng triển khai. Đó là chất lượng đặc tả, đánh giá kiến trúc và khả năng đánh giá liệu một hệ thống có thể tạo ra khối lượng mã khổng lồ có đang tạo ra khối lượng mã khổng lồ đúng đắn hay không.
Mô hình nhà máy, sự phân chia giữa người điều khiển và người dàn xếp, kỹ thuật ngữ cảnh: đây không phải là sự thay thế cho kỹ năng kỹ thuật. Chúng là lớp trừu tượng tiếp theo. Các lập trình viên học cách làm việc ở lớp này sẽ xây dựng những thứ mà các lập trình viên ở dưới nó đơn giản là không thể.
Việc tạo mã đã được giải quyết. Việc xác minh, đánh giá và định hướng là kỹ năng mới.



