Waterfall, Agile และ Sprint คือแนวทางการทำงานในการพัฒนาซอฟต์แวร์ที่เหล่า Developer ต่างรู้จักและคุ้นเคยกันดี เพราะทั้งสามวิธีนี้คือรูปแบบการทำงานที่ช่วยเสริมความแข็งแกร่งให้ภายในทีมสามารถสื่อสารและทำงานร่วมกันได้อย่างมีประสิทธิภาพ
ตอนนี้วิธีการพัฒนาซอฟต์แวร์ทั้งสามรูปแบบ ต่างเป็นที่ถกเถียงกันเป็นวงกว้างว่าวิธีไหนเหมาะสมให้หยิบมาใช้มากกว่ากัน? บ้างก็ว่า Waterfall บ้างก็ว่า Agile โดยเฉพาะในช่วงหลัง ๆ นี้ปฏิเสธไม่ได้เลยว่ากระแสการทำงานแบบ Agile กำลังได้รับความนิยมอย่างมาก หลาย ๆ บริษัทเริ่มมีการนำมาปรับใช้ แต่ก็ยังมีหลายบริษัทที่ยังยึดหลักการทำงานแบบดั้งเดิมของตัวเองอยู่เช่นกัน เพราะส่วนใหญ่แล้ววิธีการหลัก ๆ ในการเลือกแนวทางแบบ Waterfall, Agile และ Sprint มักจะขึ้นอยู่กับวัฒนธรรมขององค์กร แนวทางและนโยบายของผู้บริหาร รวมถึงความถนัดของพนักงานเป็นหลัก
แต่ถ้าถามว่าระหว่างสามวิธีนี้จะเลือกใช้วิธีไหนดี? แบบไหนที่ดีกว่ากัน?
The Gang Technology ในฐานะ Software House เลยอยากมาแบ่งปันประสบการณ์ในการปรับใช้แนวทาง Waterfall, Agile และ Sprint ให้เหมาะสมกับพนักงานและองค์กร เพื่อให้การทำงานมีประสิทธิภาพมากที่สุด ในแบบฉบับของเราเอง!
แต่ก่อนอื่นเรามารู้จักรูปแบบการทำงานทั้งสามวิธีกันก่อนดีกว่า ว่าแต่ละรูปแบบแตกต่างกันอย่างไร เหมาะกับการทำงานด้านไหน พร้อมแล้วมาดูกันเลย
แปลตรงตัวได้ว่าคือ ‘น้ำตก’ ซึ่งขั้นตอนการทำงานก็ตรงตัวคล้ายกับน้ำตกเช่นกัน เพราะเป็นการทำงานแบบ ‘ลำดับขั้น’ หรือการทำงานประเภท Top-down ที่เราคุ้นเคยกันดีนั่นเอง อธิบายให้เข้าใจง่าย ๆ ด้วยสถานการณ์จำลอง เช่น ได้รับโจทย์ > วิเคราะห์ > มอบหมายงาน > ทำเป็น Routine ไปเรื่อย ๆ > ส่งมอบงานในขั้นตอนสุดท้าย
แต่ถ้าอธิบายให้เห็นภาพแบบเข้าใจมากขึ้น กว้างมากขึ้นในฐานะการทำงานสำหรับ Developer แนวทางแบบ Waterfall จะมีลำดับขั้นหลัก ๆ ดังนี้
Requirement : รับ Requirement รายละเอียดต่าง ๆ ของโปรเจค
Analysis : รวบรวมความต้องการของโปรเจคให้ชัดเจน วิเคราะห์ปัญหา กำหนดวัตถุประสงค์ของโครงการ
Design : ออกแบบวิธีการแก้ไขปัญหา ที่จะออกมาในรูปแบบของซอฟต์แวร์ ให้เกิดผลลัพธ์ตามที่ตั้งเอาไว้จาก Requirements
Build : เป็นขั้นตอนของการสร้างซอฟต์แวร์
Deploy : ทดสอบการทำงานทั้งหมดของซอฟต์แวร์ เพื่อนตรวจสอบคุณภาพก่อนส่งมอบ
Deliver : ส่งมอบซอฟต์แวร์ให้กับลูกค้าเมื่อชิ้นงานเสร็จสิ้น
จะเห็นได้ว่าในการเลือกใช้ระบบการทำงานแบบ Waterfall เหมาะสำหรับโปรเจคที่มีวัตถุประสงค์ชัดเจน แต่ถ้ามีการปรับเปลี่ยนเกิดขึ้นระหว่างที่โปรเจคกำลังดำเนินการอยู่ในขั้น Design หรือ Build รายละเอียดทั้งหมดอาจต้องเปลี่ยนแปลงตามและกลับไปสู่ขั้นตอน Analysis อีกครั้ง ซึ่งจะกินเวลาในการทำงานที่นานพอสมควร
เป็นวิธีการทำงานที่นิยมอย่างมากในปัจจุบัน เพราะขึ้นชื่อว่าช่วยให้ขั้นตอนการพัฒนาซอฟต์แวร์รวดเร็วยิ่งขึ้น แทนที่ขั้นตอนแบบเดิม ๆ ที่ถูกกำหนดไว้แบบตายตัว ผ่านขั้นตอนสี่ข้อ ได้แก่ การออกแบบ > การพัฒนา > การทดสอบ > การปรับปรุง
หาก Waterfall คือการทำงานเป็นขั้น แบบ Top-down ที่มีความยืดหยุ่นน้อยหากต้องการแก้ไข การทำงาน แบบ Agile ก็คือการทำงานที่มีความยืดหยุ่นมากนั่นเอง เพราะเป็นการทำงานที่ในระหว่างการทำแต่ละโมดูลอาจจะมีการได้รับ Feedback ไปด้วยนั่นเอง เพื่อให้ได้ซอฟต์แวร์ที่ตรงใจมากที่สุด
เราจะยกตัวอย่างให้ทุกคนเห็นภาพกันได้ชัดขึ้น เช่น แทนที่จะรวบทำทั้งโปรเจคครั้งเดียวและส่งมอบชิ้นงาน การทำงานแบบ Agile อาจแบ่งย่อยเป็นการทำครั้งละโมดูล ใน 1 โมดูลจะมีขั้นตอนดังนี้ ออกแบบและพัฒนาโมดูล > ทดลองใช้ > รับ Feedback > ปรับปรุงหรือถ้าสำเร็จแล้วก็จะเริ่มทำโมดูลชิ้นต่อไป
ในขั้นตอนที่ว่านี้เราจะเรียกว่า ‘Sprint’ นั่นเอง เท่ากับว่า Sprint เป็นหนึ่งในซับเซ็ตของ Agile นอกจากจะมีการวางแผนขั้นตอนไว้แล้ว อาจรวมไปถึงการแพลนด้านเวลาอีกด้วย เช่น ใน 1 Sprint ใช้เวลา 10 สัปดาห์ = 1 โมดูล จะใช้เวลาพัฒนา ทดลองใช้และเสร็จสิ้นภายใน 10 สัปดาห์ ทั้งนี้ในแต่ละ Sprint สามารถใช้เวลาแตกต่างกันออกไปได้ ตามแต่ละโปรเจค ตัวอย่างเช่น ใน 1 Sprint อาจแบ่งเป็น Sprint ละ 1 ถึง 2 สัปดาห์ก็ได้เช่นกัน
ระบบการทำงานแบบ Agile จึงเหมาะกับโปรเจคที่มีขอบเขตและความต้องการของลูกค้าในระดับหนึ่ง ที่อาจจะไม่ชัดเจนมากนักในช่วงต้น และการทำงานในรูปแบบนี้ ลูกค้าจะสามารถมีส่วนร่วมในการ Feedback สำหรับทุก ๆ โมดูล เพื่อให้งานออกมาดีที่สุด
วิธีการพัฒนาซอฟต์แวร์เหล่านี้เป็น ‘แนวทาง’ ที่ทุกคนสามารถนำไปปรับใช้ให้เหมาะสมกับ Flow การทำงานของทีมได้ ดังนั้นจึงไม่มีคำตอบที่เป็นการ ‘ฟันธง’ เสียทีเดียวว่าแบบไหนดีกว่ากัน ถ้าโปรเจคมี Requirement ที่ชัดเจน รู้ว่าต้องทำอะไร มีวัตถุประสงค์แบบไหน ลูกค้ารู้ว่าต้องการอะไรแบบ 100% โปรเจคแบบนี้เหมาะกับการทำงานแบบ Waterfall มากที่สุด แต่ถ้าโปรเจค ในช่วงต้น มี Requirement ที่ไม่ชัดเจนมากนัก การทำงานแบบ Agile ก็จะเหมาะสม เนื่องจากลูกค้าสามารถ Feedback ได้ในทุก ๆ โมดูล
แต่ทำสำหรับการทำงานสไตล์ Software House ฉบับ The Gang Technology เราได้นำทั้งสองวิธีมา Mix เข้าหากัน เพื่อปรับใช้เป็นวิธีการที่เหมาะสมและมีประสิทธิภาพที่สุดสำหรับองค์กรของเรา เพื่อให้ลูกค้าได้ซอฟต์แวร์ที่ตอบโจทย์ และเพื่อให้ทีมมีการทำงานที่ชัดเจนควบคู่กันไป
The Gang เป็น Software House ที่ไม่ใช่ ‘In House’ แต่เราคือ Outsource ด้านซอฟต์แวร์ ดังนั้นโปรเจคจากลูกค้าที่ได้รับจึงมาในรูปแบบที่มีการกำหนดงบประมาณชัดเจน แนวทางการทำงานเลยหนักไปที่ Waterfall มากกว่า แต่เป็นการ Waterfall ที่ Flexible มากด้วยเช่นกัน เพราะเราจะมีการกำหนด Sprint อย่างมีขอบเขตว่าจะทำอะไรบ้าง มีเงื่อนไขในการแก้ไขอย่างไร สำหรับลูกค้าบางท่านที่มีเวลาไม่มากนักในขั้นตอน Deployment อาจมีกระบวนการทำงานแบบ Waterfall รวดเดียวจบ แต่ในลูกค้าบางท่านที่ความต้องการยังไม่ชัดเจน 100% เราก็จะเลือกการทำงานแบบ Agile เพื่อรับ Feedback มาพัฒนาและปรับปรุงซอฟต์แวร์ให้ตรงความต้องการ
ดังนั้นจะเห็นได้ว่าความต้องการของลูกค้า ก็ถือเป็นอีกหนึ่งปัจจัยหลักที่ The Gang นำมาออกแบบแนวทางการทำงาน เพื่อประยุกต์ใช้ Waterfall และ Agile ให้เหมาะสมกับการทำงานและความต้องการของลูกค้าให้มีประสิทธิภาพมากที่สุดนั่นเอง