มาทำ In-House Development กันเถอะ
มีคนถามเข้ามามากมายว่าระหว่างจ้างพัฒนาโปรแกรม (Outsource), ซื้อโปรแกรมสำเร็จรูป(Package) และพัฒนาโปรแกรมใช้เองภายในองค์กร (In-House Development) อันไหนดีกว่ากัน ก่อนอื่นเราลองมาดูข้อดี/ข้อเสียของแต่ละอันกันก่อนนะครับ
จ้างพัฒนาโปรแกรม (Outsource)
รูปแบบคืออาจจะให้วิธีจ้างทั้งหมด (turn key) หรือจ้างบางส่วน หรือบางครั้งก็ใช้วิธีจ้างเป็น Manday มาทำงานให้ในบางช่วงเวลา
ข้อดี
- สะดวกเพราะไม่ต้องมีทีม Dev เป็นของตนเองมีแค่ทีม Support พอ
- คุมงบประมาณง่าย (ถ้า requirement ชัดเจน)
- คุมเวลาโครงการได้ง่าย (ถ้าหาคนมาทำได้)
ข้อเสีย
- โปรแกรมเมอร์หายาก
- บางครั้งถ้า user ให้ reqirement คลุมเครือไม่ชัดเจนอาจจะส่งผลต่อแผนงานและงบประมาณได้ (ในกรณีจ้างแบบ Manday)
- การต้องการเพิ่มเติม Feature หรือปรับแต่งบางอย่างเล็กน้อยจะเป็นเรื่องที่ยากลำบากมาก (ในกรณีจ้างแบบ Turnkey)
- โดนทิ้งงาน (เป็นปัญหาที่เจอบ่อยมาก เห็นฟ้องร้องกันก็เยอะ)
สรุปการจ้างแบบ Outsource นั้นปัญหาส่วนใหญ่เกิดจาก Requirement เป็นตัวแปรสำคัญในการที่จะทำให้ Project สำเร็จหรือไม่ เพราะบางครั้งการให้ Requirement บาง ๆ คร่าว ๆ ไม่ลงรายละเอียดมากก็จะทำให้บริษัทที่มารับงานนั้นประเมิณราคาต่ำกว่าเนื้องานจริง ๆ ทำให้เกิดปัญหาบานปลายได้
อีกส่วนนึงเกิดจากบางครั้งผู้มารับงานอาจจะไม่มีประสพการณ์เพียงพอ พอรับงานไปแล้วเริ่มทำไม่ไหวก็ทิ้งกันดื้อ ๆ ก็ส่งปัญหาต่อผู้ว่าจ้างได้
สุดท้ายภาระก็ไปตกอยู่ที่ผู้ว่าจ้างที่จะต้องมาแบกปัญหาไว้คนเดียวเพราะว่าจ้างแล้วไม่ได้งานแต่เสียเงินไปแล้ว แต่ถ้าเจอบริษัทที่มีความสามารถคุย Requirement กันลงตัวก็จะได้งานที่เหมาะสมกับราคา จุดนี้เลยกลายเป็นความเสี่ยงหลักของการทำ Outsource
ซื้อโปรแกรมสำเร็จรูป (Package)
รูปแบบคือไปหาซื้อ Software ที่พัฒนาไว้เสร็จแล้ว นำมาปรับแต่งให้เข้ากับการทำงานขององค์กรของเรา บางครั้งอาจจะต้องมีการปรับเปลี่ยนการทำงานของเราเองเพื่อให้เข้ากับ Software ด้วย
ข้อดี
- พร้อมใช้งาน
- คุมเวลาโครงการได้ง่าย (ถ้าไม่ต้องปรับแต่งอะไรมากมาย)
- คุมราคาโครงการได้ง่าย
- ไม่ต้องมีโปรแกรมเมอร์ ใช้แต่ Support กับ Implementor
ข้อเสีย
- มีบาง Feature ที่เราไม่ต้องการใช้งานติดมาด้วย
- โปรแกรมจะไม่ค่อยตรงกับงานขององค์กรแบบ 100% ต้องปรับเข้าหากัน
- ปรับแต่งโปรแกรมเป็นไปได้ยาก (บางโปรแกรมต้องให้ผู้พัฒนาเป็นคนปรับแต่งให้ได้)
- เชื่อมต่อไปยังระบบอื่นทำได้ค่อนข้างลำบาก (บางโปรแกรมเป็นระบบปิด)
สรุปการซื้อ Software สำเร็จรูปมาใช้งานก็เป็นตัวเลือกที่ดีที่เราจะนำ IT เข้ามาประยุกต์ใช้งานภายในองค์กรของเรา ราคาก็ชัดเจนฉนั้นจะง่ายสำหรับการบริหารจัดการเรื่องงบประมาณและเวลาของโครงการ แต่เนื่องจากโปรแกรมสำเร็จรูปนั้นเขาก็ออกแบบมาอย่างกว้าง ๆ เพื่อรองรับหลายธุรกิจ มันจึงเกิดปัญหาที่บางอย่างมันเกินกว่าความจำเป็นในการใช้งานขององค์กรเรา
In-House Development
รูปแบบคือการมีโปรแกรมเมอร์ภายในองค์กรเองเป็นทีมที่มีทั้ง Programmer, SA, PM, Tester, Support เพื่อพัฒนาโปรแกรมใช้เองภายในองค์กร
ข้อดี
- สามารถพัฒนาโปรแกรมได้ตรงตามความต้องการของผู้ใช้งาน
- บริหารจัดการเวลาโครงการได้ง่าย
- บริหารจัดการงบประมาณโครงการได้ง่าย
ข้อเสีย
- โปรแกรมเมอร์หายาก ต้องมีการจัดฝึกอบรมกันภายในเองเพื่อบรรเทาปัญหา
- Tech Stack มีเยอะแล้วปรับเปลี่ยนเร็วทำให้ทีมปรับตัวลำบาก
- Requirement มาเรื่อย ๆ ต้องมีระบบจัดการที่ดี
สรุปการทำ In-House Development นั้นเป็นการอุดช่องโหว่ของการทำ Outsource และการใช้ Sofware Package ตรงที่ในบางครั้งการทำ Project ถ้ามันใหญ่มาก ๆ ก็ควรที่จะตัดงานบางส่วนออกไปให้ Outsource ทำ ในบางส่วนของ Project ก็ใช้ Software Package ที่มี Feature ครอบคลุมความต้องการในส่วนนั้น ที่เหลือก็พัฒนากันเอง
แนวทางการทำ In-House Development
- Microservice แนะนำว่าให้ออกแบบทุกอย่างให้อยู่ในรูปแบบ Microservice
- DevOps ควรนำ DevOps มาใช้เพื่อช่วยในเรื่องการทำ Automate ในทุก ๆ ส่วนของการพัฒนา Software
สำหรับท่านใดที่สนใจในเรื่องการทำ In-House Development สามารถเข้ามาพูดคุยแลกเปลี่ยนกันได้ที่ หน้า page facebook : pnpsolution หรือ web site : www.pnpsw.com หรือนัดหมายเพื่อรับคำปรึกษาได้ที่เบอร์ 0818473765 ได้ครับ