![Screen Shot 2559-02-16 at 12.29.04 AM]()
![Screen Shot 2559-02-16 at 12.29.04 AM]()
จากงาน
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 ที่ง่ายต่อการทำความเข้าใจ
ซึ่งจะทำให้ให้ดีนั้น ต้องมาจาก 2 เส้นทาง คือ
- จากภายใน เช่น developer
- จากภายนอก เช่น feedback จากผู้ใช้งาน
เรื่องของคุณภาพ (Quality) นั้น
ใช้สำหรับการกำหนดบางสิ่งบางอย่างว่า มันดีหรือไม่ดีอย่างไร
โดยปกติแล้ว แต่ละคนจะต้องถือครองเรื่องคุณภาพเสมอนะ
นั่นแสดงว่า developer ต้องมองกลับไปดู code ที่สร้างขึ้นมา
ว่า code ที่สร้างขึ้นมามันดีหรือไม่
ทั้งทำงานได้อย่างถูกต้อง
ทั้งดูแลรักษาง่ายหรือไม่
และผู้ใช้งานชื่นชอบหรือไม่
คำถามที่ 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
การทดสอบมันคือเรื่องของความเชื่อมั่น และ มั่นใจ
โดยแนวปฎิบัติต่าง ๆ ช่วยทำให้เกิดความเชื่อมั่นมากขึ้น
และทำให้เราเดินไปข้างหน้าอย่างต่อเนื่อง
ไม่ใช่พายเรือในอ่างกันอีกต่อไป
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 ?