ต่อจากภาคสามครับ บทความนี้จะกลับมาที่ทฤษฎีที่สำคัญที่ Project Manager ควรรู้และเข้าใจ ทั้งหมดนี้ก็เพื่อให้งานเราเดินไปด้วยความเรียบร้อยตามที่มันควรจะเป็น
5. รู้จักความสัมพันธ์ของสามเหลี่ยมทองคำ
ไม่ว่า Project ไหนก็หนีเรื่องนี้ไม่พ้น Project Manager เค้าจ้างมาก็เพื่อจัดการสร้างความสมดุลให้เกิดขึ้นระหว่าง Scope, Schedule, และ Resources ครับ โดยความหมายแล้ว Scope คือสิ่งที่เราต้องทำใน Project เรียกง่ายๆว่า Requirement นั่นแหละ มันจะเป็นอะไรบ้างก็แตกต่างกันไปตามลักษณะงาน เช่น เขียน Software, จัดซื้อและติดตั้ง Hardware/Network, เขียนเอกสารต่างๆ, จัดเทรนนิ่งให้ลูกค้าก่อนส่งมอบงาน และอื่นๆ?ส่วน Schedule ก็คือเวลาที่เรามีในการทำให้ Scope นั้นเป็นไปตามที่ได้ตกลงกันไว้ สุดท้าย Resources แปลตรงตัวก็คือทรัพยากรที่เรามีซึ่งประกอบด้วย คน, เงิน, และเครื่องไม้เครื่องมือ

ตามทฤษฎีนั้นเราจะให้คำจำกัดความของ Project ที่ประสบความสำเร็จว่า “ส่งมอบงานได้ตาม Scope ภายใน Schedule และ Resources ที่กำหนดไว้” ดังนั้นการสร้างความสมดุลนั้นมีความสำคัญเพราะถ้าขาดสิ่งใดสิ่งหนึ่งไปมันจะกลายเป็นว่า Project เราล้มเหลวไป เมื่อรู้แบบนี้แล้วเราลองมาดูกันครับว่าความสัมพันธ์ของปัจจัยทั้งสามนั้นเป็นอย่างไร
ด้วยสามัญสำนึกนะครับ ทุกคนคงคิดเหมือนกันว่า Scope ยิ่งน้อยยิ่งดี … Schedule ยิ่งยาวยิ่งดี … Resources ยิ่งมากยิ่งดี จริงปะ? เพราะถ้างานน้อยมีเวลาทำมากและช่วยกันหลายคนความเสี่ยงมันก็จะลดลงและโอกาสที่ Project นี้จะประสบความสำเร็จก็มากขึ้น … แต่ช้าก่อน โลกนี้ช่างโหดร้ายยิ่งนัก ความจริงแล้วสิ่งที่ Project Manager ต้องเจอมันจะตรงข้ามกับสิ่งที่หวังไว้หมดเลยครับ เพราะเมื่อทำงานไป Scope จะเพิ่มขึ้นเรื่อยๆ … Schedule อาจจะโดนตัดเพื่อเร่งให้ Project เสร็จเร็วขึ้น … แล้วปิดท้ายด้วย Resources หายไป ทั้งคนลาออกและโดนตัดงบประมาณ ฮ่าๆ แล้วจะทำยังไงกันหละเนี่ยะ
ตอบง่ายๆก็ด้วยสามัญสำนึกอีกเหมือนเดิมครับ
- ถ้า Scope เพิ่มขึ้น เราก็ต้องยืด Schedule ออกไปหรือไม่ก็เพิ่ม Resources เข้ามา หรือทั้งสองอย่าง — ระดับความเครียด 5/10
- ถ้า Schedule ถูกตัดออก เราก็ต้องลด Scope ลงหรือไม่ก็เพิ่ม Resources เข้ามา หรือทั้งสองอย่าง — ระดับความเครียด 5/10
- ถ้า Resources หายไป เราก็ต้องลด Scope ลงหรือไม่ก็ยืด Schedule ออกไป หรือทั้งสองอย่าง?– ระดับความเครียด 5/10
- ถ้า Scope เพิ่มขึ้นและ Schedule ลดลง เราก็ต้องเพิ่ม Resources เข้ามา??– ระดับความเครียด 8/10
- ถ้า Scope เพิ่มขึ้นและ Resources ลดลง เราก็ต้องขอยืด Schedule ออกไป??– ระดับความเครียด 8/10
- ถ้า Schedule และ Resources ลดลง เราก็ต้องขอลด Scope ตามเช่นกัน??– ระดับความเครียด 8/10
- ถ้า Scope เพิ่มขึ้น บวกกับ Schedule ลดลง ปิดท้ายด้วย Resources หายไป เราก็ต้องขอลาป่วยหละครับเพราะระดับความเครียดจะพุ่งสูงถึงระดับ Infinity เฮ้อ
แต่ถ้าพิจารณาให้ลึกลงไปอีกนิดเราจะเห็นว่า … มันไม่ง่ายแบบนั้นหรอก
การเพิ่มคนเข้ามาใน Project
การเพิ่มคนเข้ามาตอนกลางหรือท้าย Project ด้วยความหวังที่ว่าจะทำให้งานเสร็จเร็วขึ้นนั้นไม่สำเร็จเสมอไปนะครับ ในมุมมองส่วนตัวแล้ว Software Development Project ไม่เหมือน Project ประเภทอื่นๆ เช่น Construction Project (โครงการก่อสร้าง) ที่ทุกอย่างค่อนข้างตายตัว มีกระบวนการทำงานที่เชื่อถือได้และมีปัจจัยภายนอกที่มีผลกระทบกับงานน้อยกว่า ในขณะที่ Software Development Project นั้นมีลักษณะที่เฉพาะตัวมากๆครับ เช่น การทำ Web Application จะแตกต่างจาก Mobile Application พอสมควร นั่นหมายความว่าเราต้องการคนที่มีทักษะ ความรู้และประสบการณ์ที่เหมาะสมกับงานจริงๆ (ส่วนใหญ่หายากมาก ภายในเวลาที่กำหนดนะ) ตรงนี้แหละครับที่จะเป็นปัญหา
ถ้าเราต้องเอาเวลาที่มีอยู่น้อยนิดไปสอนงานสมาชิกใหม่มากๆเข้า จนบางครั้งหันกลับมามองแล้วรู้สึกว่า “เฮ้ย ทำเองเสร็จไปนานแล้วนะเนี่ยะ” หนำซ้ำ ถ้าสมาชิกใหม่ที่เข้ามาทำงานผิดพลาดมากเกินไป บ่อยเกินไป มันจะกลายเป็นว่าเราต้องมาใช้เวลาแก้ไขงานเก่าแทนที่จะได้ทำงานใหม่
ความเสี่ยงอีกอย่างที่มีก็คือการรีบรับสมาชิกใหม่เข้ามาในทีมโดยไม่พิจารณาถึงนิสัยใจคอและลักษณะการทำงานให้รอบคอบแล้ว มีอาจจะสร้างปัญหาเรื่องการทำงานเป็นทีมเพิ่มขึ้นมาภายหลังอีกด้วย เช่น เข้ากับคนอื่นไม่ได้ ติสต์แตกทำงานเป็นทีมไม่เป็น อยากป่วยก็ป่วยอยากลาก็ลา สารพัด …
การขยายเวลาของ Project ออกไป
ตัวเลือกถัดมาคือการขยายเวลาออกไปเพื่อทำงานให้เสร็จครบถ้วนก็อาจจะไม่เหมาะสมเหมือนกัน ผมพูดโดยอ้างอิงจากลักษณะธุรกิจแบบ Company C นะครับ ยุคนี้สมัยนี้ Time to Market สำคัญมาก สำคัญที่สุดด้วยซ้ำไป เคยอ่านหนังสือเล่มหนึ่งเค้าบอกไว้ว่า “ธุรกิจ Software นั้น ใคร Release ก่อนเป็นผู้ชนะ …” ประมาณว่าเอาเร็วเข้าว่า Feature ยังไม่ต้องครบ Quality เอาแค่รับได้ก็พอแล้วครับ บอกได้เลยครับว่าถ้าจะมัวมานั่งแก้บั๊กให้ครบทุกตัวก่อนถึงจะ Release ได้นั้นไม่ทันกินแน่นอน มันเป็นไปไมได้ในโลกปัจจุบันแล้วครับ
ทางออกที่ดีกว่าคือ
- จัดลำดับความสำคัญของ Feature ต่างๆให้ดี ให้ตรงตามความต้องการของลูกค้าขณะนั้นให้มากที่สุด
- เลือกทำเฉพาะสิ่งที่สำคัญที่สุดในแต่ละ Version
- Release บ่อยๆ (บ่อยที่สุดเท่าที่จะทำได้) อย่าง Firefox เนี่ยะครับ เมื่อต้นปียัง Version 3 อยู่เลยมั้ง ถึงตอนนี้ Version 7 ใกล้คลอดแล้ว เร็วจริงๆ
การตัดลด Scope
จากประสบการณ์ที่ผ่านมานะครับ กับ Software Development Project เนี่ยะปัจจัยที่ยืดหยุ่นที่สุดจะเป็น Scope คือถึงเวลาจริงๆแล้วเราจะเลือกตัด Scope เพื่อคงไว้ซึ่ง Schedule เดิม (หรือลดลง) ด้วย Resources ที่มีเท่าเดิม (หรือลดลง) ความท้าทายอยู่ที่ว่าถ้าเรามีการเขียนและจัดการ Requirement (หรือ Scope) แบบเดิมๆแล้วหละก็ ยากครับที่การตัดลด Scope จะทำได้อย่างมีประสิทธิภาพ ลองดูตัวอย่างข้างล่างนี้ครับ

