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 ?