Continuous Delivery

Story by Tae Khunsong

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

ต่อมาเมื่อพูดถึงการสร้างและพัฒนา Application/Software เหล่านั้นให้เกิดขึ้นจริง เรานั้นมักมีความคิดในแง่ดีมากไปในการ Estimation ของโปรเจคนั้นๆ บางครั้งประเมินไว้มากกว่าเวลาจริง บางทีก็ประเมินซะงานไม่เหลือคุณภาพในการส่งมอบ ตัดเวลา Develop ลดเวลา Test เพื่อให้งานนั้นออกมาในแบบที่ Business หรือ Product ต้องการในความสมบูรณ์แบบมากเกินไป (ในแง่ของจำนวน Features หรือ Flow ที่ทาง Business นั้นต้องการ)

ในส่วนตัวผมนั้น ชอบจะแบ่งการ Release Application/Software ให้ออกเป็นส่วนๆและหลายๆ Version เพื่อเป็นการไม่เอา Cost ของเวลางานและเงินลงทุนไปเสี่ยง

ในการส่งมอบงานใหญ่น้อยครั้ง วิธีการลดความเสี่ยงและทำให้ Project เหล่านั้นมีคุณภาพคือ การทยอยส่งมอบงานออกไป ทีละน้อยชิ้นและทยอยส่งออกอย่างต่อเนื่อง ที่สำคัญการส่งมอบงานและออกแบบงั้นนั้นในช่วงแรกควรจะทำให้ใช้งานและง่ายต่อการเข้าถึง ถ้าเปิดมาใน Application/Software มี UI มากมาย รับรองว่าเป็นเหตุผลหนึ่งทำให้ User รู้สึกใช้งานยาก อีกประการหนึ่งควรจะ Tracking Events เผื่อนำมาประเมินว่า Menu/Features ไหนควรจะได้ไปต่อ เมนูไหนให้หยุดซะเดี๋ยวนั้น ซึ่งเป็นการประหยัด Cost ของเวลาเมื่อสร้าง Feature ออกมาแล้วมีคนใช้มันน้อยมากหรือแทบจะไม่มีเลย

Lean Development

ตัวอย่างเช่นหากคุณตั้งใจทำ product สักตัว วาแผนจะให้มี Feature สัก 20 features ดังนั้นคุณไม่จำเป็นต้องทำทั้ง 20 ตัวให้เสร็จ มันมีข้อเสียงที่ product ของคุณอาจจะไม่จำเป็นต้องใช้ทั้ง 20 features ก็ได้ แต่สิ่งที่เราต้องคำนึงถึงคือ การปล่อยตัว Lean software management ออกไปก่อน อาจจะใช้ 5–10 features ก็ได้ มองการใช้งาน End to end เป็นอันดับแรก จากนั้นสิ่งมี่ต้องทำคือ การเอา 10 features ที่ released ไปมาวิเคราะห์และพัฒนาต่อยอด ใน phase 2 อาจจะไม่ใช่การพัฒนาต่อ 10 features ที่เหลือแต่เป็นการนำบาง features ใน 10 features released มา improvement และ หา insight หรือ source บางอย่างมาพัฒนาบาง features ใน 10 features ที่ยังไม่ได้ทำ

Software Quality

ที่สำคัญไปกว่านั้น Continuous Improvement ช่วยให้ทีม Product, Developer และ QA มีความมั่นใจในการสร้าง Quality ของผลงาน ทีมที่ทำ Quality สามารถตัด effort ที่จะต้องเทสไปเยอะและจำกัดการเทสอยู่ในวงแคบ ทั้ง Unit Test, API Test, Functional Testing, Regression Test, และที่สำคัญการทำ Automation Testing Scripts สามารถ build ได้ง่ายและรวดเร็วกว่าการทำเต็มรูปแบบทั้ง 20 featuresและ ฝ่ายวิเคราะห์สามารถนำไปต่อยอดได้อย่างต่อเนื่อง

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

Leave a Reply

%d bloggers like this: