← Posts

Phát triển phần mềm trong kỷ nguyên AI

AI đang đi từ chỗ gợi ý vài dòng code đến chỗ nhận việc, tự kiểm tra và phối hợp thành cả một nhóm agent. SDLC chưa biến mất, nhưng cách chúng ta làm phần mềm đang đổi khá nhanh.

Vài năm trước, tôi dùng AI để hỏi một đoạn code nên viết thế nào.

Sau đó là nhờ nó viết cả hàm, cả tệp, rồi cả một tính năng nhỏ.

Bây giờ thì khác. Tôi có thể đưa cho Codex hoặc Claude Code một issue, để agent tự đọc codebase, tìm chỗ cần sửa, viết code, chạy test rồi đưa lại diff để tôi review.

Nhìn qua thì vẫn là viết phần mềm. Nhưng đơn vị công việc đã đổi từ một đoạn code thành một task có đầu ra hoàn chỉnh.

Điều đó làm tôi tò mò: sau SDLC truyền thống, chúng ta thực sự đang đi đến mô hình nào?

SDLC chưa biến mất

Nói ngắn gọn, SDLC là vòng đời phát triển phần mềm: hiểu nhu cầu, thiết kế, xây dựng, kiểm thử, phát hành và vận hành.

Các bước này không tự nhiên biến mất chỉ vì có AI. Một sản phẩm vẫn phải giải quyết đúng vấn đề, chạy đúng, đủ an toàn và sống được ngoài production.

Thứ đang thay đổi là ai thực hiện từng phần việccon người đứng ở đâu trong vòng lặp.

Nếu gom những gì đang diễn ra thành vài nấc dễ hiểu, tôi thấy có thể nhìn như sau.

1. SDLC lấy con người làm trung tâm

Con người viết yêu cầu, thiết kế, code, test và xử lý sự cố. Công cụ chủ yếu giúp quản lý hoặc tự động hóa những bước đã được định nghĩa rõ.

2. AI-assisted development

Đây là giai đoạn quen thuộc nhất: AI gợi ý code, tạo test, viết tài liệu, giải thích lỗi. Developer vẫn cầm lái và làm phần lớn công việc; AI giống một trợ lý rất nhanh ngồi cạnh.

3. Agentic SDLC hoặc AI-DLC

AI bắt đầu tham gia xuyên suốt vòng đời thay vì chỉ đứng ở bước coding.

AWS gọi hướng tiếp cận của họ là AI-Driven Development Life Cycle: AI lập kế hoạch, hỏi lại khi thiếu bối cảnh và thực thi sau khi con người xác nhận các quyết định quan trọng. Microsoft cũng mô tả việc đưa agent vào từ lập kế hoạch, phát triển đến bảo mật và vận hành.

Tên gọi chưa thống nhất, nhưng ý chung khá rõ: AI không còn chỉ gợi ý; nó bắt đầu nhận và thực hiện công việc.

4. Spec-driven development

Khi agent viết code nhanh hơn, câu hỏi khó dần chuyển từ “viết thế nào?” sang “chính xác thì cần xây cái gì?”.

Vì vậy, bản đặc tả — mục tiêu, hành vi, ràng buộc và tiêu chí chấp nhận — trở thành đầu vào quan trọng. GitHub Spec Kit chẳng hạn, tổ chức quy trình theo hướng Specify → Plan → Tasks → Implement → Converge.

Code vẫn quan trọng. Nhưng code ngày càng giống kết quả sinh ra từ một ý định đã được mô tả rõ, thay vì là nơi đầu tiên chúng ta bắt đầu.

Bước mới nhất: Agent-first và điều phối nhiều agent

Đây là phần tôi thấy thú vị nhất.

Trong cách làm agent-first, developer không còn mặc định là người trực tiếp viết mọi dòng code. Vai trò chính dịch lên một tầng khác:

  • xác định mục tiêu và giới hạn;
  • cung cấp đúng bối cảnh;
  • thiết kế môi trường để agent làm việc;
  • tạo test, quy tắc và vòng phản hồi;
  • đánh giá kết quả, xử lý ngoại lệ và chịu trách nhiệm cho quyết định cuối cùng.

Vòng lặp phát triển phần mềm theo hướng agent-first

OpenAI từng công bố một thử nghiệm khá cực đoan: một nhóm nhỏ xây sản phẩm nội bộ khoảng một triệu dòng code mà không trực tiếp viết code bằng tay. Codex tạo cả mã ứng dụng, test, CI, tài liệu và công cụ nội bộ. Con người tập trung vào thiết kế môi trường, mô tả ý định và xây vòng phản hồi.

Điểm đáng chú ý không phải con số một triệu dòng code. Nhiều code chưa chắc đã là thành công.

Điểm đáng chú ý là công việc của engineer đã dịch chuyển.

