จากงาน 1st conference ที่กรุง Melbourne ประเทศ Australia
มีการสัมภาษณ์คุณ Tarcio Saraiva และ Adam Crough
ในหัวข้อ Crafting Quality Software
ซึ่งเป็นหัวข้อที่น่าสนใจอย่างมาก
จึงนำมาแปลตามความเข้าใจนิดหน่อย
มาเริ่มกันเลย
โดยคำถามต่าง ๆ ในการสัมภาษณ์จะเน้นในเรื่อง
- มุมมองเรื่องของคุณภาพในการพัฒนา software
- อธิบายประโยชน์ต่าง ๆ ทางธุรกิจ ที่มาจากการดูแลคุณภาพของ software
- เกี่ยวกับบทบาทในการทดสอบระบบงานของ Deliver team เกี่ยวกับการเพิ่มคุณภาพ
- การนำ Continuous Integration มาใช้งาน เพื่อเพิ่มคุณภาพของ software
- การส่งมอบงานที่มีคุณภาพสูง
คำถามที่ 1 :: มุมมองเกี่ยวกับ Software Quality เป็นอย่างไร ?
มันคือเป้าหมายของทีม เพื่อทำให้ทีมพัฒนาเตรียมวิธีการสร้าง software ให้- มี bug น้อย ๆ
- มี function การทำงานที่ดีขึ้น
- สร้าง code ที่ง่ายต่อการทำความเข้าใจ
- จากภายใน เช่น developer
- จากภายนอก เช่น feedback จากผู้ใช้งาน
คำถามที่ 2 :: ทำไมองค์กรต่าง ๆ ต้องสนใจเรื่อง Quality ด้วยล่ะ ? มีประโยชน์อย่างไร ?
โดยปกติเรื่องของคุณภาพมันถูกจัดการ และ ควบคุม ในกิจกรรมต่าง ๆ และ การสร้างสิ่งต่าง ๆ อยู่แล้ว เพื่อสร้างคุณค่าให้กับฝ่าย business ดังนั้น ถ้ามีขั้นตอนการทำงานที่ดี และ เหมาะสมแล้ว การสร้างระบบงานที่มีคุณภาพ ช่วยทำให้ง่ายต่อการทำงานร่วมกับฝ่าย business พร้อมรับต่อการเปลี่ยนแปลง รวมทั้งทำให้ทีมสามารถปรับเปลี่ยนวิธีการ และ เทคโนโลยีได้ง่ายอีกด้วย ในแต่ละระบบงานต้องลงทุน และ จัดการเรื่อง Quality เสมอ ทั้งเรื่องของ- Return on Investment (ROI)
- Robustness
- Reliability
- ลดเวลาของ Time to market
- เพิ่มความพึงพอใจของลูกค้า
คำถามที่ 3 :: คิดอย่างไรเกี่ยวกับการจัดการ Quality ที่มีคำว่า Quality Assurance และ Quality Control ?
เชื่อว่า Quality นั้นมันต้องสามารถวัดผลได้เสมอ มันจึงนำไปสู่การจัดการนั่นเอง หนึ่งในการจัดการที่ดีก็คือ Continuous Integration (CI) จะช่วยบอกทีมว่า มีอะไรที่ทำงานผิดพลาดบ้าง ทำให้ทีมเห็นปัญหา และ ช่วยกันแก้ไขปัญหาซะ แน่นอนว่า มันส่งผลดีต่อทีม และ business นั่นคือ ส่งผลดีต่อองค์กรนั่นเองคำถามที่ 4 :: อธิบายเกี่ยวกับบทบาทของการทดสอบว่าเป็นอย่างไร ?
การทดสอบต้องเปลี่ยนจาก การให้ใครคนใดคนหนึ่ง หรือ ทีมใดทีมหนึ่งทำการทดสอบ ไปเป็น ทดสอบเลยสิ !! นั่นคือ ทุกคนช่วยกันทดสอบสิ ซึ่งเป็นผลมาจากแนวคิดที่ว่า จะทำอย่างไรให้คุณภาพของ software มันดีขึ้นนั่นเอง ตัวอย่างของแนวปฎิบัติจากแนวคิดนี้ เช่น- Test-Driven Development (TDD)
- Exploratory Testing
รวมทั้งหน้าที่ในการทดสอบระบบงาน ต้องเป็นหน้าที่หนึ่งของทุกคนในทีมพัฒนา และเป็นกิจกรรมที่ควรเกิดขึ้นอยู่ตลอดเวลาแต่ถ้าต้องการ feedback ต่าง ๆ จากผู้ใช้งาน จำเป็นจะต้องส่งมอบระบบที่มีคุณภาพดี ไปยังลูกค้าให้รวดเร็ว และ บ่อยที่สุดนั่นเอง
คำถามที่ 5 :: ยกตัวอย่างของการนำ Continuous Integration เพื่อจัดการเรื่อง Quality
โดยระบบงานที่พัฒนาทำการประยุกต์ Continuous Delivery มาใช้งาน และที่สำคัญคือ Zero Downtime อีกด้วย แต่จะทำไม่ได้เลย ถ้าไม่มี Continuous Integration มาช่วย เนื่องจากมาช่วยให้การพัฒนาระบบงานมีคุณภาพมากยิ่งขึ้น และช่วยทำให้ทีมสามารถนำเอาแนวคิด และ เทคโนโลยีอื่น ๆ มาใช้งานได้ง่ายขึ้น โดยในทุก ๆ การเปลี่ยนแปลงของ code ระบบ Continuous Integration จะทำการตรวจสอบการทำงานของระบบ เพื่อค้นหาว่าส่วนใดของระบบก่อให้เกิดปัญหา นั่นแสดงว่า เราสามารถรู้ปัญหาได้อย่างรวดเร็วนั่นเอง เป็นกระบวนการพัฒนาอย่างต่อเนื่อง ดังนั้นมันทำให้ทีมพัฒนามีความมั่นใจ ทีม business มีความมั่นใจต่อระบบ และ ทีมพัฒนา ผลดีย่อมส่งผลถึงองค์กรนั่นเองคำถามที่ 6 :: ถ้าต้องการส่งมอบ software ที่มีคุณภาพสูง จะต้องทำอย่างไรบ้าง ? มีคำแนะนำไหม ?
ในเรื่องของ Quality มันไม่ได้มีสูตรสำเร็จตายตัว อาจจะทำการสร้าง Qulity จากข้างใน คือ คน และ ทีมพัฒนา และให้สนใจ feedback ที่มาจากข้างนอก เช่น จากผู้ใช้งาน รวมทั้งให้ทีมพร้อมรับต่อการเปลี่ยนแปลง หรือสามารถแบ่งเรื่องของ Quality เป็น 2 ส่วนคือ ส่วนที่ 1 คือ จากภายนอก (External) ต้องเข้าใจว่าลูกค้าเป็นใคร ต้องฟังว่าลูกค้าต้องการอะไร และส่งมอบ product ที่มีคุณค่าไปยังลูกค้า ส่วนที่ 2 คือ จากภายใน (Internal) องค์กรต้องมีวัฒนธรรมที่ดี ทั้งเรื่องของการทดลอง และ ไม่กลัวการทำผิด แต่มันคือโอกาสสำหรับการเรียนรู้ ทั้งในระดับบุคคล และ ทีม รวมทั้งแต่ละคน แต่ละทีม ต้องรับฟังความคิดเห็นซึ่งกันและกัน และต้องทำงานร่วมกันเป็นอย่างดี สามารถอ่านแบบเต็ม ๆ ได้ที่ Crafting Quality Softwareคุณล่ะ คิดอย่างไรกับคำว่า Crafting Quality Software ?