The Gang
Get In Touch
Back to Blog

How to เลือกการทำงานแบบ Waterfall Agile Sprint ฉบับ Software House

How to เลือกการทำงานแบบ Waterfall Agile Sprint ฉบับ Software House

0.jpg

Waterfall, Agile และ Sprint คือแนวทางการทำงานในการพัฒนาซอฟต์แวร์ที่เหล่า Developer ต่างรู้จักและคุ้นเคยกันดี เพราะทั้งสามวิธีนี้คือรูปแบบการทำงานที่ช่วยเสริมความแข็งแกร่งให้ภายในทีมสามารถสื่อสารและทำงานร่วมกันได้อย่างมีประสิทธิภาพ 

ตอนนี้วิธีการพัฒนาซอฟต์แวร์ทั้งสามรูปแบบ ต่างเป็นที่ถกเถียงกันเป็นวงกว้างว่าวิธีไหนเหมาะสมให้หยิบมาใช้มากกว่ากัน? บ้างก็ว่า Waterfall บ้างก็ว่า Agile โดยเฉพาะในช่วงหลัง ๆ นี้ปฏิเสธไม่ได้เลยว่ากระแสการทำงานแบบ Agile กำลังได้รับความนิยมอย่างมาก หลาย ๆ บริษัทเริ่มมีการนำมาปรับใช้ แต่ก็ยังมีหลายบริษัทที่ยังยึดหลักการทำงานแบบดั้งเดิมของตัวเองอยู่เช่นกัน เพราะส่วนใหญ่แล้ววิธีการหลัก ๆ ในการเลือกแนวทางแบบ Waterfall, Agile และ Sprint มักจะขึ้นอยู่กับวัฒนธรรมขององค์กร แนวทางและนโยบายของผู้บริหาร รวมถึงความถนัดของพนักงานเป็นหลัก 

แต่ถ้าถามว่าระหว่างสามวิธีนี้จะเลือกใช้วิธีไหนดี? แบบไหนที่ดีกว่ากัน?  

1.jpg

The Gang Technology ในฐานะ Software House เลยอยากมาแบ่งปันประสบการณ์ในการปรับใช้แนวทาง Waterfall, Agile และ Sprint ให้เหมาะสมกับพนักงานและองค์กร เพื่อให้การทำงานมีประสิทธิภาพมากที่สุด ในแบบฉบับของเราเอง!  

แต่ก่อนอื่นเรามารู้จักรูปแบบการทำงานทั้งสามวิธีกันก่อนดีกว่า ว่าแต่ละรูปแบบแตกต่างกันอย่างไร เหมาะกับการทำงานด้านไหน พร้อมแล้วมาดูกันเลย 

2.jpg

แปลตรงตัวได้ว่าคือ ‘น้ำตก’ ซึ่งขั้นตอนการทำงานก็ตรงตัวคล้ายกับน้ำตกเช่นกัน เพราะเป็นการทำงานแบบ ‘ลำดับขั้น’ หรือการทำงานประเภท Top-down ที่เราคุ้นเคยกันดีนั่นเอง อธิบายให้เข้าใจง่าย ๆ ด้วยสถานการณ์จำลอง เช่น ได้รับโจทย์ > วิเคราะห์ > มอบหมายงาน > ทำเป็น Routine ไปเรื่อย ๆ > ส่งมอบงานในขั้นตอนสุดท้าย

แต่ถ้าอธิบายให้เห็นภาพแบบเข้าใจมากขึ้น กว้างมากขึ้นในฐานะการทำงานสำหรับ Developer แนวทางแบบ Waterfall จะมีลำดับขั้นหลัก ๆ ดังนี้

Requirement : รับ Requirement รายละเอียดต่าง ๆ ของโปรเจค
Analysis : รวบรวมความต้องการของโปรเจคให้ชัดเจน วิเคราะห์ปัญหา กำหนดวัตถุประสงค์ของโครงการ 
Design : ออกแบบวิธีการแก้ไขปัญหา ที่จะออกมาในรูปแบบของซอฟต์แวร์ ให้เกิดผลลัพธ์ตามที่ตั้งเอาไว้จาก Requirements 
Build : เป็นขั้นตอนของการสร้างซอฟต์แวร์ 
Deploy : ทดสอบการทำงานทั้งหมดของซอฟต์แวร์ เพื่อนตรวจสอบคุณภาพก่อนส่งมอบ 
Deliver : ส่งมอบซอฟต์แวร์ให้กับลูกค้าเมื่อชิ้นงานเสร็จสิ้น

3.jpg

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

4.jpg

