cup-939479_960_720

ด้วยความที่ช่วงที่ผ่านมาหลายเดือน ผมได้เข้าไปเสนอหน้าในวงการIT ค่อนข้างมาก และเป็นความโชคดีอย่างมาก ที่ผมไปเจอกับชนกลุ่มน้อยของชาวITที่เชื่อในลัทธิที่ผมชื่นชอบมาก ที่ชื่อว่า Agile (ตอนนี้ก็ฮิตฮอตขึ้นมามากพอสมควรแล้วล่ะ)

Agile นี้ แม้แต่วงการ IT บ้านเราก็ยังเป็นเรื่องใหม่ เข้ามาอยู่ในวงการได้ไม่กี่ปี ถึงแม้จะกูรูหลายคนเขียนอธิบายว่า “Agile คืออะไร” ไว้อยู่พอสมควร แต่ส่วนใหญ่คนที่เขียนก็จะเป็นคนในวงการ และเป็นการอธิบายในลักษณะที่โปรแกรมเมอร์จะได้อะไรจากการทำAgileซะมากกว่า ทำให้คนนอกวงการ อาจจะอ่านแล้วคิดว่ามันไม่เกี่ยวกับตัวเองเท่าไหร่ ทำให้คิดว่ามันไม่น่าสนใจ

ซึ่งผมคิดว่า แม้แต่คนนอกวงการIT ก็ควรจะรู้จัก Agile ไว้บ้าง เพราะเชื่อว่าในอนาคต เพื่อนๆพี่ๆน้องๆ คงจะมีโอกาสได้มาเกี่ยวข้องกับการทำ software ไม่ว่าจะเป็นการ จ้างเขาทำโปรแกรม นั่งเป็นคณะกรรมการในการทำโปรแกรม เปลี่ยนสายงานมาทำงานเกี่ยวกับโปรแกรม

ซึ่งการมีความรู้เรื่องนี้ไว้ประดับกะโหลก ย่อมทำให้เราได้เปรียบชาวบ้านแน่นอน

ในฐานะที่ผมเคยอ่านมาบ้างเล็กน้อย ไปขอความรู้จากผู้รู้มาบ้างเล็กน้อย ไปอบรมมาบ้างเล็กน้อย จึงจะขอเขียนเรื่องเกี่ยวกับ Agile ในแบบบ้านๆ สำหรับชาวบ้าน โดยชาวบ้าน

เพื่อที่จะให้เกิดความเข้าใจโดยทั่วๆกัน

เริ่มยังไงดีล่ะ…

อืมม.. ใครเคยเจอ

“โปรแกรมห่วย”… มั้ยครับ?

ผมเชื่อว่าหลายๆคน ที่ทำงาน office คงได้ใช้โปรแกรมอะไรสักอย่างในการทำงาน ซึ่งอาจจะเป็นโปรแกรมสำเร็จรูป หรือ โปรแกรมที่บริษัทของท่านๆ ได้พัฒนาขึ้นมาเพื่อใช้งานภายในบริษัทตัวเอง

เชื่อว่าหลายๆท่าน ที่ใช้โปรแกรมเหล่านั้น เกิดอารมณ์ขึ้นมาว่า ทำไมมันไม่มีปุมที่ทำแบบนี้วะ ทำไมต้องกดอันนี้ไปตรงนี้เพื่อจะเอาตรงนู้นแล้วมาใส่ตรงนี้ด้วยเนี่ย กดทีเดียวไม่ได้หรอ หรือทำไมโปรแกรมมันแฮงค์ โปรแกรมมันช้า โทรตามเจ้าของบริษัทมาแก้ ก็ไม่ค่อยมา และถึงจะมาแก้ให้ ก็ดูจะแก้อะไรไม่ได้เท่าไหร่ สุดท้ายมันก็คล้ายๆของเดิม

มีใครเคยสงสัยมั้ยครับ ว่ามันเกิดจากอะไร?

มาอธิบายกันดีกว่าครับ ว่าปัญหาพวกนี้ มันมีต้นตออย่างไร

เมื่อนานมาแล้วครับ(จนถึงปัจจุบัน) พวกโปรแกรมเมอร์ใช้วิธีการพัฒนา software ที่เรียกว่า Waterfall หรือแบบขั้นบันได โดยมีแบบแผนชัดเจน คือ วิจัยว่าลูกค้าต้องการอะไร/รับ requirement จากลูกค้ามา —> เขียนโปรแกรม ตาม requirement ที่ได้จากลูกค้า —> ส่งมอบโปรแกรมที่เขียนเสร็จแล้วทั้งหมดให้กับลูกค้า

ยกตัวอย่างดีกว่า เช่น บริษัทA ต้องการโปรแกรมทำบัญชีใหม่ จึงไปจ้างบริษัท software B มาทำโปรแกรมให้ บริษัทA ก็เขียน list มาว่า อยากจะให้โปรแกรมบัญชีใหม่นั้นทำอะไรได้บ้าง(ภาษาIT เค้าเรีย feature) 1 2 3 4 5..

บริษัท softwareฺ B ก็จะส่ง AE(Account executive) ซึ่งเป็นคนดูแลเรื่องสัญญา การเงิน มาตีราคาว่า โปรแกรมแบบนี้จะราคาเท่าไหร่

เมื่อตกลงราคากันเป็นที่เรียบร้อยแล้ว บริษัท software B ก็จะเอา requirement ดังกล่าว ไปส่งให้โปรแกรมเมอร์ทำ โปรแกรมเมอร์ก็นั่งทำตามจนเสร็จ ก็ส่งโปรแกรมบัญชีนี้ให้บริษัทA ไปใช้

คุณเห็นอะไรที่จะทำให้เกิดปัญหามั้ยครับ

1.โปรแกรมเมอร์ แทบไม่ได้เจอกับ คนใช้งานเลย

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

2.การคุยงานก็คุยผ่านคนกลาง คนที่ตีราคาว่าโปรแกรมนี้จะราคาเท่าไหร่ ไม่ได้เป็นคนที่ทำโปรแกรมเอง ซึ่งเหตุผลที่ต้องมีคนกลางของคุยงานเรื่องราคา ก็เพราะว่า ถ้าหากทำๆไปบริษัท A เกิดอยากได้ feature ใหม่ แต่ดันไปคุยกับโปรแกรมเมอร์โดยตรง ก็จะทำให้บริษัทBขาดรายได้ (เพราะถ้าคุยกับ AE ในการเพิ่ม requirement ทางบริษัทA ย่อมจะเสียเงินมากกว่า ไปคุยกับโปรแกรมเมอร์โดยตรงอยู่แล้ว)

3.เมื่องานจบ ส่งเสร็จ หากใช้งานแล้วไม่ถูกใจบริษัทA การจะแก้ใหม่ เป็นเรื่องที่ยา่กสำหรับโปรแกรมเมอร์ (สำหรับคนที่ไม่รู้เรื่องคอมเลย บางทีการแก้จุดเล็กๆจุดเดียวในโปรแกรม อาจจะต้องตามไล่แก้จุดอีกหลายจุดที่มันเชื่อมต่อกันอยู่ด้วย บางครั้งใช้เวลามากกว่าเขียนโปรแกรมใหม่ขึ้นมาซะอีก) การแก้ก็ต้องใช้เงินจำนวนมาก บริษัทAก็ไม่พอใจ และในที่สุดก็จะเกิดการกางสัญญา(requirement) ที่ทำไว้ตั้งแต่แรกว่าข้อตกลงเป็นอย่างไร เพื่อที่จะดูว่าใครผิดใครถูก

ซึ่งไม่ว่าใครจะผิดหรือถูก หลังจากนั้นสองบริษัทนี้ย่อมจะไม่อยากติดต่อซื้อขายกันอีกแล้วแน่นอน

ผมจะบอกว่า Agile แก้ไขปัญหาทั้งหมดนี้ ได้หมดเลย…

>>>>เอาล่ะ พักยก ดื่มน้ำปัสสาวะกันก่อน แล้วค่อยอ่านต่อครับ

 

หลังจากพอรู้ว่า โปรแกรมห่วยนั้นเกิดจากอะไรแล้ว ก็จะขอเข้าเรื่อง Agile ว่ามันคืออะไร และมันแก้ปัญหาโปรแกรมห่วยได้อย่างไรกันให้จบในตอนนี้

ที่จริงถ้าถามว่า Agile คืออะไร ผมคิดว่าหลายๆคนคงตอบไม่เหมือนกัน

และหลายๆคนก็คงบอกว่า มันไม่มีใครบอกได้หรอกว่าอะไรคือ Agile

มันดูจะเป็นแนวคิด หรือ ปรัชญา มากกว่า เทคโนโลยีอะไรสักอย่าง

คล้ายกับในคำนำคำแรกในคัมภีร์เต้าเต๋อจิง ที่เขียนโดนปรมาจารย์เต๋า เล่าจื้อ ที่ว่า

“เต๋าที่บอกเป็นคำพูดได้นั้น ไม่ใช่เต๋าแท้”

Agile แท้ ก็คงไม่สามารถจะบอกออกมาเป็นคำพูดไม่กี่คำได้เช่นกัน

แต่ถ้าให้ผมสกัดบางคำออกมาจาก Agile คำแรกก็คือ

“การให้คนใช้งานเป็นศูนย์กลาง”

