เรื่องเล่าที่ได้ยินบ่อยจากเจ้าของธุรกิจที่เคย จ้างเขียนโปรแกรม คือ คุยกันไม่กี่ครั้ง ตกลงกันในแชท โปรแกรมเมอร์รับงานไป ผ่านไปหลายเดือนได้ระบบที่ไม่ตรงกับที่คิด พอขอแก้ก็ถูกบอกว่า “อยู่นอกขอบเขต” บางรายโปรแกรมเมอร์หายไปพร้อมซอร์สโค้ด เหลือไว้แค่ระบบที่ไม่มีใครแก้ได้
ปัญหาเหล่านี้ส่วนใหญ่ไม่ได้เกิดเพราะฝีมือเขียนโค้ด แต่เกิดจากการเริ่มต้นที่ไม่ชัด ไม่มีเอกสารความต้องการ ไม่มีงวดงาน ไม่ได้ตกลงเรื่องการทดสอบ และไม่ได้คุยเรื่องการดูแลหลังส่งมอบ
บทความนี้คือคู่มือสำหรับเจ้าของธุรกิจที่กำลังจะ จ้างทำโปรแกรม หรือจ้างพัฒนาซอฟต์แวร์เฉพาะธุรกิจ ไม่ว่าจะจ้างฟรีแลนซ์ ทีมเล็ก หรือบริษัทซอฟต์แวร์ เราจะไล่ตั้งแต่ก่อนเริ่ม ระหว่างพัฒนา จนถึงหลังส่งมอบ ถ้ายังไม่แน่ใจว่าควรทำระบบเองหรือใช้ซอฟต์แวร์สำเร็จรูป แนะนำอ่าน ซอฟต์แวร์สั่งทำหรือ SaaS ก่อน
ก่อนจ้างเขียนโปรแกรม ถามตัวเองให้ชัดก่อน
ก่อนติดต่อผู้พัฒนาคนไหน ลองตอบคำถามเหล่านี้ให้ได้ ยิ่งตอบชัด การคุยและการตีราคาจะยิ่งตรง
- ปัญหาที่อยากแก้คืออะไร เช่น สต็อกไม่ตรง ตามงานขายไม่ได้ ลูกค้าจองผ่านแชทจนตอบไม่ทัน
- ใครจะใช้ระบบ พนักงานกี่คน กี่บทบาท ลูกค้าภายนอกใช้ด้วยไหม
- ตอนนี้ทำงานนี้อย่างไร ใช้ Excel กระดาษ หรือโปรแกรมอื่นอยู่
- ถ้าระบบสำเร็จ จะวัดจากอะไร เช่น ลดเวลาทำเอกสาร ลดความผิดพลาด เห็นตัวเลขแบบเรียลไทม์
- มีซอฟต์แวร์สำเร็จรูปที่แก้ได้แล้วหรือยัง ถ้ามีและเหมาะพอ อาจไม่ต้องจ้างทำใหม่
- ต้องเชื่อมกับระบบอะไรบ้าง เช่น ระบบบัญชี ช่องทางชำระเงิน LINE OA
ถ้ายังนึกภาพไม่ออกว่าระบบที่ธุรกิจอื่นทำกันมีหน้าตาแบบไหน ดูตัวอย่างได้ใน Web Application ต่างจากเว็บไซต์อย่างไร
เขียนเอกสารความต้องการ (Requirement) ให้คนอื่นอ่านเข้าใจ
เอกสารความต้องการคือสิ่งที่ปกป้องทั้งผู้จ้างและผู้รับจ้าง ไม่จำเป็นต้องเป็นเอกสารเทคนิคหนา ๆ แต่ต้องอ่านแล้วเข้าใจตรงกัน หัวข้อที่ควรมี ได้แก่
- ภาพรวมและเป้าหมาย ระบบนี้ทำเพื่ออะไร แก้ปัญหาอะไร
- ผู้ใช้และสิทธิ์ แต่ละบทบาททำอะไรได้ เช่น พนักงานขายสร้างใบเสนอราคา หัวหน้าอนุมัติส่วนลด
- ขั้นตอนงาน (Workflow) เขียนเป็นลำดับตั้งแต่เริ่มจนจบ
- รายการฟีเจอร์ แบ่งเป็น “ต้องมี” และ “อยากได้ภายหลัง”
- ตัวอย่างเอกสารหรือข้อมูลจริง เช่น ใบเสนอราคาที่ใช้อยู่ ไฟล์ Excel ตัวอย่าง
- การเชื่อมต่อระบบอื่น ระบุชื่อระบบและข้อมูลที่ต้องรับส่ง
- ข้อกำหนดอื่น เช่น ต้องใช้บนมือถือ รองรับภาษาอังกฤษ ปริมาณผู้ใช้พร้อมกันโดยประมาณ
เทคนิคที่ช่วยได้มากคือเขียนเป็น “เรื่องเล่าผู้ใช้” เช่น “ในฐานะแอดมิน ฉันต้องการเห็นงานช่างที่ยังไม่ปิดทั้งหมดในหน้าเดียว เพื่อโทรตามได้ทันที” รูปแบบนี้ทำให้ผู้พัฒนาเข้าใจเหตุผลเบื้องหลังฟีเจอร์ ไม่ใช่แค่รายการปุ่ม
ผู้พัฒนาที่ดีจะช่วยขัดเกลาเอกสารนี้ ถามคำถามที่เรายังไม่ได้คิด และชี้จุดที่ขัดกันเอง ถ้าผู้รับจ้างตอบรับทุกอย่างโดยไม่ถามอะไรเลย นั่นคือสัญญาณที่ควรระวัง
ขั้นตอนการพัฒนาซอฟต์แวร์ที่ผู้จ้างควรรู้
ไม่ว่าจะจ้างใคร งานพัฒนาซอฟต์แวร์ที่ดีมักผ่านขั้นตอนคล้ายกัน การรู้ขั้นตอนช่วยให้ผู้จ้างรู้ว่าตอนไหนต้องมีส่วนร่วม
| ขั้นตอน | สิ่งที่เกิดขึ้น | สิ่งที่ผู้จ้างต้องทำ | ผลลัพธ์ที่ควรได้ |
|---|---|---|---|
| 1. เก็บความต้องการ | สัมภาษณ์ผู้ใช้ ดูขั้นตอนงานจริง | ให้เวลาคุย ส่งตัวอย่างเอกสาร | เอกสารความต้องการ |
| 2. ออกแบบระบบ | ออกแบบหน้าจอ โครงสร้างข้อมูล | ตรวจหน้าจอตัวอย่าง (Wireframe/Prototype) | แบบหน้าจอที่อนุมัติแล้ว |
| 3. พัฒนา | เขียนโปรแกรมทีละส่วน | ดูเดโมตามรอบ ให้ความเห็นเร็ว | ระบบทดสอบได้ทีละโมดูล |
| 4. ทดสอบ | ผู้พัฒนาทดสอบเอง แล้วให้ผู้ใช้ทดสอบ | ทดสอบตามสถานการณ์จริง รายงานปัญหา | รายการปัญหาที่แก้แล้ว |
| 5. ย้ายข้อมูลและอบรม | นำข้อมูลเก่าเข้า สอนผู้ใช้ | เตรียมข้อมูลให้สะอาด จัดเวลาอบรม | ทีมใช้งานได้จริง |
| 6. เปิดใช้งาน | ขึ้นระบบจริง เฝ้าดูช่วงแรก | กำหนดวันตัดเปลี่ยนจากระบบเก่า | ระบบทำงานบนข้อมูลจริง |
| 7. ดูแลหลังส่งมอบ | แก้บั๊ก อัปเดต พัฒนาต่อ | แจ้งปัญหาเป็นระบบ วางแผนเฟสถัดไป | ระบบเสถียรและเติบโตต่อ |
ขั้นตอนที่ผู้จ้างมักข้ามคือขั้นที่ 2 และ 4 ซึ่งเป็นขั้นที่ป้องกันความเข้าใจผิดได้ดีที่สุด การได้เห็นหน้าจอตัวอย่างก่อนเขียนโค้ดจริงช่วยประหยัดเวลาแก้ไขได้มาก
แบ่งเฟสและงวดงาน ลดความเสี่ยงทั้งสองฝ่าย
โปรเจกต์ที่ตกลงเป็นก้อนเดียว ส่งมอบครั้งเดียวตอนท้าย มีความเสี่ยงสูง เพราะกว่าจะรู้ว่าไม่ตรงใจก็สายเกินไป ทางที่ดีกว่าคือแบ่งเป็นเฟสและงวดงาน
แนวทางการแบ่ง
- เฟสแรก (MVP) ทำเฉพาะฟีเจอร์ที่แก้ปัญหาหลัก เปิดใช้ได้จริงเร็วที่สุด
- เฟสถัดไป เพิ่มฟีเจอร์ตามความเห็นของผู้ใช้หลังใช้งานจริง
- แต่ละเฟสแบ่งเป็นงวด (Milestone) เช่น งวดออกแบบหน้าจอ งวดโมดูลหลัก งวดทดสอบและเปิดใช้
แต่ละงวดควรมี “สิ่งที่ส่งมอบ” ที่จับต้องได้ เช่น หน้าจอที่ทดลองกดได้ หรือโมดูลที่ทดสอบผ่านแล้ว ไม่ใช่แค่ “ทำไปแล้ว 50 เปอร์เซ็นต์” ซึ่งตรวจสอบไม่ได้ การจ่ายตามงวดที่ผูกกับสิ่งส่งมอบจริงช่วยให้ทั้งสองฝ่ายสบายใจ
อีกเรื่องที่ควรตกลงล่วงหน้าคือ การขอเปลี่ยนแปลงขอบเขต (Change Request) ระหว่างทางความต้องการเปลี่ยนได้เป็นเรื่องปกติ แต่ควรมีขั้นตอนชัดว่าขอเพิ่มอย่างไร ประเมินผลกระทบต่อเวลาอย่างไร และอนุมัติโดยใคร
ความเป็นเจ้าของซอร์สโค้ดและข้อมูล
นี่คือประเด็นที่ผู้จ้างลืมถามบ่อยที่สุด และสร้างปัญหาหนักที่สุดในภายหลัง ควรตกลงให้ชัดเป็นลายลักษณ์อักษร
- ใครเป็นเจ้าของซอร์สโค้ด หลังชำระครบ ผู้จ้างได้สิทธิ์ในซอร์สโค้ดทั้งหมด หรือได้แค่สิทธิ์ใช้งาน
- ซอร์สโค้ดเก็บที่ไหน ควรอยู่ในระบบจัดการโค้ด (เช่น Git) ที่ผู้จ้างมีสิทธิ์เข้าถึงได้ ไม่ใช่อยู่ในเครื่องผู้พัฒนาคนเดียว
- ส่วนประกอบของบุคคลที่สาม ระบบมักใช้ไลบรารีหรือบริการภายนอก ควรรู้ว่ามีอะไรบ้าง และมีเงื่อนไขการใช้งานอย่างไร
- บัญชีโฮสติ้ง โดเมน และบริการคลาวด์ ควรเปิดในชื่อของธุรกิจ แล้วให้สิทธิ์ผู้พัฒนาเข้าไปทำงาน ไม่ใช่กลับกัน
- ข้อมูลในระบบเป็นของผู้จ้าง และส่งออกได้เมื่อต้องการ
- เอกสารประกอบ วิธีติดตั้ง โครงสร้างระบบ และรหัสผ่านสำคัญ ส่งมอบเป็นเอกสาร
หลักง่าย ๆ คือ ถ้าวันหนึ่งผู้พัฒนาเดิมไม่สะดวกทำต่อ ผู้พัฒนาคนใหม่ต้องรับช่วงต่อได้โดยไม่ต้องเริ่มใหม่ทั้งหมด
การทดสอบและการรับงาน (Acceptance)
การรับงานที่ดีไม่ใช่แค่ “ลองกดดูแล้วใช้ได้” แต่ต้องมีเกณฑ์ที่ตกลงกันไว้ล่วงหน้า
เขียนเกณฑ์รับงานตั้งแต่ตอนเขียนความต้องการ
ทุกฟีเจอร์ควรมีเงื่อนไขว่าแบบไหนถือว่าผ่าน เช่น “เมื่อสร้างใบเสนอราคาที่ส่วนลดเกินที่กำหนด ระบบต้องส่งให้หัวหน้าอนุมัติก่อน และเซลส์ส่งให้ลูกค้าไม่ได้จนกว่าจะอนุมัติ”
ทดสอบด้วยสถานการณ์จริง
ให้พนักงานที่จะใช้งานจริงทดสอบ ใช้ข้อมูลที่ใกล้เคียงของจริง และลองกรณีผิดปกติ เช่น กรอกข้อมูลไม่ครบ ยกเลิกกลางทาง ใช้บนมือถือที่เน็ตช้า
บันทึกปัญหาอย่างเป็นระบบ
แจ้งปัญหาพร้อมขั้นตอนที่ทำ ผลที่คาดว่าจะได้ ผลที่เกิดจริง และภาพหน้าจอ การส่งข้อความว่า “ระบบใช้ไม่ได้” ในแชททำให้แก้ช้ามาก
กำหนดระยะรับประกัน
ตกลงว่าหลังส่งมอบ ผู้พัฒนาจะแก้บั๊กที่เกิดจากงานของตัวเองให้ในช่วงเวลาหนึ่ง และแยกให้ชัดระหว่าง “บั๊ก” กับ “ฟีเจอร์ใหม่”
เปรียบเทียบทางเลือกเมื่อจะจ้างทำโปรแกรม
| ทางเลือก | จุดเด่น | ข้อควรระวัง | เหมาะกับ |
|---|---|---|---|
| ฟรีแลนซ์คนเดียว | คุยตรง คล่องตัว | ถ้าป่วยหรือรับงานล้น งานหยุดทั้งหมด | ระบบเล็ก ขอบเขตชัด |
| ทีมฟรีแลนซ์ | มีหลายทักษะ ทั้งออกแบบ เขียนโค้ด ทดสอบ คล่องตัว | ต้องดูว่าใครรับผิดชอบหลัก | ระบบขนาดเล็กถึงกลางที่ต้องพัฒนาต่อเนื่อง |
| บริษัทซอฟต์แวร์ | กระบวนการเป็นทางการ ทีมใหญ่ | ขั้นตอนมาก ปรับเปลี่ยนช้ากว่า | ระบบใหญ่ องค์กรที่ต้องการเอกสารครบ |
| ทีมพัฒนาภายใน | ควบคุมเองทั้งหมด เข้าใจธุรกิจลึก | ต้องบริหารคนและสรรหาเอง | ธุรกิจที่ซอฟต์แวร์เป็นแกนหลัก |
ไม่มีทางเลือกไหนดีที่สุดสำหรับทุกคน สิ่งสำคัญคือกระบวนการทำงานและข้อตกลงที่ชัด รายละเอียดเชิงลึกเรื่องการเลือกระหว่างทีมแบบต่าง ๆ อ่านได้ใน เอเจนซีหรือฟรีแลนซ์ เลือกแบบไหนดี
สัญญาณที่ควรระวังเมื่อคุยกับผู้รับจ้าง
- ตีราคาและระยะเวลาทันทีโดยไม่ถามรายละเอียด
- ไม่มีผลงานหรือไม่สามารถอธิบายงานที่เคยทำได้
- ไม่พูดถึงการทดสอบ การส่งมอบซอร์สโค้ด หรือการดูแลหลังส่งมอบ
- ขอให้จ่ายเต็มจำนวนก่อนเริ่มงาน
- สื่อสารยาก ตอบช้ามากตั้งแต่ช่วงคุยงาน
การดูแลหลังส่งมอบและการพัฒนาต่อ
ซอฟต์แวร์ไม่ใช่ของที่ทำเสร็จแล้วจบ ระบบที่ใช้งานจริงต้องได้รับการดูแลต่อเนื่อง เพราะเบราว์เซอร์ ระบบปฏิบัติการ ไลบรารี และบริการที่เชื่อมต่ออยู่เปลี่ยนตลอด
สิ่งที่ควรตกลงเรื่องการดูแล
- การสำรองข้อมูล ทำอัตโนมัติไหม เก็บที่ไหน และทดลองกู้คืนได้จริงหรือเปล่า
- การอัปเดตความปลอดภัย ใครรับผิดชอบ ทำบ่อยแค่ไหน
- การเฝ้าระวังระบบ ถ้าระบบล่ม ใครรู้ก่อน และติดต่อใคร (ดูแนวทางใน เว็บล่มต้องทำอะไร)
- ช่องทางแจ้งปัญหาและเวลาตอบกลับ
- การพัฒนาฟีเจอร์ใหม่ คิดแยกเป็นงานใหม่ หรือรวมอยู่ในแพ็กเกจดูแล
ระบบที่ไม่มีใครดูแลจะค่อย ๆ เสื่อม จนวันหนึ่งใช้งานไม่ได้ในจังหวะที่ธุรกิจต้องการมากที่สุด เช่น ช่วงไฮซีซันของธุรกิจท่องเที่ยวภาคใต้
ทีมฟรีแลนซ์ของเราทำงานแบบไหน
Southern Whale เป็นทีมฟรีแลนซ์ที่พัฒนาเว็บไซต์และระบบให้ธุรกิจภาคใต้ เราเริ่มจากช่วยเขียนความต้องการให้ชัด แบ่งงานเป็นเฟสและงวดที่ตรวจได้ ให้ดูหน้าจอตัวอย่างก่อนเขียนจริง ส่งมอบซอร์สโค้ดพร้อมเอกสาร และวางแผนดูแลต่อหลังเปิดใช้ ดูรายละเอียดได้ที่ บริการพัฒนาซอฟต์แวร์ หรือถ้ามีโจทย์ในใจแล้ว เล่าให้เราฟังทาง LINE OA ได้เลย แม้ยังเป็นแค่ไอเดีย เราช่วยดูได้ว่าควรเริ่มจากตรงไหน
คำถามที่พบบ่อยเรื่องจ้างเขียนโปรแกรม
จ้างเขียนโปรแกรมต้องมีความรู้ด้านไอทีไหม
ไม่จำเป็น สิ่งที่ผู้จ้างต้องรู้ดีที่สุดคือธุรกิจและขั้นตอนงานของตัวเอง ส่วนเรื่องเทคนิคเป็นหน้าที่ของผู้พัฒนาที่ต้องอธิบายให้เข้าใจเป็นภาษาธรรมดา
ไม่มีเอกสารความต้องการเลย เริ่มจ้างได้ไหม
เริ่มได้ แต่ควรให้ผู้พัฒนาช่วยเก็บความต้องการและเขียนเอกสารเป็นงานแรกก่อนเริ่มเขียนโปรแกรม ผู้รับจ้างหลายรายแยกงานส่วนนี้เป็นงวดแรกโดยเฉพาะ
ค่าจ้างทำโปรแกรมขึ้นกับอะไร
ขึ้นกับจำนวนหน้าจอและฟีเจอร์ จำนวนบทบาทผู้ใช้ ความซับซ้อนของกฎธุรกิจ จำนวนระบบที่ต้องเชื่อมต่อ การย้ายข้อมูลเก่า และระดับการดูแลหลังส่งมอบ เอกสารความต้องการที่ชัดช่วยให้ประเมินได้แม่นขึ้น
ควรขอซอร์สโค้ดตอนไหน
ควรตกลงตั้งแต่ก่อนเริ่มงาน และดีที่สุดคือให้โค้ดอยู่ในระบบจัดการโค้ดที่ผู้จ้างเข้าถึงได้ตลอดโปรเจกต์ ไม่ใช่รอรับตอนท้าย
ถ้าผู้พัฒนาเดิมไม่ทำต่อ จะทำอย่างไร
ถ้ามีซอร์สโค้ด เอกสารประกอบ และสิทธิ์เข้าถึงโฮสติ้งครบ ผู้พัฒนาคนใหม่สามารถศึกษาและรับช่วงต่อได้ แต่ถ้าขาดสิ่งเหล่านี้ อาจต้องพัฒนาใหม่บางส่วนหรือทั้งหมด นี่จึงเป็นเหตุผลที่ต้องตกลงเรื่องนี้ตั้งแต่แรก
จ้างทำโปรแกรมใช้เวลานานแค่ไหน
ขึ้นกับขอบเขต ระบบเล็กที่มีขอบเขตชัดใช้เวลาไม่นาน ส่วนระบบที่มีหลายโมดูลต้องใช้เวลามากขึ้น การแบ่งเฟสทำให้ธุรกิจเริ่มใช้เวอร์ชันแรกได้เร็ว แล้วค่อยเพิ่มส่วนอื่นระหว่างใช้งานจริง

