Giới thiệu
Trong thời đại công nghệ phát triển nhanh chóng, việc phát triển phần mềm đang chứng kiến một cuộc cách mạng lớn. Với sự ra đời của các mô hình ngôn ngữ lớn (LLMs), các nhà phát triển giờ đây có thể dễ dàng tối ưu hóa quy trình viết mã của mình. Thay vì phải viết mã từng dòng, chúng ta có thể hướng dẫn LLM tạo ra mã sơ bộ và sau đó chỉ cần tinh chỉnh lại cho phù hợp. Bài viết này sẽ chia sẻ kinh nghiệm cá nhân trong việc áp dụng phương pháp này vào các dự án thực tế và cách thiết lập hiệu quả.
Thay Đổi Của Quy Trình Phát Triển Phần Mềm
Quy Trình Cũ
Trước đây, sau khi hoàn thành quy trình phân tích yêu cầu - từ việc thu thập, đồng bộ hóa với các bên liên quan, đến việc tinh chỉnh để nhận diện giá trị thực tế, các nhà phát triển phải tự tay viết mã. Điều này thường dẫn đến việc lãng phí thời gian và tài nguyên.
Quy Trình Mới
Hiện nay, ngoài việc viết mã, một phần lớn mã có thể được tạo ra bởi các công cụ hỗ trợ như Claude Code. Điều này không chỉ giúp tiết kiệm thời gian mà còn nâng cao chất lượng sản phẩm cuối cùng.
Tầm Quan Trọng Của Quy Trình Phân Tích Yêu Cầu
Phân tích yêu cầu là bước quan trọng để rút ngắn thời gian giao hàng và giảm chi phí. Bước này bao gồm:
- Thu thập yêu cầu: Nắm bắt thông tin từ các bên liên quan.
- Đồng bộ hóa: Xác nhận và điều chỉnh yêu cầu với các bên liên quan.
- Tinh chỉnh: Phát hiện giá trị thực sự của các yêu cầu.
- Hiểu rõ lý do: Nắm bắt được lý do đằng sau mỗi chức năng.
Với sự hỗ trợ từ LLMs, quy trình này càng trở nên quan trọng hơn, vì chất lượng của tài liệu yêu cầu sẽ ảnh hưởng trực tiếp đến khả năng chuyển đổi yêu cầu thành mã.
Thiết Lập Hiện Tại
Thiết lập mà tôi đang sử dụng không phải là cái cuối cùng, mà là một quy trình liên tục được cải thiện. Với thiết lập này, tôi đã phát triển:
- Hai dịch vụ hoàn chỉnh từ đầu.
- Một ứng dụng tài chính trên WhatsApp.
- Một dịch vụ phân tích hoạt động cho nền tảng Dev + Eficiente.
- Một khóa học hoàn chỉnh được tạo ra thông qua LLM, viết tài liệu cho từng chương.
Phương Pháp: Tài Liệu Hóa Là Di Sản
Tạo Tài Liệu Đặc Tả
Thay vì nhập tất cả thông tin vào prompt, tôi viết tài liệu yêu cầu trong các tệp văn bản. Điều này tạo ra một lịch sử giá trị vì nhiều lý do:
- Di sản cho những người mới: Dễ dàng hiểu những gì đã được thực hiện.
- Khả năng tìm kiếm: Có thể tìm kiếm các quyết định và thực hiện trong quá khứ.
- Tiêu thụ bởi LLMs: Tất cả những gì chúng tôi sản xuất có thể được các chương trình sử dụng LLM tiêu thụ.
- Theo dõi: Giữ lại dòng suy nghĩ dẫn đến mã đã tạo.
Cấu Trúc Cơ Bản: Tệp CLAUDE.md
Tôi sử dụng một tệp ngữ cảnh tiêu chuẩn bao gồm:
- Thú nhận về ngôn ngữ: Sử dụng tiếng Việt trong các bình luận.
- Tiêu chuẩn thiết kế: Các tiêu chuẩn quan trọng mà tôi coi trọng.
- Tiêu chuẩn viết thử nghiệm: Các quy tắc cần tuân thủ khi viết thử nghiệm.
- Tiêu chuẩn ghi log: Các quy tắc về ghi log.
Tài Liệu Chi Tiết
Đối với mỗi nhiệm vụ, tôi tạo một tài liệu yêu cầu bao gồm:
- Mục tiêu: Điều tôi muốn thực hiện là gì.
- Vị trí mã: Nơi mã sẽ được tạo ra.
- Tài liệu tham khảo: Các API, tài liệu, ví dụ có liên quan.
- Chi tiết thực hiện: Mức độ chi tiết tùy thuộc vào độ phức tạp.
Ví Dụ Thực Tế
Nhiệm Vụ Cơ Bản: Nhập Khẩu Khóa Học
Đối với nhiệm vụ nhập khẩu khóa học từ nền tảng mà chúng tôi sử dụng để cung cấp hành trình Dev + Eficiente, tôi đã đặc tả:
- API danh sách cần tiêu thụ.
- Tài liệu tham khảo.
- Chỉ nhập khẩu những khóa học chưa được nhập trước đó.
- Chỉ cần ID và tên khóa học.
- Viết thử nghiệm cho controller.
Nhiệm Vụ Phức Tạp: Nhập Khẩu Hoạt Động
Với nhiệm vụ phức tạp hơn như nhập khẩu hoạt động của học viên, tôi đã đặc tả chi tiết hơn:
- Thiết kế giải pháp với các trừu tượng rõ ràng.
- Đặc tả một cấu trúc "quá trình nhập khẩu" như là bộ điều khiển chính.
- Chi tiết hóa các nhiệm vụ cụ thể cho từng học viên như là con của quá trình chính.
- Bao gồm kiểm soát trạng thái để tiếp tục trong trường hợp gặp sự cố.
- Đặc tả định dạng trả về và cấu trúc dữ liệu.
Mức Độ Chi Tiết
Mức độ chi tiết mà bạn cung cấp phụ thuộc vào một số yếu tố:
- Bối cảnh bạn có: Kiến thức về lĩnh vực và công nghệ.
- Sự chấp nhận gợi ý: Sẵn lòng lặp lại hay muốn hoàn thành ngay từ đầu.
- Gần gũi với kết quả cuối: Mức độ bạn có thể hình dung toàn bộ việc thực hiện.
Để giảm thiểu số lần lặp lại, không chỉ đơn thuần nói về các tiêu chuẩn thiết kế, mà còn cần phải phân chia thông tin và cung cấp hướng dẫn cụ thể để mã được tạo ra gần với mong muốn của bạn.
Làm Việc Cùng Nhau, Không Phân Công
Có sự khác biệt quan trọng giữa việc hoàn toàn phân công tư duy (mà tôi coi là có hại) và làm việc cùng với LLM. Quy trình này bao gồm:
- Lập kế hoạch: Yêu cầu LLM tạo kế hoạch dựa trên tài liệu yêu cầu.
- Thực hiện theo hướng dẫn: Theo dõi quá trình thực hiện và điều chỉnh khi cần thiết.
- Tinh chỉnh: Lấp đầy những khoảng trống chưa được đặc tả rõ ràng.
- Lặp lại: Điều chỉnh các phần mà bạn vẫn đang khám phá trong quá trình đặc tả.
Kết Quả Trong Thực Tế
Mô hình mà tôi quan sát thấy là LLM:
- Thực hiện mọi thứ với mã chấp nhận được, hoặc
- Tạo ra mã sơ bộ thú vị nhưng cần điều chỉnh.
Từ góc độ thời gian so với mã tạo ra giá trị, tôi cảm thấy mình có thể sử dụng thời gian hiệu quả hơn với các công cụ như Claude Code. Tôi cảm thấy mình có khả năng hơn trong:
- Tốc độ thực hiện.
- Viết mã cho những thứ mình biết nhưng không rõ chi tiết kỹ thuật.
- Làm việc với các thư viện và framework. Dù bạn có thành thạo, nhưng một số rất lớn và luôn có điều gì đó bị bỏ sót.
- Tập trung vào những gì thực sự quan trọng: logic kinh doanh và kiến trúc.
Lưu Giữ Lịch Sử Công Việc
Một thực hành thú vị là sử dụng lệnh /export của Claude để xuất khẩu các phiên làm việc. Điều này cho phép:
- Xem lại các phiên làm việc.
- Hiểu cách tôi đang tiến bộ trong quy trình.
- Phản ánh về sự hợp tác với LLM.
- Giữ lại các quyết định đã đưa ra.
Kết Luận
Sự chuyển mình từ "bắt đầu viết mã" sang "bắt đầu đặc tả mã" chính là một bước tiến tự nhiên trong phát triển phần mềm. Điều này không phải để thay thế lập trình viên, mà là để tối ưu hóa khả năng giao hàng của họ.
Hành Trình Dev + Eficiente
Nếu bạn thấy nội dung này hữu ích, hãy khám phá Hành Trình Dev + Eficiente, khóa đào tạo của chúng tôi nhằm giúp bạn trở thành người có khả năng giao phần mềm tạo ra giá trị cuối cùng, với chất lượng và hiệu quả tối đa.
Truy cập https://deveficiente.com/oferta-20-por-cento để tìm hiểu thêm về những gì chúng tôi cung cấp.