ถ้า Requirement เราใหญ่มากแล้วการตัดงานออกคือ … นู้น จัดเต็มไป ตัดระบบค้นหาหนังสือทิ้งทั้งก้อนมันจะทำให้ Software เราไม่สมประกอบอย่างน่าเกลียดไปเลยซึ่ง Product Manager และลูกค้าคงไม่ปลื้มแน่ๆ แต่ลองดู Project ที่สองครับ ถ้าเราแบ่งงานเป็นส่วนย่อยๆให้เหมาะสม เราจะสามารถเลือกตัดเฉพาะส่วนงานที่สำคัญน้อยกว่าออกไปโดยคงไว้ซึ่งสิ่งที่จำเป็นต่อ Software ของเราในเวลานั้นจริงๆ แบบนี้ Software ของเราจะดูดีขึ้นมาเยอะครับ อย่างน้อยก็มีระบบค้นหาด้วยชื่อหนังสือหละ … ทั้งหมดที่พูดมานี่มันเป็น Concept ของ Agile Development ชัดๆ
อย่างไรก็ตาม Project Manager ไม่มีอำนาจตัดสินใจตรงนี้หรอก มันเป็นเรื่องของ Project Sponsor เค้า สิ่งที่เราทำได้คือถามเค้าไว้ตั้งแต่เนิ่นๆว่าระดับความยืดหยุ่นของปัจจัยทั้งสามเป็นอย่างไร ตรงนี้เป็นที่มาของ Flexibility Matrix ครับ

ตารางนี้มีไว้เพื่อบอกว่าถ้าถึงคราวจำเป็นจริงๆแล้ว เราจะเลือกสร้างความสมดุลให้สามเหลี่ยมทองคำนี้อย่างไร จากรูปจะเห็นว่าสิ่งแรกที่เราจะเลือกทำคือลด Scope เพราะมีความยืดหยุ่นมากที่สุด และเราจะไม่ยอมเลื่อน Schedule ออกไปเพราะมันยืดหยุ่นน้อยสุด (อาจจะมีลูกค้ารอใช้ Software อยู่)
จบแล้วครับสำหรับข้อห้าของ “Project Manager จำเป็น” ผมยังมีข้อมูลเหลืออีกเพียบเลย ต่อภาคหน้านะครับ




