สัญญาจ้างพัฒนาซอฟต์แวร์ที่ไม่ตอบคำถามว่า "โค้ดเป็นของใคร" คือระเบิดเวลาที่จะระเบิดวันที่คุณอยากเปลี่ยนผู้พัฒนา เรื่องนี้ถามคนละแหล่งยังได้คำตอบคนละข้าง บทความนี้กาง 5 จุดที่ต้องเช็คก่อนเซ็น จากมุมของผู้พัฒนาที่อยู่ฝั่งเดียวกับผู้จ้าง ไม่ใช่คำแนะนำทางกฎหมาย งานเดิมพันสูงควรให้ทนายอ่านสัญญาด้วยเสมอ
ลิขสิทธิ์งานจ้างเขียนโปรแกรม ถ้าสัญญาไม่เขียน กฎหมายจะตัดสินแทน
ถ้าสัญญาไม่ได้เขียนเรื่องเจ้าของผลงานไว้ กฎหมายลิขสิทธิ์จะเป็นตัวตัดสินแทน และผลต่างกันตามรูปแบบการจ้าง งานของพนักงานประจำ มาตรา 9 ให้ลิขสิทธิ์เป็นของผู้สร้างถ้าไม่ได้ทำหนังสือตกลงกัน ส่วนงานที่เกิดจากการรับจ้าง ไม่ว่าผู้รับจ้างเป็นบริษัทหรือฟรีแลนซ์ มาตรา 10 ให้เป็นของผู้ว่าจ้างเว้นแต่ตกลงกันเป็นอย่างอื่น อ่านตัวบทเต็มได้จากพ.ร.บ.ลิขสิทธิ์ พ.ศ. 2537 สองมาตราให้ผลคนละทาง แปลว่าวันมีปัญหาจริง คุณอาจต้องไปเถียงกันก่อนว่าการจ้างของคุณเข้ามาตราไหน โค้ดเลยเป็นของใคร ซึ่งแพงและช้ากว่าการเขียนหนึ่งย่อหน้าลงสัญญาตั้งแต่วันแรกมาก หลักที่เราใช้เองและแนะนำผู้จ้างทุกรายคือ อย่าปล่อยให้กฎหมายตัดสินแทนสัญญา
จุดแรกที่ต้องเช็ค คือ Source Code เป็นของใครเมื่อจ่ายครบ
มองหาประโยคที่เขียนชัดว่า source code ลิขสิทธิ์ และสิทธิ์ในผลงานทั้งหมด โอนเป็นของผู้ว่าจ้างเมื่อชำระเงินครบถ้วน ถ้าสัญญาไม่มีประโยคนี้ หรือเขียนคลุมเครือว่า "ผู้ว่าจ้างมีสิทธิ์ใช้งานระบบ" ให้หยุดแล้วถามทันที เพราะสองแบบนี้คือคนละสินค้า จุดยืนของเราเขียนไว้ตรงๆ ในข้อกำหนดการใช้บริการว่าเมื่อชำระครบ สิทธิ์ในผลงานที่พัฒนาขึ้นเฉพาะสำหรับลูกค้าโอนเป็นของลูกค้าตามขอบเขตในสัญญา ส่วนเครื่องมือเดิมของเราและ library โอเพนซอร์สเป็นไปตาม license ของมัน ดูข้อ 4 ด้านล่าง
อีก 4 จุดในสัญญาจ้างพัฒนาซอฟต์แวร์ที่พลาดกันบ่อย
- License กับ Ownership คือคนละเรื่อง บางเจ้าราคาถูกกว่าเพราะขายสิทธิ์ใช้งาน ไม่ใช่ความเป็นเจ้าของ ไม่ผิดถ้าบอกกันชัด แต่กลายเป็นกับดัก lock-in ได้ถ้าเพิ่งมารู้วันที่อยากย้ายออก เทียบราคาข้ามเจ้าต้องเทียบบนเงื่อนไขเดียวกัน
- ขอบเขตส่งมอบต้องเกินคำว่า "ระบบใช้งานได้" ระบุเป็นรายการ ทั้งโค้ด เอกสารติดตั้ง สิทธิ์เข้าบัญชีและฐานข้อมูล กับข้อมูลในรูปแบบเอาออกได้ และให้เปิดบัญชี cloud แยกของโปรเจกต์ตั้งแต่ต้น ไม่ปนกับลูกค้ารายอื่น วันจบงานจะได้โอนสิทธิ์ขาดได้จริง
- รับประกันต้องมีตัวเลขและขอบเขต เขียนให้ชัดว่ากี่วันหลังส่งมอบ ครอบคลุมบั๊กงานเดิมแบบไหน และอะไรนับเป็นงานใหม่ ของเราระบุเป็นรายสัญญา เช่น 30 หรือ 90 วัน
- Dependency และ license ของของที่ยืมมา ซอฟต์แวร์ส่วนใหญ่พึ่ง library ภายนอก ถามว่าตัวไหนมีค่า license ต่อเนื่อง ตัวไหนบังคับเปิดเผยโค้ดอย่าง GPL หรือ AGPL และเขียนลงสัญญาว่าใครจ่าย
สัญญาที่ดีไม่ได้มีไว้กันโกง มันมีไว้กันเข้าใจไม่ตรงกัน
งานแบบไหนที่ความเป็นเจ้าของโค้ดไม่ใช่ประเด็นหลัก
ถ้าคุณใช้ซอฟต์แวร์สำเร็จรูปหรือ SaaS จ่ายรายเดือน ความเป็นเจ้าของโค้ดไม่ใช่ประเด็นตั้งแต่แรก เพราะคุณตั้งใจเช่า แลกกับการไม่ต้องลงทุนก้อนแรกและไม่ต้องถือของเอง เกณฑ์เลือกระหว่างสองทางนี้เราเขียนไว้ในซอฟต์แวร์สำเร็จรูป กับ สั่งทำ ประเด็นเจ้าของโค้ดจะกลายเป็นเรื่องใหญ่เฉพาะเมื่อคุณจ่ายเงินก้อนเพื่อสั่งทำของเฉพาะทาง ซึ่งส่วนที่สร้างขึ้นใหม่สำหรับงานของคุณ ควรออกจากประตูไปกับคุณได้ครบตามที่ตกลง
เช็คลิสต์ก่อนเซ็น ไล่ให้ครบ 5 เรื่อง
ไล่หา 5 เรื่องนี้ในสัญญา เจ้าของโค้ดเมื่อจ่ายครบ ได้ความเป็นเจ้าของหรือแค่สิทธิ์ใช้งาน ขอบเขตส่งมอบเป็นรายการ ตัวเลขวันรับประกันพร้อมขอบเขต และค่า license ต่อเนื่องของ dependency งานยาวหลายงวดให้ตกลงส่งมอบโค้ดตามงวดจ่ายเงินด้วย ไม่กองความเสี่ยงไว้วันจบงาน ข้อไหนไม่มีให้ถามเป็นลายลักษณ์อักษรก่อนเซ็น คำตอบที่ใช้ได้คือคำตอบที่ชัดพอจะเขียนเพิ่มลงสัญญา ไม่ใช่คำรับปากปากเปล่า สัญญาอ่านคู่กับใบเสนอราคาเสมอ วิธีอ่านฝั่งราคาเราเขียนไว้ในจ้างพัฒนาซอฟต์แวร์ ราคาคิดจากอะไร และถ้าอยากได้คู่สัญญาที่ประกาศเรื่องพวกนี้ไว้ชัดตั้งแต่หน้าเว็บ ดูขอบเขตงานรับพัฒนาซอฟต์แวร์สั่งทำของเราได้ คุยรอบแรกฟรี
คำถามที่พบบ่อย
Source code ที่จ้างทำเป็นของใคร
ตามที่สัญญาเขียนครับ อย่ารอให้กฎหมายตัดสินแทน เพราะผลขึ้นกับรูปแบบการจ้างและข้อตกลงที่ทำกันไว้ วิธีเดียวที่ชัวร์คือเขียนลงสัญญาตรงๆ ว่าโค้ดและลิขสิทธิ์โอนให้ผู้ว่าจ้างเมื่อจ่ายครบ ถ้าสัญญาเงียบเรื่องนี้ ให้ถามก่อนเซ็น ไม่ใช่หลังส่งมอบ
สัญญาให้แค่สิทธิ์ใช้งาน ต่างจากเป็นเจ้าของยังไง
ต่างเหมือนเช่ากับซื้อครับ สิทธิ์ใช้งานแปลว่าผู้พัฒนายังถือโค้ดไว้ คุณได้ license ใช้ตามเงื่อนไข จะแก้ ต่อยอด หรือย้ายให้ทีมอื่นดูแลได้แค่ไหน ขึ้นกับเงื่อนไข license ที่เขียนไว้ แบบนี้ไม่ผิดกฎหมายและราคามักถูกกว่า แต่ต้องอ่านเงื่อนไขให้ครบก่อนเซ็นว่ากำลังซื้ออะไรและออกจากระบบยังไง
งานจ้างพัฒนาซอฟต์แวร์ต้องขอส่งมอบอะไรบ้าง
ยึดหลักเดียวครับ คือต้องย้ายระบบต่อได้โดยไม่ต้องพึ่งผู้พัฒนาเดิม แกนที่ควรขอมี 4 อย่าง ตัว source code สิทธิ์เข้าถึงบัญชีที่ระบบรันอยู่ เอกสารวิธีติดตั้งและรันระบบ และข้อมูลในรูปแบบที่เอาออกมาได้ แล้วปรับเพิ่มลดตามลักษณะระบบ ถ้าระบบใช้งานได้แต่ขาดของพวกนี้ วันที่อยากเปลี่ยนผู้ดูแล การย้ายจะยากและแพงกว่าที่ควรมาก
งานพัฒนาซอฟต์แวร์รับประกันกี่วัน
ไม่มีเลขบังคับตามกฎหมายครับ เป็นเรื่องที่ต้องตกลงในสัญญา ของเราเองระบุระยะรับประกันและขอบเขตเป็นรายสัญญา เช่น 30 หรือ 90 วันหลังส่งมอบตามลักษณะงาน สำหรับแก้บั๊กของงานเดิม จุดที่ต้องเขียนให้ชัดคือรับประกันครอบคลุมอะไร และอะไรนับเป็นงานใหม่ที่คิดเงินเพิ่ม