ถ้าโปรแกรมเมอร์บางคนมาอ่าน แต่ไม่เคยรู้จัก Agile เลย แต่ปกติฉันก็ทำงานโดยเน้นให้เหมาะกับคนใช้มากอยู่แล้ว ฉันคุยกับคนใช้มากๆก่อนจะทำโปรแกรมสักอันขึ้นมาอยู่แล้ว

คุณก็ถือว่าเป็นคนที่กำลังใช้ Agile อยู่เช่นกัน (หรือคุณอยากจะเรียกมันว่าอะไรก็แล้วแต่ชอบ จะเรียกไอ้แดง ไอ้อ๊อด อะไรก็ตาม ถือว่าเรามี concept ร่วมกัน)

เรียนตามตรงว่า พอผมพยายามอธิบายว่า Agile คืออะไร ให้กับแม่ผู้ไม่มีความรู้เรื่องคอมเลย แม่ผมบอกว่า “นี่มันเรื่อง common sense นะ ชั้นก็คิดได้ ต้องตั้งชื่อวิธีอะไรด้วยหรอ”

Agile นั้น จะเน้นให้โปรแกรมเมอร์ เข้าใจ user มากๆ ทั้งก่อน , ขณะ และหลังทำโปรแกรม (จนกฏมณเฑียรบาลของ Agile ข้อนึง เขียนไว้ว่า ถ้าทำโปรแกรมมาแล้ว คนใช้ไม่พอใจทั้งหมด คุณก็ต้องเปลี่ยนให้เค้าใหม่ทั้งหมด)

เพราะปัญหาใหญ่ของการทำโปรแกรมนั้น คือ คนใช้ไม่สามารถจินตนาการออกหรอก ว่า โปรแกรมที่ยังไม่เกิดขึ้นมานั้น มันจะมีหน้าตาอย่างไร ใช้ยากง่ายแค่ไหน

แต่พอโปรแกรมเมอร์รับ requirement ไปแล้ว ทำจนเสร็จ ปรากฏว่า คนใช้ไม่ชอบ โปรแกรมเมอร์ก็ไม่อยากจะทำใหม่แล้ว เพราะมันต้องทำเยอะมาก

วิธีที่ง่ายที่สุด คือ ทำแบบคร่าวๆ เล็กๆ ให้คนใช้ได้ลองและวิจารณ์ก่อน ซึ่งถ้าทำเล็กๆแล้ว ต้องการแก้ โปรแกรมเมอร์ ก็ไม่ลำบากใจที่จะแก้

การทำงานแบบ Agile เราจึงต้องซอยงานออกมา เป็นชิ้นเล็กๆ และส่งให้ผู้ใช้หรือลูกค้าได้ลองบ่อยๆ (และก็เป็นที่มาของชื่อ Agile คือต้องส่งงานอย่างรวดเร็ว)

เพราะฉะนั้น เมื่อจบงาน ก็จะไม่เกิดปัญหา แก้ใหม่หมด (เพราะมันถูกแก้เล็กๆน้อยๆไปก่อนหน้านั้นหมดแล้ว) คนใช้ไม่ถูกใจ (เพราะมันถูกปรับให้ถูกใจก่อนหน้านั้นไปหมดแล้ว)

จบแล้วครับ Agile สำหรับชาวบ้าน …

555 จบเร็วมั้ยครับ

แต่แม้ว่าจะพูดดูง่าย แต่ในชีวิตแล้ว การทำมันไม่ได้ง่ายขนาดนั้น มันเต็มไปด้วย การลดทิฐิ ความเท่าเทียมกันของทุกคน การรับฟัง การทำงานหนัก ฯลฯ จึงมีไม่กี่ที่ที่จะสามารถ Agile ได้

ถ้าคุณเป็นคนนึงที่อ่านแล้วรู้สึกชอบวิธีนี้ นอกจากนั้นยังมีโอกาส ในการจะจ้างใครสักคนมาทำโปรแกรม ลองเสียเวลานิดๆ ถามเค้าดูว่า “คุณทำ Agile รึเปล่า?” เพื่อเป็นการกระตุ้นให้เขาใช้วิธีนี้ในการทำโปรแกรมดีๆให้กับคุณ

 

แอบ ไทอิน

หากสนใจอยากรู้เพิ่มเติมเกี่ยวกับ Agile (จริงๆผมเขียนมาเป็นแค่กระจึ๋งเดียวของ Agile เท่านั้นครับ) ขอแนะนำให้ซื้อตั๋วไปงาน Agile Tour BKK 2016  จัดวันที่ 28-29 ตค. นี้ มี guru ด้าน Agile จากทั่วโลกมาพูดเต็มไปหมดครับ (มี session Management 3.0 วันที่ 28 ตค ด้วยนะ)  หรือถ้าสงสัยอะไรเพิ่มเกี่ยวกับ Agile ก็ลอง inbox เข้ามาถามได้ครับ

14680651_1235740649821345_1593900064436531287_n.jpg