Software Tester คุณคือ จุดอ่อนด้อยง่อยเปลี้ยเสียขาข้างซ้าย!!!

you-are-weakest-link

เมื่อวานพล่ามไปเรื่อง Software Tester คุณคือ จุดอ่อนด้อยง่อยเปลี้ยเสียขาข้างขวา!!! ไปแล้ววันนี้เลยมาพล่ามเพื่อจะได้เสียขาซ้ายไปอีกข้างละกันนะจ๊ะ ตามที่พล่ามไปแล้วว่า Software Tester เรามารับตำแหน่งตรงนี้มิใช่ว่าเราหลงใหลได้ปลื้มและคลั่งไคล้ในเรื่องของ คุณภาพ อะไรนักหนาหรอกนะจ๊ะและพอชีวิตต้องตกไปอยู่ในกระบวนการพัฒนาแบบกีฬา วิ่งผลัด แบบ 4×100 ทุกๆ คนในทีมวิ่งผลัดมีระยะทางคนละ 100 เมตร ต้องวิ่งควบไปให้เร็วที่สุดเพื่อส่งไม้ต่อไปให้เพื่อนวิ่งควบไป ถ้าเพื่อนช้าฉันก็ช้าไปด้วย แต่เส้นชัยไม่ได้ขยับออกไปตาม ทำยังไงก็ได้ให้ขวบไปให้เร็วที่สุด และแล้วก็ ล้ม หรือไม่ก็เข้าที่สุดท้าย สุดท้าย เหนื่อยฉิบหาย พักได้ 2 นาที เสียงนกหวีดดัง เข้าที่ ระวัง ไป วิ่งผลัดกันอีกรอบ

วันนี้เลยมาพล่ามต่อว่า Software Tester ที่อ่อนด้อยง่อยเปลี้ยเสียขาข้างขวาไปแล้วเหลือแต่ขาข้างซ้ายต้องเข้าไปอยู่ในการพัฒนาซอฟต์แวร์ที่กำลังมาแรงแซงทางโค้งแล้วก็จพหลุดโค้งลงเหวที่เรียกขานว่า แอจไจล์ (Agile) และจะยิ่งเป็น จุดอ่อนด้อยง่อยเปลี้ยเสียขาข้างซ้าย ไปอีกข้างอย่างไร

แอจไจล์ (Agile) ในบริบทของหนู

ณ จุดๆ นี้ ขอกำหนดบริบทของแอจไจล์ของหนูตามรูปนี้นะจ๊ะ เพื่อจะได้ใช้ในการอธิบายว่า Software Tester ที่อ่อนด้อยง่อยเปลี้ยเสียขาข้างขวาไปแล้วนั้นจะง่อยเปลี้ยเสียขาข้างซ้ายไปอย่างไร

ทำงานเป็นทีมเดียวกัน

ทีมในบริบทผมมิใช่แค่เลือก Shopping คนมารวมๆ กัน แล้ว แปะป้ายว่า ทีม นะจ๊ะ ทีมในที่นี่คือทุกๆ คนที่เกี่ยวข้องกับการสร้างซอฟต์แวร์ โดย อย่างน้อยๆ ที่ต้องมีอยู่เลยคือ ลูกค้า ทีมพัฒนา ดังนั้น Software Tester เป็นหนึ่งในสมาชิกทีมพัฒนา ทุกๆ คนในทีมเคารพ ไว้เนื้อเชื่อใจและข่วยเหลือกัน ดังนั้นทุกๆ คนต้องอยู่ตั้งแต่วันที่หนึ่งวินาทีที่หนึ่งของการเริ่มสร้างสรรผลงานซอฟต์แวร์

คำถาม: Software Tester เรารู้สึกว่า เราเป็นส่วนหนึ่งของทีม และ ทีมเป็นส่วนหนึ่งของเรา หรือ ไม่?

ทำงานเป็นรอบการทำงานสั้นๆ

ทีมร่วมทำงานด้วยกันเป็นรอบการทำงานสั้นๆ โดยในรอบการทำงานนั้นมีกระบวนการพัฒนาซอฟต์แวร์หรือนามเรียกขานว่า Software Development Life Cycle (SDLC) อยู่ครับ ศัพท์แสงของคำว่า รอบการทำงานสั้นๆ ที่ใช้เรียกกันและใช้ผิดกันมากที่สุดด้วยคือ Sprint (Sprint ใช้ก็ต่อเมื่อคุณนำ Scrum มาใช้อย่างถูกต้อง เท่านั้น) เอ๊ะ อะ เรียก Sprint ทั้งนั้น ซึ่งขอให้ใช้คำว่า Iteration แทน หรือถ้าไม่ติดขัดอะไรและสมาชิกในทีมทำงานทั้งหมดเป็นคนไทยแนะนำให้ใช้คำว่า รอบการทำงาน แทนเลยจะดีกว่านะจ๊ะ โดยแต่ละรอบการทำงานนั้นให้กำหนดระยะเวลาในการทำงานที่เท่าๆ กัน ไม่เพิ่มหรือลดระยะเวลา โดยผมจะให้ลูกค้าและทีมพัฒนาตกลงกันว่า รอบการทำงาน จะมีระยะเวลาเท่าไร 5 วันทำการ หรือ 10 วันทำการ หรือ 15 วันทำการ หรือ 20 วันทำการ ยกตัวอย่างเช่น

traditional-agile

จากภาพด้านบน Software Tester ทั้งหลายลองคิดเล่นๆ รอบการทำงานของทีมที่เราเข้าไปร่วมงานด้วยคือ 10 วัน กระบวนการพัฒนาแบบเดิมก็จะไม่ทันอยู่แล้ว พอมาเปลี่ยนเป็นแอจไจล์แล้วนั้นมัน นรกชัดๆ ของ Software Tester อย่างฉัน!!!

ทุกๆ รอบการทำงานต้องมีของส่งมอบ

ของส่งมอบ เท่ากับ Feature หรือ  Function การทำงานที่พร้อมจะปล่อยของให้ผู้ใช้ใช้งานได้เลยทันทีถ้าลูกค้าบอกว่า ตรวจรับเอาขึ้น Production เลย นั่นหมายความว่าการทดสอบซอฟต์แวร์ทั้งส่วนของ Functional และ Non-Functional จะต้องถูกดำเนินการให้สำเร็จเสร็จสิ้น วงเล็บเปิด รวมทั้ง User Acceptance Test ด้วยนะจะ ปิดวงเล็บ

อ่านมาถึงตรงบรรทัดนี้ เหล่า Software Tester ทั้งหลายที่ชีวิตจะต้องเข้าไปโลดแล่นอยู่ในการพัฒนาซอฟต์แวร์แบบแอจไจล์ (Agile) นั้น พอจะมองเห็นภาพว่า เราจะเป็น จุดอ่อนด้อยง่อยเปลี้ยเสียขาข้างซ้าย!!! อย่างไรแล้วใช่ไหม 🙂

ทำงานแบบเดิม เหนื่อยใจจะขาดอยู่แล้ว

เปลี่ยนมาทำงานแบบ แอจไจล์ (Agile) ฉันได้เหนื่อยแทบขาดใจมันทุกๆ สิบวันเลย

ลาออกไปหาทำเลเปิดขาย กาแฟสด กันดีกว่าไหม?!?!?

แก้ไขความอ่อนด้อยง่อยเปลี้ยเสียขาข้างซ้าย!!!

ส่วนใหญ่ ใหญ่และใหญ่ พอนำการพัฒนาซอฟต์แวร์แบบแอจไจล์เข้าไปปรับใช้แล้วนั้น Software Tester ก็ยังคงทำงานเหมือนเดิมหรืออาจจะมากกว่าเดิม ทีมพัฒนาอื่นๆ ก็ยังทำงานเหมือนเดิม และแถมมาด้วยว่าเหนื่อยกว่าเดิม กดดันกว่าเดิม Bug เยอะกว่าเดิม ดังนั้น Software Tester จะต้องลุกขึ้นมาปฏิวัติตัวเองและเปลี่ยนแปลงตัวเองใหม่ด้วยโดยเริ่มต้นจาก

test-first

ปรับเปลี่ยนการทำงานแบบตั้งรับไปทำงานเชิงรุก โดย

  • ขั้นตอนของการเก็บรวบรวมความต้องการและสะกัดความต้องการเชิงธุรกิจออกมาเป็น ความต้องการของซอฟต์แวร์ (Software Requirement Specification) โดยเข้าไปช่วยคิดและออกแบบ Test Cases ระดับของ Acceptance Testing พร้อมข้อมูลในการทดสอบ ที่ตกลงกับลูกค้า เพื่อช่วยลดความเสี่ยงที่จะก่อให้เกิด Bug ขึ้นมาจากความเข้าใจผิดทั้งลูกค้า ทีมพัฒนา และตัวเราเอง รวมทั้งให้ได้ข้อตกลงในการทำงานและตรวจรับร่วมกัน
  • ขั้นตอนของการวางแผนโครงการเข้าไปร่วมให้ข้อมูลว่าในการทดสอบเราต้องทำอะไรบ้าง มีความเสี่ยงอะไรที่เห็นบ้างในมุมมองเรื่องคุณภาพ
  • ขั้นตอนของการวิเคราพห์ความต้องการของซอฟต์แวร์เพื่อนำไปสู่การออกแบบการพัฒนาซอฟต์แวร์ เข้าไปช่วยในการออกแบบ Test Cases ทั้งส่วนของ Functional และ Non-Functional เพื่อให้เห็นว่าหน้าตาของ Test Cases ในแต่ละระดับที่ถูกนำมาต่อยอดจาก Acceptance Testing พร้อมทั้งหน้าตาของข้อมูลและมองหาว่าจะสามารถนำ Automate Testing เข้าไปปรับใช้ได้อย่างไรให้ได้มากที่สุดในทั้งๆ ระดับชั้นของการทดสอบ ตั้งแต่ Accpetance Testing ลงมาที่ System Testing ลงมาที่ Integration Testing และ Unit Testing ในส่วนของ Functional และยาวไปถึงส่วนของ Non-Functional ซึ่งมันต้องใช้เครื่องทุนแรงในการทดสอบ Automate Testing เข้ามาอยู่แล้ว

หากเราเก๋าพอ เราจะช่วยคุมกำเนิด Bug ทั้งที่จะเกิดจาก ลูกค้าเอย เหล่า Analyst ทั้งหลายเอย เหล่า Programmer หรือ Developer เอย และตัวเราเองด้วย เพราะทุกคนได้เห็นภาพเดียวกัน ทุกคนได้ร่วมตรวจสอบ

ดังนั้นกระบวนการพัฒนาซอฟต์แวร์แบบแอจไจล์ก็จะออกมาหน้าตาประมาณนี้

change-to

Software Tester ช่วยเข้าไปช่วยเหลือดังนี้

  • จะป้องกันคุมกำเนิด Bug ได้อย่างไร
  • ช่วยเหลือทั้งลูกค้าและทีมพัฒนาได้อย่างไรในเรื่องของการดูแลควบคุมและทดสอบซอฟต์แวร์
  • สอนและพาลูกค้าและทีมพัฒนาดำเนินกระบวนการขั้นตอนการทดสอบได้อย่างไรในการทำงานแบบแอจไจล์

เอาแค่สามข้อตามด้านบนนี้ก่อนพอ เดี๋ยวจะธาตุไฟเข้าแทรก

คำถามจะกลับมาที่ตัว Software Tester เองว่า ณ ตอนนี้ตัวเองก็อ่อนด้อยง่อยเปลี้ยเสียขาข้างขวา!!! ไปแล้วหนึ่งข้าง ไม่ได้เรียนรู้ ไม่ได้ฝึกฝน ไม่ได้ถูกสอน ไม่ได้ถูกโค้ชและไม่ได้ถูกพาทำให้ดูเป็นตัวอย่างเลย แล้วต้องเข้าไปกระโดดโลดเต้นอยู่ในการพัฒนาซอฟต์แวร์แบบแอจไจล์ คิดว่า ขาซ้าย จะยังอยู่ไหม?

เท่าที่ได้พบเจอมาส่วนใหญ่ Software Tester จะ อ่อนด้อยง่อยเปลี้ยเสียขาข้างซ้าย!!! ไปอีกขา จนสุดท้ายไม่มีขาจะเดินไปไนมาไหน ชีวิตจมปรักอยู่กับอะไรก็ไม่รู้ที่เราไม่รู้จัก หน้าที่ฉันมาแค่ขึ้นช้างแล้วไล่จับตั๊กแตนต่อไปเรื่อยๆ

นอกจากปรับเปลี่ยนและปรับปรุงกระบวนการทำงานแล้วนั้นตัว Software Tester เองก็ต้องเรียนรู้เรื่องใหม่ๆ เพิ่มเติมหากคำว่า แอจไจล์ (Agile) เริ่มเข้ามาครอบงำในวงจรชีวิตดังนี้

  •  Agile for Software Development คืออะไร?
  • ทำอย่างไรถึงจะบอกได้ว่าฉันนำ Agile for Software Development มาใช้อย่างถูกต้อง
  • วิธีการ กระบวนท่า กรอบการทำงานและหลักปฏิบัติอะไรบ้างที่สามารถนำพาเราไปสู่ Agile for Software Development
  • การควบคุมคุณภาพและทดสอบซอฟต์แวร์ที่ถูกนำ Agile for Software Development เข้ามาปรับใช้

สี่เรื่องนี้คือเรื่องที่ Software Tester เองนั้นจะต้องศึกษาหาความรู้และสั่งสมประกบการณ์เพิ่มเติมทั้งในเวลางานและนอดเวลางานโดนจัดสรรเวลาให้เหมาะสมด้วย

ซึ่ง

เหล่าผู้จัดการ หัวหน้าทีม เจ้านาย คุณต้องเข้าใจด้วยว่า ทักษะและองค์ความรู้นั้นสำคัญยิ่ง ดังนั้นต้องให้ความสำคัญกับเรื่องของการเปิดกะบาลของเหล่าสมาชิกในทีมพัฒนาโดยเฉพาะอย่างยิ่ง Software Tester นะจ๊ะ

พล่ามมาจนถึงจุดนี้แล้วหวังว่าเหล่า Software Tester จะยังคงหลงเหลือขาข้างใดข้างหนึ่งอยู่บ้างและค่อยๆ ปรับเปลี่ยนตัวเองไปเพื่อให้ขาที่ขาดหายไปงอกกลับมาอีกครั้ง

เพราะ

ถ้ายังทำงานเหมือนเดิม ใช้องค์ความรู้เดิม ใช้ประสบการณ์เดิม อยู่ในองค์กรที่ไม่ได้ส่ง้สริมเรื่องการเรียนรู้ เจอหัวหน้าหรือผู้จัดการที่ไม่เคยรู้เลยว่าจะเสริมทักษะและองค์ความรู้ของเราได้อย่างไรก็แนะนำให้ ไปตายเอาดาบหน้า เพราะรักษาขาข้างซ้ายไว้นะจ๊ะ

วันศุกร์ที่ 6 พฤศจิกายน พ.ศ. 2558 เวลา 14:10น.
จตุจักร  กรุงเทพมหานคร

Leave a Reply

Your email address will not be published. Required fields are marked *