ฆ่า Bug หนึ่งตัวต้องใช้เงินกี่บาท?
สวัสดีเช้าวันพุธที่ 23 กันยายน พ.ศ. 2558 เช้าวันนี้ขอมาพล่ามเรื่องของ สิ่งเล็กๆ ที่เรียกว่า Bug กันหน่อย อันสืบเนื่องจากว่าช่วงที่ผ่านมาหนูเริ่มขายแนวคิด การทำงานเชิงป้องกันไม่ให้เกิด Bug มากกว่า การทำงานแบบตั้งรับ Bug และก็ได้เจอกับคำถามว่า “เราต้องใช้คนมากขึ้น ใช้เงินมากขึ้น ใช่ไหม?” และ แลดูแพงกว่าการทำงานแบบตั้งรับ Bug
เช้าวันนี้ก็เลยมานั่งพล่ามนิดนึงละกันเกี่ยวกับเรื่องนี้ว่าจริงๆ แล้วการทำงานแบบเชิงป้องกันไม่ให้เกิด Bug นั้น แพงกว่า การทำงานแบบตั้งรับ Bug จริงๆ หรือเปล่า
คำออกตัวก่อนเริ่มพล่าม: ทั้งหมดที่หนูจะพล่ามให้เพื่อนพ้องน้องพี่ได้เสพ มาจากประสบการณ์ของตัวหนูเองนะจ๊ะ
สร้าง พัฒนาและดูแลซอฟต์แวร์แต่ละตัวนั้น เมื่อมีการเปลี่ยนแปลงเกิดขึ้นใน Source Code เมื่อไรก็มีโอกาสเสมอที่จะสามารถให้กำเนิด Bug ขึ้นมาได้ตลอดเวลาซึ่งสมมุติเหตุการณ์ขึ้นมา
ณ จุดเริ่มต้น
ยุ่น (สิ่งมีชีวิตที่เป็นศิลปินเขียน Code) เรียกขานกันว่า Programmer
บรรจงสร้างสรรผลงานซอฟต์แวร์ออกมาแบบหามรุ่งหามค่ำ (วันกำหนดส่งงานงวดเข้ามาเรื่อยๆ) โดยยุ่นเองไม่ได้มีโอกาสที่จะได้เห็นแม้กระทั่งความต้องการของลูกค้า (Requirement) ว่าต้องการอะไรบ้าง ทำไปเพื่อช่วยอะไรในธุรกิจหรืองานของลูกค้า เขาได้รับเพียงการสรุปและเอกสารที่บอกยุ่นว่าต้องสร้างสรรผลงานออกมาอย่างไร จาก เจ๋
เจ๋ (สิ่งมีชีวิตที่คิดว่าวิเคราะห์และออกแบบระบบได้หล่อที่สุดในสามโลก) เรียกขานกันว่า System Analyst
คนที่ไปไล่เก็บความต้องการของลูกค้าแล้วแปลงร่างออกมาให้เป็น Software Requirement Specification และ Solution Design แล้วส่งเอกสารทั้งสองฉบับไปให้ ยุ่น
หมออิม (สิ่งมีชีวิตที่คิดว่าตัวเองฉลาดที่สุดในโลก) เรียกขานกันว่า Software Tester
ระหว่างที่ ยุ่น สร้างสรรค์งานศิลปะอยู่นั้น หมออิมก็นั่งเตรียมเอกสารที่ใช้ในการทดสอบไปด้วย เช่น Test Cases, Test Scenarios, Test Data และ Test Environment เพื่อรอการมาของงานศิลปะ เพื่อทำการตรวจสอบและทดสอบว่าตรงตามความต้องการของลูกค้าตามที่ เจ๋ ไปรับความต้องการมา
เมื่อกำเนิดเกิด Bug หนึ่งตัวขึ้นมานั้น
เมื่อหมออิมได้รับงานศิลปะมาและก็เริ่มลงมือทำการตรวจสอบและทดสอบ เจ้าสิ่งเล็กๆ ที่เรียกว่า Bug ก็ถูกตรวจพบได้ขึ้นมา อ้างอิงตามขั้นตอนของการทำ Defect Management เอาแบบง่ายๆ พื้นๆ ก่อนก็ หมออิม ก็ทำการเขียนรายงานสรุปว่าเจอ Bug จากการทดสอบแบบไหน ใช้ข้อมูลในการทดสอบอะไร บนสภาวะและเงื่อนไขของการทดสอบแบบไหน แล้วก็ทำการส่งรายงาน Bug นั้นไปให้กับ ยุ่น ซึ่งสำหรับหนูเมื่อ Bug ถูกพบแล้วรายงานไป เราก็ควรจะเริ่ม
- จับเวลานับอายุขัยของสิ่งเล็กๆ ที่เรียกว่า Bug ตัวนั้น
- นับเงินที่ถูกใช้ไปในการฆ่าสิ่งเล็กๆ ที่เรียกว่า Bug ตัวนั้น
จุดที่น่าสนใจอยู่ตรงที่หลายๆ คนจะสนใจที่จะเก็บตัวเลขจำนวนชั่วโมงเฉพาะของ ยุ่นและเจ๋เท่านั้นสำหรับการฆ่าสิ่งเล็กๆ ที่เรียกว่า Bug แล้วก็อาจจะหรืออาจจะไม่คำนวนเป็นตัวเงินต้นทุนของการพัฒนาซอฟต์แวร์
จริงๆ แล้วนั้นสิ่งเล็กๆ ที่เรียกว่า Bug นี้ ถ้าต้องการให้ได้ต้นทุนจริงๆ ว่าเราใช้เงินไปกี่บาทในการฆ่าสิ่งเล็กๆ ที่เรียกว่า Bug ใแต่ละตัวนั้นสำหรับหนูขอให้เก็บข้อมูลจำนวนเวลาที่แต่ละคนที่เกี่ยวข้องกับการฆ่า Bug หนึ่งตัวนั้นลงไปด้วยและเมื่อฆ่าสิ่งเล็กๆ ที่เรียกว่า Bug เรียบร้อยก็จัดการคำนวนเงินออกมาว่าเราใช้เงินไปเท่าไร
ยกตัวอย่างเช่น
ค่าจ้างรายวัน (8 ชั่วโมงต่อวัน) ของ
- ยุ่น 800.00 บาท ตก 100.00 บาทต่อชั่วโมง
- เจ๋ 1600.00 บาท ตก 200.00 บาทต่อชั่วโมง
- หมออิม 800.00 บาท ตก 100.00 บาทต่อชั่วโมง
- ไก่ (IT Development Manager) 4,000.00 บาท ตก 500.00 บาทต่อชั่วโมง
จำลองเหตุการณ์ว่าสิ่งเล็กๆ ที่เรียกว่า Bug ตัวแรกที่ถูกฆ่าไปนั้นประกอบด้วยพิธีกรรมดังนี้
- Bug ถูกบันทึกและเขียนรายงานโดยหมออิม ใช้เวลาไป 1 ชั่วโมง คิดเป็นเงิน 100.00 บาท
- เจ๋ ทำการอ่านรายงาน Bug จากหมออิม ใช้เวลาไป 30 นาที คิดเป็นเงิน 100.00 บาท
- เจ๋ เดินกลับไปคุยกับ หมออิม เพราะรายละเอียดของรายงาน Bug อ่านแล้ว งง งง ใช้เวลาไป 1 ชั่วโมง 200.00 + 100.00 = 300.00 บาท
- หมออิม นั่งปรับแก้และเพิ่มรายละเอียดของรายงาน Bug ใหม่ ใช้เวลาไป 1 ชั่วโมง คิดเป็นเงิน 100.00 บาท
- เจ๋ ทำการอ่านรายงาน Bug จากหมออิมและส่งต่อไปให้ยุ่น ใช้เวลาไป 30 นาที คิดเป็นเงิน 100.00 บาท
- ยุ่น อ่านรายงาน Bug แล้วก็เดินไปคุยกับหมออิมอีกที ใช้เวลาไป 1 ชั่วโมง คิดเป็นเงิน 100.00 + 100.00 = 200.00 บาท
- ยุ่น แก้ไข Code เพื่อทำการฆ่า Bug ให้เรียบร้อย ใช้เวลาไป 1 วัน คิดเป็นเงิน 800.00 บาท
- ยุ่น เขียนสรุปสิ่งที่แก้ไขไปเพื่อทำการฆ่า Bug ตัวนั้นและส่งกลับไปให้หมออิม ใช้เวลาไป 30 นาที คิดเป็นเงิน 50.00 บาท
- หมออิม ดำเนินการดทดสอบดูว่า Bug ถูกฆ่าไปแล้วจริงๆ หรือไม่และพบว่ายังมีชีวิตอยู่ ใช้เวลาไป 1 ชั่วโมง คิดเป็นเงิน 100.00 บาท
- หมออิม ขอนัด เจ๋และยุ่น มาคุยสรุปเพื่ออธิบายว่าสิ่งที่ยุ่นแก้ไขมานั้นไม่ได้ฆ่า Bug ใช้เวลา 1 ชั่วโมง คิดเป็นเงิน 100.00 + 200.00 + 100.00 = 400.00 บาท
- เจ๋และยุ่น พบว่า Bug ตัวนี้กระทบกับโครงสร้างฐานข้อมูลของระบบและการแก้ไขส่งผลต่อการทำงานอื่นๆ ของตัวระบบเลยต้องขอนัดคุยกับไก่
- เจ๋ ยุ่นและไก่ ประชุมร่วมกับเพื่อหาทางแก้ไข Bug ตัวนี้และลดผลกระทบต่างๆ ที่จะเกิดขึ้น ใช้เวลาไป 4 ชั่วโมง คิดเป็นเงิน 800.00 + 400.00 + 1,600.00 = 2,800.00 บาท
- เจ๋ ยุ่นและไก่ ได้ข้อสรุปออกมาถึงแนวทางการแก้ไขปัญหาเพื่อลดผลกระทบและฆ่า Bug
- เจ๋และยุ่นช่วยกันเขียน Code และปรับโครงสร้างฐานข้อมูลเพื่อไม่ให้กระทบกับระบบโดยรวม ใช้เวลาไป 3 วัน คิดเป็นเงิน 4,800.00 + 2,400.00 = 7,200.00 บาท
- หมออิม ดำเนินการทดสอบดูว่า Bug นั้นหายไปหรือไม่ ใช้เวลาไป 1 ชั่วโมง คิดเป็นเงิน 100.00 บาท
- หมออิม ดำเนินการทดสอบระบบทั้งหมดเพื่อให้รู้ว่าการฆ่า Bug ตัวนั้นส่งผลกระทบหรือไม่ ใช้เวลาไป 6 ชั้วโมง คิดเป็นเงิน 600.00 บาท
- หมออิม แจ้งสรุปว่า Bug ถูกฆ่าไปแล้วและไม่ส่งผลกระทบอะไรกับระบบ
นั่งกดเครื่องคิดเลขออกมาว่า สิ่งเล็กๆ ที่เรียกว่า Bug นั้น หนึ่งตัวตามที่อยู่ในเหตุการณ์จำลองใช้คนไปทั้งหมด 4 คนและใช้เงินไปทั้งหมด 12,950.00 บาท
ลองคิดเล่นๆ ว่าถ้าเฉลี่ยต่อหนึ่งโครงการมีสิ่งเล็กๆ ที่เรียกว่า Bug จำนวน 200 ตัวและต้องดำเนินการตามพิธีกรรมข้างต้นนี้จะคิดเป็นเงินเท่าไร :)
ดังนั้นถ้าต้องการรู้จริงๆ ว่า สิ่งเล็กๆ ที่เรียกว่า Bug หนึ่งตัวนั้นเราเองต้องใช้คน เวลาและเงินไปเท่าไรตั้งแต่ตอนที่ตรวจจับพบจนถึงทดสอบซ้ำทั้งระบเพื่อดูว่าการฆ่าสิ่งเล็กๆ ที่เรียกว่า Bug นั้นส่งผลกระทบกับระบบหรือไม่ หนูก็แนะนำให้ทุกๆ ผู้ ทุกๆ คน ทุกๆ บทบาทหน้าที่ภายในทีมทำงานและองค์กรที่ต้องลงมามีเอี่ยวเกี่ยวข้องนั้นต้องลงเวลาด้วยว่าใช้ไปเท่าไรและคิดเป็นเงินออกมาเป็นกี่บาท ถ้าต้องไปอัญเชิญพี่ๆ ระดับ AVP หรือ VP มาก็ต้องให้พี่ๆ เขาลงเวลาด้วยนะจ๊ะ ซึ่งหนูแนะนำให้เก็บทุกเม็ดเลยนะ เช่น หันหน้ามาคุยกันสามสี่คน 10 นาทีเพื่อหาวิธีหรือปรึกษาการฆ่าสิ่งเล็กๆ ที่เรียกว่า Bug ก็ให้ลงเวลาด้วยนะจ๊ะ
แล้วเราค่อยมาดูกันว่า การทำงานแบบเชิงป้องกันไม่ให้เกิด Bug ที่นำทุกๆ คนที่เกี่ยวข้องเข้าไปร่วมทำงานด้วยกันเป็นทีมตั้งแต่ต้นเลย แพงกว่า การทำงานแบบตั้งรับ Bug จริงๆ หรือเปล่า?
ในครั้งต่อไปจะมาพล่ามเรื่อง การทำงานแบบเชิงป้องกันไม่ให้เกิด Bug ที่นำทุกๆ คนที่เกี่ยวข้องเข้าไปร่วมทำงานด้วยกันเป็นทีมตั้งแต่ต้นเลย นะจ๊ะ เพื่อจะได้เห็นอีกหนึ่งกระบวนท่า
วันพุธที่ 23 กันยายน พ.ศ. 2558 เวลา 15:17น.
บางรัก กรุงเทพมหานคร