Khi agent làm sai, câu trả lời không chỉ là prompt lại kỹ hơn. Nhóm phải hỏi: repository còn thiếu tài liệu nào, quy tắc nào chưa được kiểm tra tự động, công cụ nào agent chưa có, hay tín hiệu nào chưa đủ rõ để nó tự nhận ra lỗi?

Codebase lúc đó không chỉ cần dễ hiểu với người. Nó còn phải dễ đọc và dễ thao tác với agent:

AGENTS.md ngắn gọn, có đường dẫn rõ ràng
tài liệu kiến trúc nằm trong repository
build có thể tái lập
test chạy nhanh và ổn định
ranh giới module rõ ràng
log, metric và giao diện agent có thể quan sát
quy tắc quan trọng được kiểm tra tự động

Sau một agent là bước tiếp theo: nhiều agent được điều phối cùng lúc.

Thay vì một developer mở năm cửa sổ rồi tự nhớ cửa sổ nào đang làm gì, issue tracker có thể trở thành bảng điều khiển. Agent tự lấy task, làm việc trong môi trường riêng, mở PR, xử lý lỗi CI và nhận phản hồi review.

OpenAI gọi thử nghiệm đó là Symphony. Ở đây, đơn vị quản lý không còn là phiên làm việc với agent, mà là mục tiêu, issue và trạng thái công việc.

Nói cách khác:

Trước đây:  developer điều khiển từng phiên AI
Bây giờ:    developer giao task cho agent
Đang tới:   developer điều phối mục tiêu và xử lý ngoại lệ

Nút thắt không biến mất, nó chỉ chuyển chỗ

Agent có thể làm phần triển khai nhanh hơn, nhưng không làm mọi thứ tự nhiên trở nên dễ dàng.

Khi tốc độ tạo code tăng, nút thắt chuyển sang những phần khác:

  • yêu cầu có đủ rõ không;
  • agent có đúng bối cảnh không;
  • kết quả được kiểm chứng bằng gì;
  • nhiều thay đổi song song có còn giữ được kiến trúc chung không;
  • ai chịu trách nhiệm khi agent làm sai;
  • và cuối cùng, chúng ta có đang xây đúng thứ không.

OpenAI cũng thừa nhận họ chưa biết một codebase do agent tạo sẽ giữ được tính nhất quán kiến trúc ra sao sau nhiều năm. Đây là lý do tôi chưa xem “nhà máy phần mềm tự vận hành” là mô hình trưởng thành ở hiện tại.

Nó là hướng đang được thử nghiệm, không phải nơi phần lớn đội ngũ đã đứng.

Developer sẽ còn code không?

Có. Ít nhất là trong tương lai gần.

Không phải mọi repository đều đủ rõ để agent tự làm việc. Không phải task nào cũng có tiêu chí đúng sai dễ kiểm tra. Và không phải quyết định nào cũng nên giao cho model.

Tôi nghĩ thay đổi thực tế hơn là developer sẽ ít bị buộc phải trực tiếp code mọi thứ.

Với một lỗi nhỏ, tôi vẫn có thể tự sửa trong vài phút. Với một feature đã rõ, tôi có thể giao cho agent. Với một thay đổi lớn, tôi dành nhiều thời gian hơn cho spec, kiến trúc, ràng buộc và cách kiểm chứng.

Coding không biến mất. Nó trở thành một trong nhiều cách để tác động lên hệ thống, thay vì luôn là cách mặc định.

Nhìn lại cả chặng đường

Tôi không nghĩ ngành phần mềm sẽ đồng loạt bỏ SDLC để chuyển sang một mô hình duy nhất mang tên ADLC.

Khả năng cao chúng ta vẫn gọi đó là phát triển phần mềm. Requirement, design, implementation, testing và operation vẫn còn nguyên.

Nhưng bên trong các bước ấy, vai trò đang dịch chuyển khá rõ:

Tổng kết các mô hình phát triển phần mềm trong kỷ nguyên AI

Từ con người trực tiếp làm, sang AI hỗ trợ, rồi agent nhận việc, và mới nhất là con người đặt mục tiêu để nhiều agent phối hợp thực thi.

Câu hỏi của developer vì thế cũng dần đổi từ:

“Tôi sẽ code tính năng này như thế nào?”

thành:

“Tôi phải mô tả mục tiêu, ràng buộc và vòng phản hồi thế nào để agent có thể xây đúng tính năng này?”

Có lẽ đó mới là thay đổi lớn nhất của phát triển phần mềm trong kỷ nguyên AI.


Tài liệu tham khảo

  1. OpenAI — Harness engineering: leveraging Codex in an agent-first world
  2. OpenAI — An open-source spec for Codex orchestration: Symphony
  3. AWS — AI-Driven Development Life Cycle: Reimagining Software Engineering
  4. GitHub Spec Kit — Agentic Spec-Driven Development
  5. Microsoft — Transform software development through an agentic platform