Gia công phần mềm theo yêu cầu là cách doanh nghiệp giao cho một đơn vị bên ngoài xây dựng phần mềm riêng theo đúng nghiệp vụ của mình, thay vì mua phần mềm đóng gói hoặc tự tuyển đội ngũ. Mô hình này phù hợp khi bài toán đặc thù, cần ra mắt nhanh và doanh nghiệp muốn kiểm soát chi phí theo phạm vi công việc. Tuy nhiên, phần lớn tranh chấp trong các dự án thuê ngoài không đến từ kỹ thuật mà từ phạm vi mơ hồ, hợp đồng thiếu điều khoản và cách quản lý thay đổi. Trong bài này, Nosouno chia sẻ cách chuẩn bị, chọn hình thức hợp đồng, quy trình triển khai, các điều khoản bảo vệ quyền sở hữu mã nguồn và những sai lầm thường gặp, dựa trên kinh nghiệm làm việc với doanh nghiệp trong nước và doanh nghiệp có vốn nước ngoài.
Không phải bài toán nào cũng cần phát triển riêng. Doanh nghiệp nên cân nhắc gia công phần mềm theo yêu cầu trong các trường hợp sau, thay vì mua phần mềm đóng gói:
Ngược lại, nếu yêu cầu thay đổi liên tục, sản phẩm cần phát triển nhiều năm và doanh nghiệp muốn trực tiếp điều phối từng lập trình viên, mô hình thuê đội ngũ chuyên trách thường phù hợp hơn. Nếu nhu cầu là một trung tâm phát triển dài hạn mang pháp nhân riêng tại Việt Nam, mô hình ODC là hướng cần xem xét. Lựa chọn đúng mô hình ngay từ đầu giúp tránh nhiều xung đột về sau.
Chất lượng đầu vào quyết định phần lớn chất lượng đầu ra của một dự án gia công phần mềm theo yêu cầu. Trước khi làm việc với đơn vị gia công, doanh nghiệp nên chuẩn bị:
Nếu chưa đủ thông tin, doanh nghiệp có thể thuê một giai đoạn khảo sát riêng để cùng đơn vị gia công lập tài liệu yêu cầu phần mềm (SRS). Khoản đầu tư nhỏ này thường giúp báo giá gia công phần mềm sau đó chính xác hơn và hạn chế phát sinh.

