Vì sao điều khoản bàn giao source code hay bị bỏ quên?

Đội ngũ chúng tôi đã gặp không ít doanh nghiệp tìm đến nhờ tư vấn sau khi phần mềm đã nghiệm thu xong. Họ đã thanh toán đủ, nghĩ rằng mọi việc đã khép lại. Thế nhưng khi cần thêm một tính năng nhỏ, họ mới phát hiện mình không nắm trong tay bất kỳ mã nguồn nào. Không ai trong nội bộ tự sửa được, và đơn vị nào khác cũng ngại nhận làm tiếp.

Gốc rễ của chuyện này thường nằm ở câu chữ trong hợp đồng. Nhiều bản hợp đồng chỉ viết chung chung rằng bên gia công sẽ bàn giao mã nguồn. Nghe qua thì có vẻ đủ ý, nhưng thực ra lại bỏ trống rất nhiều chi tiết. Giao vào thời điểm nào? Giao theo hình thức gì? Có kèm tài liệu hay không? Sau khi giao, quyền sở hữu thuộc về ai? Khi tranh chấp xảy ra, một văn bản thiếu những điểm này khiến cả hai bên đều lúng túng.

Bài viết này không có ý làm bạn lo lắng quá mức. Chúng tôi chỉ muốn chia sẻ những điều đúc kết được từ nhiều dự án, để bạn biết điều khoản nào thực sự cần và nên diễn đạt ra sao. Đọc xong, bạn sẽ tự tin hơn khi làm việc với bất kỳ đơn vị gia công nào, dù là công ty lớn hay một nhóm lập trình viên độc lập.

Source code là gì và vì sao quan trọng với doanh nghiệp?

Source code, hay mã nguồn, là toàn bộ các dòng lệnh tạo nên một phần mềm. Bạn có thể hình dung nó như bản vẽ thiết kế của một căn nhà. Dọn vào ở thì không cần bản vẽ. Nhưng nếu muốn cải tạo hay xây thêm tầng, bạn sẽ phải thuê người đo đạc và làm lại gần như từ đầu.

Phần mềm cũng vậy. Một file cài đặt chạy ổn định không có nghĩa là bạn đã làm chủ sản phẩm. Khi cần bổ sung tính năng, sửa lỗi hay chuyển sang máy chủ khác, gần như lúc nào bạn cũng phải đụng đến chính mã nguồn. Thiếu nó, mọi lựa chọn sau này đều bị thu hẹp, và bạn bị trói chặt vào đơn vị đã làm ra sản phẩm.

Một câu chuyện thực tế từ khách hàng của chúng tôi

Anh Hùng là chủ một chuỗi cửa hàng bán lẻ. Anh đặt một đơn vị làm phần mềm quản lý kho trong bốn tháng, tổng chi phí hơn 200 triệu đồng. Lúc nghiệm thu, anh chỉ nhận được một file cài đặt và tài khoản quản trị. Nửa năm đầu hệ thống vận hành khá trơn tru. Đến khi mở thêm chi nhánh, anh cần tính năng quản lý đa chi nhánh.

Bên gia công báo thêm 50 triệu đồng và cần hai tháng để làm. Anh muốn tìm đơn vị khác nhanh hơn và rẻ hơn. Nhưng không ai dám nhận, vì không có mã nguồn để kế thừa. Họ buộc phải viết lại từ đầu, tốn cả thời gian lẫn tiền bạc. Cuối cùng anh đành chấp nhận mức giá ban đầu.

Nếu hợp đồng có điều khoản bàn giao mã nguồn rõ ràng, anh đã có quyền tự chọn nhà cung cấp mới. Từ trường hợp này, chúng tôi rút ra một điều: điều khoản bàn giao không phải chi tiết hình thức. Nó quyết định bạn có còn quyền kiểm soát sản phẩm của chính mình hay không.

Quyền sở hữu phần mềm thuộc về ai theo pháp luật?

Nhiều người mặc định rằng đã bỏ tiền thuê làm thì sản phẩm tự nhiên thuộc về mình. Thực tế phức tạp hơn thế. Theo quy định về sở hữu trí tuệ, tác giả là người trực tiếp sáng tạo ra phần mềm, tức là đội ngũ lập trình. Nếu hợp đồng không có điều khoản chuyển giao quyền tác giả hoặc quyền sử dụng rõ ràng, quyền sở hữu vẫn có thể nằm ở phía bên gia công.

Vì vậy, bạn nên ghi rõ rằng sau khi nghiệm thu và thanh toán đầy đủ, toàn bộ quyền sở hữu trí tuệ đối với phần mềm được chuyển cho bên đặt hàng. Điều này bao gồm mã nguồn, tài liệu thiết kế và cấu trúc cơ sở dữ liệu. Hãy viết thành văn bản cụ thể thay vì dừng ở lời hứa miệng. Nếu có điều kiện, nhờ luật sư rà soát trước khi ký sẽ an toàn hơn nhiều.

Những điều khoản nên có khi bàn giao source code

Thời điểm và cách thức bàn giao

Hợp đồng cần xác định rõ thời hạn bàn giao sau nghiệm thu. Chẳng hạn, bên gia công phải giao đủ mã nguồn trong vòng năm ngày làm việc kể từ khi bên đặt hàng xác nhận nghiệm thu và hoàn tất thanh toán. Mốc thời gian cụ thể giúp tránh tình trạng kéo dài vô thời hạn.

Về hình thức, mã nguồn nên được lưu trong kho quản lý phiên bản như Git. Nếu không dùng được, ít nhất cũng cần một file nén có cấu trúc thư mục rõ ràng. Nên kèm thêm tệp hướng dẫn cài đặt, để người tiếp nhận có thể dựng môi trường chạy thử mà không phải hỏi lại từ đầu.

Tài liệu kỹ thuật đi kèm

Đây là phần nhiều doanh nghiệp hay bỏ sót. Mã nguồn không có tài liệu giống như cuốn sách không có mục lục: vẫn đọc được, nhưng mất rất nhiều thời gian. Tối thiểu nên có mô tả kiến trúc tổng quan, sơ đồ cơ sở dữ liệu, hướng dẫn triển khai và danh sách các thư viện bên thứ ba đang dùng.

Nếu dự án có API, hãy yêu cầu thêm tài liệu mô tả các điểm kết nối. Điều này đặc biệt quan trọng khi bạn muốn tích hợp phần mềm với hệ thống khác về sau.

Đồng bộ với phiên bản đã nghiệm thu

Hợp đồng nên quy định mã nguồn bàn giao phải tương ứng với phiên bản đã nghiệm thu và là bản mới nhất tại thời điểm đó. Chúng tôi từng gặp trường hợp bên gia công giao một bản cũ, thiếu những bản vá vừa hoàn thành. Bên đặt hàng phải mất vài ngày đối chiếu mới tìm ra chỗ thiếu.

Trách nhiệm bảo hành sau khi bàn giao

Bàn giao mã nguồn không đồng nghĩa với việc bên gia công hết trách nhiệm. Thông thường, hai bên thỏa thuận một khoảng bảo hành từ ba đến sáu tháng để xử lý lỗi phát sinh khi đưa phần mềm vào vận hành thực tế.

Cần ghi rõ phạm vi bảo hành. Lỗi xuất phát từ lập trình hoặc thiết kế ban đầu thì bên gia công sửa miễn phí. Yêu cầu bổ sung tính năng mới sẽ được tính phí riêng. Nếu không phân định rõ, rất dễ phát sinh tranh cãi về việc một lỗi là do thiếu sót hay do thay đổi yêu cầu.

Thời gian phản hồi cũng nên được quy định. Ví dụ, trong vòng 24 giờ kể từ khi nhận thông báo lỗi, bên gia công phải phản hồi và đưa ra kế hoạch xử lý. Điều khoản này tránh tình trạng im lặng sau khi đã nhận đủ tiền.

Một điểm hay bị quên là cập nhật mã nguồn trong thời gian bảo hành. Mọi chỉnh sửa phát sinh nên được đẩy vào đúng kho mã nguồn đã bàn giao và thông báo cho bên đặt hàng. Nhờ vậy, bạn luôn giữ được bản mới nhất.

Lời khuyên khi chuẩn bị ký hợp đồng

Trước khi ký, hãy đọc kỹ từng điều khoản liên quan đến bàn giao và sở hữu. Đừng ngại hỏi đơn vị gia công về những điểm chưa rõ. Một đối tác đáng tin sẽ sẵn sàng giải thích và điều chỉnh văn bản để hai bên cùng yên tâm, thay vì né tránh.

Nếu bạn đang tìm đối tác phù hợp, có thể tham khảo những gợi ý dành cho người mới thuê gia công phần mềm để so sánh trước khi quyết định. Muốn hiểu sâu hơn về cách lưu trữ và bàn giao tài liệu sau dự án, bạn nên đọc bài về chuyển giao mã nguồn và tài liệu sau dự án gia công phần mềm. Với doanh nghiệp còn cân nhắc giữa các mô hình hợp tác, so sánh báo giá trọn gói với tính theo thời gian thực tế cũng là góc nhìn hữu ích, vì nó ảnh hưởng trực tiếp đến cách viết điều khoản thanh toán và bàn giao.

Điều khoản bàn giao source code không phải dấu hiệu của sự thiếu tin tưởng. Đó là cách làm việc chuyên nghiệp, bảo vệ quyền lợi của cả hai bên và tạo nền tảng cho hợp tác lâu dài. Dành thêm chút thời gian rà soát hợp đồng hôm nay có thể giúp bạn tránh những tranh chấp tốn kém về sau.