Nhiều tranh chấp khi làm app không đến từ kỹ thuật mà đến từ hợp đồng viết sơ sài. Bài viết này chỉ ra những điều khoản bạn bắt buộc phải làm rõ trước khi ký: bàn giao mã nguồn, quyền sở hữu, bảo hành và cột mốc thanh toán. Nắm được chúng, bạn giữ được quyền kiểm soát sản phẩm của mình.

Vì sao hợp đồng quan trọng hơn bạn nghĩ

App là tài sản sống, cần cập nhật liên tục. Nếu hợp đồng không quy định rõ ai sở hữu mã nguồn và bạn có được bàn giao đầy đủ hay không, bạn có thể rơi vào thế bị khóa: muốn sửa hay chuyển sang đơn vị khác đều không được vì không có mã nguồn sạch. Rủi ro này chỉ lộ ra khi đã quá muộn, nên phải chặn từ khâu ký kết.

Điều khoản bàn giao mã nguồn

Ghi rõ bạn được nhận toàn bộ mã nguồn, không phải bản đã biên dịch. Mã nguồn phải kèm hướng dẫn cài đặt, tài liệu cấu trúc và thông tin các dịch vụ bên thứ ba đang dùng. Nên quy định thời điểm bàn giao gắn với thanh toán cuối, và yêu cầu mã nguồn được đẩy lên kho lưu trữ (repository) do bạn kiểm soát ngay trong quá trình làm, không đợi đến cuối.

Tài khoản và hạ tầng đứng tên ai

Tài khoản nhà phát triển Apple và Google, tên miền, máy chủ, dịch vụ đám mây nên đứng tên doanh nghiệp bạn. Nếu để đơn vị làm app đứng tên hộ, khi hết hợp tác bạn có thể mất quyền truy cập chính app của mình.

Quyền sở hữu trí tuệ

Hợp đồng cần nêu rõ toàn bộ sản phẩm được tạo ra thuộc quyền sở hữu của bạn sau khi thanh toán đủ. Lưu ý phần thư viện mã nguồn mở hoặc công cụ có sẵn: đơn vị làm app có quyền dùng lại chúng cho khách khác, đó là bình thường. Cái bạn sở hữu là sản phẩm hoàn chỉnh và phần code viết riêng cho dự án, không phải bản thân các thư viện chung.

Điều khoản bảo hành và bảo trì

Phân biệt rõ hai khái niệm. Bảo hành là sửa miễn phí lỗi phát sinh do lập trình sai trong một khoảng thời gian sau bàn giao. Bảo trì là công việc dài hạn: cập nhật theo iOS/Android mới, thêm tính năng, xử lý sự cố vận hành, thường tính phí riêng. Hợp đồng cần ghi rõ thời hạn bảo hành, phạm vi lỗi được bảo hành và mức phí bảo trì sau đó để tránh cãi nhau về việc lỗi này ai chịu.

Cột mốc thanh toán gắn với kết quả

Chia thanh toán theo cột mốc bàn giao thay vì theo thời gian. Ví dụ: tạm ứng khi ký, thanh toán khi duyệt thiết kế, khi bàn giao bản chạy thử, và phần cuối khi nghiệm thu kèm mã nguồn. Mỗi lần trả tiền phải đổi lấy một kết quả kiểm chứng được. Đây là đòn bẩy quan trọng nhất để đảm bảo dự án về đích.

Ví dụ thực tế

Một doanh nghiệp thanh toán gần như toàn bộ giá trị hợp đồng từ sớm vì tin tưởng. Đến giai đoạn cuối, đơn vị làm app chậm trễ và không chịu bàn giao mã nguồn vì cho rằng còn hạng mục chưa thống nhất. Do hợp đồng không gắn phần thanh toán cuối với việc bàn giao mã nguồn, doanh nghiệp mất đòn bẩy đàm phán. Bài học: giữ lại một phần thanh toán đủ lớn cho đến khi nhận mã nguồn và nghiệm thu xong.

Sai lầm thường gặp và cách sửa

  • Không nhắc đến mã nguồn: ghi rõ được nhận mã nguồn đầy đủ kèm tài liệu, gắn với thanh toán cuối.
  • Thanh toán trước quá nhiều: giữ lại phần cuối đáng kể đến khi nghiệm thu.
  • Tài khoản store đứng tên đối tác: yêu cầu mọi tài khoản đứng tên doanh nghiệp bạn.
  • Không định nghĩa lỗi bảo hành: ghi rõ thế nào là lỗi được sửa miễn phí, thế nào là yêu cầu mới có tính phí.
  • Không có điều khoản thoát: quy định trước cách xử lý khi một bên muốn dừng, ai giữ gì.

Checklist trước khi ký hợp đồng làm app

  • Có điều khoản bàn giao mã nguồn đầy đủ kèm tài liệu.
  • Quyền sở hữu sản phẩm thuộc về bạn sau khi thanh toán đủ.
  • Mọi tài khoản store, tên miền, máy chủ đứng tên doanh nghiệp bạn.
  • Thời hạn và phạm vi bảo hành được ghi rõ.
  • Cột mốc thanh toán gắn với kết quả nghiệm thu.
  • Giữ lại phần thanh toán cuối đến khi nhận mã nguồn.
  • Có điều khoản xử lý khi hai bên ngừng hợp tác.

Kết luận

Một hợp đồng làm app tốt bảo vệ cả hai bên và làm rõ kỳ vọng trước khi mâu thuẫn xảy ra. Bước tiếp theo: rà lại bản hợp đồng đơn vị gửi cho bạn theo checklist trên, và bổ sung ngay các điều khoản còn thiếu về mã nguồn, quyền sở hữu và cột mốc thanh toán trước khi đặt bút ký.

Câu hỏi thường gặp

Không có kiến thức kỹ thuật thì làm sao kiểm tra mã nguồn khi bàn giao?

Bạn có thể thuê một lập trình viên độc lập nghiệm thu kỹ thuật: kiểm tra mã nguồn chạy được, có tài liệu và không phụ thuộc bí mật vào cá nhân nào. Chi phí này nhỏ so với rủi ro nhận bàn giao thiếu.

Đơn vị làm app dùng lại code cũ có vi phạm quyền sở hữu không?

Không, nếu đó là thư viện hoặc khung công cụ dùng chung. Điều bạn sở hữu là sản phẩm hoàn chỉnh và phần viết riêng cho dự án. Nên ghi rõ ranh giới này trong hợp đồng để tránh hiểu lầm.

Bảo hành nên kéo dài bao lâu là hợp lý?

Không có mức cố định, nhưng một khoảng đủ để phát hiện lỗi qua sử dụng thực tế là hợp lý. Quan trọng hơn thời hạn là định nghĩa rõ lỗi nào được bảo hành, tránh tranh cãi giữa lỗi và yêu cầu tính năng mới.

Nếu muốn đổi đơn vị làm app giữa chừng thì sao?

Sẽ dễ dàng nếu ngay từ đầu bạn kiểm soát kho mã nguồn và các tài khoản. Vì vậy điều khoản đẩy mã nguồn lên repository của bạn trong quá trình làm là lớp bảo vệ quan trọng nhất cho tình huống này.