Hãy cùng học hỏi và phê phán cách mà các công ty lớn như FAANG "lập trình theo cảm giác (Vibe Coding)": "Đầu tiên, hãy để đủ nhiều bên liên quan gật đầu đồng ý" "Sau đó tiến hành đánh giá thiết kế" "Tiếp theo là công việc tài liệu kéo dài hàng tuần" "Rồi sau đó là các quản lý sản phẩm và quản lý dự án chia nhỏ nhiệm vụ" Sau ba tháng trôi qua, cuối cùng chúng ta có thể bắt đầu Vibe Coding! --- Chúng tôi ở FAANG thực hiện "lập trình theo cảm giác (Vibe Coding)" như thế này Xin chào mọi người. Tôi muốn đăng một bài viết ở đây vì tôi thường thấy có người tranh luận rằng mã được viết với sự hỗ trợ của AI hoàn toàn không thể sử dụng trong sản phẩm thực tế. Điều này hoàn toàn là sai lầm. Để giới thiệu một chút về bối cảnh: tôi là một kỹ sư phần mềm AI, có hơn mười năm kinh nghiệm, trong đó một nửa thời gian tôi đã làm việc tại FAANG. Nửa đầu sự nghiệp của tôi là làm kỹ sư hệ thống, không phải phát triển, nhưng tôi đã viết mã được gần 15 năm. Không nói nhiều nữa, dưới đây tôi sẽ nói về cách mà đội ngũ của chúng tôi bắt đầu sử dụng AI để viết mã **sản xuất (production code)** thực sự. 1. Bạn luôn phải bắt đầu từ một **tài liệu thiết kế kỹ thuật**. Đây là phần cốt lõi nhất trong toàn bộ công việc. Tài liệu này giống như một đề xuất, bạn cần thuyết phục đủ nhiều bên liên quan (stakeholders) để họ tin rằng giải pháp của bạn là khả thi. Chỉ khi thiết kế được thông qua, bạn mới có thể bắt tay vào phát triển hệ thống. Tài liệu này cần bao gồm kiến trúc hệ thống hoàn chỉnh, kế hoạch tích hợp với các hệ thống khác, v.v. 2. Trước khi bắt đầu phát triển, cần tiến hành **đánh giá thiết kế (Design review)**. Trong giai đoạn này, các kỹ sư cao cấp (Senior Engineers) trong đội sẽ xem xét tài liệu thiết kế của bạn một cách kỹ lưỡng. Đây là điều tốt, tôi gọi đây là **"đưa nỗi đau lên trước"**. 3. Nếu đánh giá diễn ra suôn sẻ, bạn có thể chính thức bắt đầu công việc phát triển. Trong vài tuần đầu, mọi người sẽ dành nhiều thời gian để viết tài liệu chi tiết hơn cho từng hệ thống con (subsystem) mà các đội phát triển sẽ xây dựng. 4. Tiếp theo là phát triển **các nhiệm vụ trong danh sách (Backlog)** và **lập kế hoạch Sprint (sprint planning)**. Trong giai đoạn này, các nhà phát triển sẽ cùng với quản lý sản phẩm (PMs), quản lý dự án kỹ thuật (TPMs) họp lại, chia nhỏ mục tiêu lớn thành các nhiệm vụ cụ thể mà các nhà phát triển có thể thực hiện. 5. **Phát triển phần mềm**. Cuối cùng, chúng tôi có thể bắt đầu gõ mã và hoàn thành các thẻ nhiệm vụ. Và đây chính là nơi AI phát huy sức mạnh, nó thực sự là **bộ tăng tốc hiệu suất (force multiplier)** của chúng tôi. Chúng tôi áp dụng mô hình **phát triển dựa trên kiểm thử (Test Driven Development, TDD)**, vì vậy việc đầu tiên tôi làm là để **AI thông minh (AI agent)** viết các trường hợp kiểm thử cho chức năng mà tôi sắp phát triển. *Chỉ khi các bài kiểm thử được viết xong, tôi mới bắt đầu để AI thông minh giúp tôi xây dựng các chức năng cụ thể*. 6. **Đánh giá mã nộp**. Mã của chúng tôi cần có sự chấp thuận của hai nhà phát triển trước khi được hợp nhất vào nhánh chính (main). Trong giai đoạn này, AI cũng thể hiện tiềm năng lớn, có thể hỗ trợ chúng tôi trong việc đánh giá. 7. **Kiểm tra trong môi trường tiền phát hành (staging)**. Nếu mọi thứ kiểm tra diễn ra suôn sẻ, chúng tôi sẽ chính thức phát hành vào môi trường sản xuất (prod). Tổng thể, từ đề xuất chức năng đến khi chính thức ra mắt, chúng tôi nhận thấy toàn bộ quy trình **tăng tốc độ khoảng 30%**. Đây là một bước tiến lớn đối với chúng tôi. **Quá dài không xem (TL;DR):** Luôn bắt đầu từ một tài liệu thiết kế và kiến trúc vững chắc; sau đó thực hiện từng phần một; luôn viết kiểm thử trước.
13,31K