เป็นวิธีการทำงานที่นิยมอย่างมากในปัจจุบัน เพราะขึ้นชื่อว่าช่วยให้ขั้นตอนการพัฒนาซอฟต์แวร์รวดเร็วยิ่งขึ้น แทนที่ขั้นตอนแบบเดิม ๆ ที่ถูกกำหนดไว้แบบตายตัว ผ่านขั้นตอนสี่ข้อ ได้แก่  การออกแบบ > การพัฒนา > การทดสอบ > การปรับปรุง 

หาก Waterfall คือการทำงานเป็นขั้น แบบ Top-down ที่มีความยืดหยุ่นน้อยหากต้องการแก้ไข การทำงาน แบบ Agile ก็คือการทำงานที่มีความยืดหยุ่นมากนั่นเอง เพราะเป็นการทำงานที่ในระหว่างการทำแต่ละโมดูลอาจจะมีการได้รับ Feedback ไปด้วยนั่นเอง เพื่อให้ได้ซอฟต์แวร์ที่ตรงใจมากที่สุด 

5.jpg

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

ในขั้นตอนที่ว่านี้เราจะเรียกว่า ‘Sprint’ นั่นเอง เท่ากับว่า Sprint เป็นหนึ่งในซับเซ็ตของ Agile นอกจากจะมีการวางแผนขั้นตอนไว้แล้ว อาจรวมไปถึงการแพลนด้านเวลาอีกด้วย เช่น ใน 1 Sprint ใช้เวลา 10 สัปดาห์ = 1 โมดูล จะใช้เวลาพัฒนา ทดลองใช้และเสร็จสิ้นภายใน 10 สัปดาห์ ทั้งนี้ในแต่ละ Sprint สามารถใช้เวลาแตกต่างกันออกไปได้ ตามแต่ละโปรเจค ตัวอย่างเช่น ใน 1 Sprint อาจแบ่งเป็น Sprint ละ 1 ถึง 2 สัปดาห์ก็ได้เช่นกัน  

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

6.jpg

วิธีการพัฒนาซอฟต์แวร์เหล่านี้เป็น ‘แนวทาง’ ที่ทุกคนสามารถนำไปปรับใช้ให้เหมาะสมกับ Flow การทำงานของทีมได้ ดังนั้นจึงไม่มีคำตอบที่เป็นการ ‘ฟันธง’ เสียทีเดียวว่าแบบไหนดีกว่ากัน ถ้าโปรเจคมี Requirement ที่ชัดเจน รู้ว่าต้องทำอะไร มีวัตถุประสงค์แบบไหน ลูกค้ารู้ว่าต้องการอะไรแบบ 100% โปรเจคแบบนี้เหมาะกับการทำงานแบบ Waterfall มากที่สุด แต่ถ้าโปรเจค ในช่วงต้น มี Requirement ที่ไม่ชัดเจนมากนัก การทำงานแบบ Agile ก็จะเหมาะสม เนื่องจากลูกค้าสามารถ Feedback ได้ในทุก ๆ โมดูล 

แต่ทำสำหรับการทำงานสไตล์ Software House ฉบับ The Gang Technology เราได้นำทั้งสองวิธีมา Mix เข้าหากัน เพื่อปรับใช้เป็นวิธีการที่เหมาะสมและมีประสิทธิภาพที่สุดสำหรับองค์กรของเรา เพื่อให้ลูกค้าได้ซอฟต์แวร์ที่ตอบโจทย์ และเพื่อให้ทีมมีการทำงานที่ชัดเจนควบคู่กันไป 

7.jpg

The Gang เป็น Software House ที่ไม่ใช่ ‘In House’ แต่เราคือ Outsource ด้านซอฟต์แวร์ ดังนั้นโปรเจคจากลูกค้าที่ได้รับจึงมาในรูปแบบที่มีการกำหนดงบประมาณชัดเจน แนวทางการทำงานเลยหนักไปที่ Waterfall มากกว่า แต่เป็นการ Waterfall ที่ Flexible มากด้วยเช่นกัน เพราะเราจะมีการกำหนด Sprint อย่างมีขอบเขตว่าจะทำอะไรบ้าง มีเงื่อนไขในการแก้ไขอย่างไร สำหรับลูกค้าบางท่านที่มีเวลาไม่มากนักในขั้นตอน Deployment อาจมีกระบวนการทำงานแบบ Waterfall รวดเดียวจบ แต่ในลูกค้าบางท่านที่ความต้องการยังไม่ชัดเจน 100% เราก็จะเลือกการทำงานแบบ Agile เพื่อรับ Feedback มาพัฒนาและปรับปรุงซอฟต์แวร์ให้ตรงความต้องการ 

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