Hình thức hợp đồng quyết định cách chia sẻ rủi ro giữa hai bên. Ba hình thức phổ biến trong gia công phần mềm theo yêu cầu, mỗi hình thức phù hợp một mức độ rõ ràng của phạm vi:
|
Tiêu chí |
Trọn gói (Fixed price) |
Theo thời gian (Time & Material) |
Lai (giai đoạn trọn gói + thời gian) |
|
Phù hợp khi |
Phạm vi rõ, ít thay đổi |
Yêu cầu chưa chốt, cần linh hoạt |
Có MVP rõ, phần sau còn mở |
|
Kiểm soát ngân sách |
Cao, cố định từ đầu |
Theo thực tế sử dụng |
Cố định từng giai đoạn |
|
Linh hoạt thay đổi |
Thấp, mọi thay đổi cần phụ lục |
Cao |
Trung bình |
|
Vai trò doanh nghiệp |
Duyệt theo mốc nghiệm thu |
Tham gia thường xuyên |
Kết hợp cả hai |
Khi so sánh báo giá gia công phần mềm, đừng chỉ nhìn tổng số tiền. Cần kiểm tra báo giá đã gồm những hạng mục nào: phân tích, thiết kế giao diện, kiểm thử, triển khai, tài liệu, đào tạo, thời gian bảo hành; giả định nào đang được áp dụng; điều gì xảy ra nếu ước lượng sai. Hai báo giá chênh lệch lớn thường do phạm vi hiểu khác nhau, không phải do năng lực chênh lệch.
Với dự án có yếu tố nước ngoài, hợp đồng cần thống nhất thêm ngôn ngữ ưu tiên, đồng tiền thanh toán, luật áp dụng, cơ quan giải quyết tranh chấp và nghĩa vụ thuế của từng bên. Đây là những điểm nên được rà soát pháp lý trước khi ký.
Nosouno triển khai gia công phần mềm theo yêu cầu theo phương pháp Agile, chia dự án thành các chặng ngắn để doanh nghiệp thấy kết quả sớm và điều chỉnh kịp thời.
Bước 1: Khảo sát và chốt phạm vi
Phỏng vấn các bộ phận, lập danh sách chức năng, luồng nghiệp vụ, tiêu chí nghiệm thu và kế hoạch phát hành theo phiên bản.
Bước 2: Thiết kế giải pháp và giao diện
Đề xuất kiến trúc, công nghệ, mô hình dữ liệu, bản mẫu giao diện tương tác để doanh nghiệp duyệt trước khi lập trình.
Bước 3: Phát triển theo từng sprint
Mỗi sprint kéo dài vài tuần, kết thúc bằng buổi trình diễn phần mềm chạy được. Công cụ AI hỗ trợ lập trình được dùng để tăng tốc viết mã, viết kiểm thử, nhưng mọi đoạn mã đều qua rà soát của kỹ sư trước khi hợp nhất.
Bước 4: Kiểm thử liên tục
Kiểm thử tự động tích hợp vào quy trình CI/CD, kết hợp kiểm thử thủ công cho nghiệp vụ phức tạp và kiểm thử chấp nhận người dùng (UAT). Đây là bước giúp gia công phần mềm theo yêu cầu đạt chất lượng ổn định khi lên môi trường thật.
Bước 5: Triển khai và đào tạo
Đưa phần mềm lên hạ tầng chính thức, di chuyển dữ liệu, đào tạo người dùng và quản trị viên.
Bước 6: Bàn giao và bảo hành
Bàn giao mã nguồn, tài liệu kỹ thuật, tài khoản hạ tầng; hỗ trợ sửa lỗi trong thời gian bảo hành theo cam kết của hợp đồng gia công phần mềm theo yêu cầu.
Đây là phần nhiều doanh nghiệp xem nhẹ, và cũng là phần gây thiệt hại lớn nhất khi xảy ra tranh chấp trong gia công phần mềm theo yêu cầu. Hợp đồng cần làm rõ:
Ký thỏa thuận bảo mật NDA trước khi chia sẻ tài liệu nghiệp vụ là bước nên làm ngay từ giai đoạn trao đổi ban đầu. Khi kết thúc hợp đồng gia công phần mềm theo yêu cầu, biên bản bàn giao mã nguồn cần liệt kê đủ kho mã, tài liệu và tài khoản để làm căn cứ xác lập quyền sở hữu.
Thay đổi là điều chắc chắn xảy ra trong mọi dự án gia công phần mềm theo yêu cầu. Vấn đề không phải là tránh thay đổi mà là quản lý thay đổi yêu cầu có kiểm soát:
Khi quản lý thay đổi yêu cầu tốt, hợp đồng trọn gói vẫn đủ linh hoạt, còn hợp đồng theo thời gian vẫn kiểm soát được chi phí. Đây cũng là tiêu chí nên hỏi khi đánh giá năng lực một đơn vị gia công phần mềm theo yêu cầu: họ xử lý yêu cầu thay đổi bằng quy trình nào, ai phê duyệt, thời gian phản hồi bao lâu và báo cáo ảnh hưởng ra sao. Câu trả lời cụ thể cho thấy đơn vị đó đã quen quản lý dự án thực tế.
Từ các dự án tiếp quản lại, chúng tôi thường gặp những sai lầm sau:
Khi chọn đối tác gia công phần mềm theo yêu cầu, nên xem dự án tương tự, gặp trực tiếp trưởng nhóm kỹ thuật, hỏi rõ quy trình kiểm thử, bảo mật và yêu cầu một giai đoạn làm thử ngắn nếu dự án lớn.
Bao lâu thì có phiên bản đầu tiên? Tùy phạm vi MVP. Với Agile, doanh nghiệp thường thấy phần mềm chạy được sau vài sprint đầu và có thể đưa phiên bản tối thiểu vào sử dụng thử.
Gia công phần mềm theo yêu cầu có phù hợp doanh nghiệp nhỏ không? Có, nếu bắt đầu bằng phạm vi MVP gọn và mở rộng theo kết quả thực tế thay vì làm toàn bộ hệ thống một lần.
Doanh nghiệp nước ngoài thuê gia công phần mềm tại Việt Nam cần lưu ý thuế gì? Nghĩa vụ thuế phụ thuộc cấu trúc hợp đồng, nơi cung cấp và sử dụng dịch vụ. Nên rà soát với chuyên gia thuế trước khi ký.
Khi kết thúc dự án cần bàn giao mã nguồn những gì? Mã nguồn đầy đủ, hướng dẫn cài đặt, tài liệu kiến trúc, tài liệu API, kịch bản kiểm thử và quyền quản trị hạ tầng.
Làm sao tránh vượt ngân sách khi gia công phần mềm theo yêu cầu? Chốt phạm vi phiên bản đầu bằng tài liệu yêu cầu, quy định quy trình duyệt thay đổi, theo dõi tiến độ theo từng sprint và ưu tiên tính năng mang lại giá trị kinh doanh trước.
Liên hệ Nosouno để được tư vấn giải pháp gia công phần mềm theo yêu cầu phù hợp với nghiệp vụ, ngân sách và lộ trình phát triển của doanh nghiệp bạn.