Image may be NSFW.
Clik here to view.
Clik here to view.

- สิ่งที่เราสร้างทำงานได้อย่างถูกต้อง ?
- สิ่งที่คนอื่นสร้างทำงานได้อย่างถูกต้อง ?
- เมื่อ deploy ระบบงานแล้วยังทำงานได้ ?
- สิ่งที่พัฒนานั้นมันตรงกับความต้องการของลูกค้า ?
- ทำให้ business มันดีขึ้น ?
1. สิ่งที่เราสร้าง สามารถทำงานกับส่วนอื่น ๆ ได้อย่างถูกต้อง ?
คำตอบสำหรับผมคือ คุณทำการตรวจสอบ code ที่เขียนหรือไม่ ? นั่นคือการเขียน Unit test และ Integration test นั่นเอง มันทำให้คุณมั่นใจได้ว่า ส่วนเล็ก ๆ ที่คุณสร้างขึ้นมานั้น ยังสามารถทำงานได้ตามความคาดหวัง และยังทำงานกับ code ส่วนอื่น ๆ ได้อีกด้วย โดย feedback ในส่วนนี้จะได้รับ feedback ที่รวดเร็วมากถึงมากที่สุด อยู่ในระดับวินาทีกันไปเลย2. สิ่งที่แต่ละคนในทีมสร้างขึ้นมานั้น เมื่อนำมารวมกันยังทำงานได้อย่างถูกต้องหรือไม่ ?
คำตอบสำหรับผมคือ Continuous Integration (CI) ไงล่ะ ไม่ใช่ทำการ integrate ส่วนต่าง ๆ ในช่วงท้ายของการพัฒนา แต่เราจะทำการ integrate ส่วนต่าง ๆ กันอย่างบ่อย ๆ บ่อยเท่าใดล่ะ ก็ทุกครั้งที่เกิดการเปลี่ยนแปลงนั่นเอง เพื่อทำให้เรารู้ว่า เมื่อนำส่วนการทำงานต่าง ๆ มารวมกันแล้ว ระบบงานยังคงทำงานได้อย่างถูกต้อง ทำให้เราไม่ต้องเสียเวลาในการแก้ไขเป็นสัปดาห์ หรือ เป็นเดือน !! แสดงการทำงานดังรูป Image may be NSFW.Clik here to view.

3. เมื่อทำการ deploy ระบบยังทำงานได้อย่างถูกต้อง ?
สิ่งที่เราต้องการคือ ทำการ deploy และดูว่าระบบทำงานได้อย่างถูกต้องหรือไม่ เพื่อทำให้เรามั่นใจว่า ระบบมีคุณภาพเพียงพอที่จะ deploy ไปยัง production server ซึ่งในตอนนี้เรามี Unit test, Integrate test และระบบ Continuous Integration มันทำให้เรามั่นใจว่า ระบบทำงานได้ดีใน development environment แน่นอนว่า เราต้องทำการ deploy และ ทดสอบใน environment อื่น ๆ ด้วย เพื่อทำให้เรามั่นใจ ก่อนที่จะนำขึ้น production server จากรูป ทำอย่างไรเพื่อให้ได้ feedback ที่รวดเร็ว ? Image may be NSFW.Clik here to view.

4. สิ่งที่เราพัฒนาขึ้นมานั้นตรงกับความต้องการของลูกค้า และ ทำให้ธุรกิจดีขึ้น ?
เนื่องจาก feedback จากลูกค้า และ ผู้ใช้งานนั้น มักจะมีจำนวนที่เยอะมาก ๆ ดังนั้นสิ่งที่เราควรจะทำก็คือ รู้ให้รวดเร็วที่สุดเท่าที่จะทำได้ เพื่อทำการเรียนรู้จากความต้องการเหล่านั้น เพื่อทำให้สามารถปรับเปลี่ยนได้อย่างรวดเร็ว มิเช่นนั้น จะมีแต่งานเร่ง กับ งานด่วน และ งานด่วนมาก ๆ คำถาม เราจะได้รับ feedback ต่าง ๆ จากลูกค้า และ ผู้ใช้งานได้รวดเร็วอย่างไร ? คำตอบ คุณต้องทำการ deploy และ release บ่อย ๆ ไงล่ะ นั่นคือ คุณต้องเรียนรู้และนำแนวคิด Continuous Delivery (CD) และ Continuous Deployment (CD) มาใช้งาน โดยเราสามารถนำเอาแนวคิด CD และ Deployment pipeline มาใช้ ก็จะช่วยให้คุณได้รับ feedback กลับมาอย่างรวดเร็ว หรือช่วยตอบคำถามหรือข้อสงสัยของคุณได้เร็วยิ่งขึ้น รวมทั้งยังช่วยให้คุณสามารถปรังปรุง และ เปลี่ยนแปลง business model ได้ดีอีกด้วยสุดท้ายแล้ว มีสองสิ่งที่จะช่วยทำให้คุณได้รับ feedback อย่างรวดเร็ว
สิ่งแรกคือ ต้องทำบ่อย และเป็นประจำ แน่นอนว่ามันช่วยทำให้สิ่งที่ยากกลายเป็นสิ่งที่ง่ายไปเลย อะไรที่มันยาก ก็ทำบ่อย ๆ เท่านั้นเอง แสดงดังรูป Image may be NSFW.Clik here to view.

สิ่งที่ต้องถามตัวเราเอง คือ เรารู้ feedback ในเรื่องต่าง ๆ อย่างไร และรวดเร็วเพียงใด ?Reference Website https://blog.snap-ci.com/blog/2016/03/22/fail-fast/ https://www.thoughtworks.com/insights/blog/fail-fast-learn-fast http://martinfowler.com/bliki/FrequencyReducesDifficulty.html https://www.theguardian.com/info/developer-blog/2015/jan/05/delivering-continuous-delivery-continuously