IT Solution » แนวคิดในการพัฒนาซอฟต์แวร์แบบ Agile

แนวคิดในการพัฒนาซอฟต์แวร์แบบ Agile

31 August 2018
91   0

แต่เดิมนั้น การพัฒนา Software มักจะเป็นขั้นตอนต่างๆ คือ 1.เก็บรวบรวม Requirements จากลูกค้า, ประเมินความเป็นไปได้ และ ประเมินทรัพยากรที่ต้องใช้ในโครงการ 2. วิเคราะห์และออกแบบ ส่วนต่างๆของ Software ผ่าน Diagram ต่างๆ 3. Implementation หรือจะเรียกว่า Coding ตามที่ได้ออกแบบไว้ และ 4. Verification ทดสอบและยืนยัน ว่าระบบทางานถูกต้องตาม Requirement หรือไม่ ซึ่งขั้นตอนที่กล่าวมานั้น มันเหมาะสมกับโครงการที่มี Requirement ชัดเจนแล้ว ก็สามารถทาตาม Document นั้นได้เลย แต่ถ้าโครงการที่ต้องเจอนั้นเกิดปัญหาเหล่านี้  เช่น การเปลี่ยนแปลง Requirement ตลอดเวลา , User ไม่รู้ว่าตัวเองต้องการอะไร,User อยากได้ระบบที่ใช้งานได้เร็วที่สุด (ยังไม่ครบฟังก์ชันก็ได้),ความสัมพันธ์ภายในทีมงานไม่ค่อยดี หรือไม่รู้ว่าคนอื่นภายในทีมกาลังทาอะไรกันอยู่แล้วละก็ ‘Agile’  คือนแนวคิดในการทำงานด้าน IT, Technology, Software Development ซึ่งเป็นทางเลือกอีกทางหนึ่ง ที่เข้ามาแทนที่แนวคิดเดิมอย่าง ‘Waterfall’และเหมาะสมกับการแก้ไขปัญหาดังกล่าวข้างต้นได้เป็นอย่างดี

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

อย่างไรก็ตาม การประยุกต์ใช้ Agile ต้องอาศัยมุมมอง และวิสัยทัศน์ใหม่ๆ ของผู้บริหาร เพราะเป็นแนวคิดที่เน้นให้เกิดงานแบบทีมเล็กๆ ที่แข็งแกร่ง อาจไม่เหมาะกับองค์กรใหญ่ที่มีทีม และแบ่งเป็นแผนกๆ ใหญ่ๆ ก็เป็นได้ ในเดือนกุมภาพันธ์ ปี 2001 เหล่าผู้รู้ที่มี ส่วนร่วมในการนำเสนอระเบียบวิธีการพัฒนาซอฟต์แวร์แบบใหม่เหล่านี้ได้มีโอกาสนัดพบปะกัน ณ รีสอร์ท แห่งหนึ่งในรัฐยูทาห์ เพื่อหารือถึงแนวทางร่วมกันในการนำเสนอสิ่งที่กลุ่มคนเหล่านี้ได้ค้นพบ ซึ่งได้ข้อสรุปว่าชื่อ “อไจล์”

ซึ่งแต่ก่อนนี้ การทำงานแบบ Waterfall จะเป็นการวางแผน กำหนดเป้าหมาย กระจายงาน ใน step ขั้นตอนเดียว ทำให้กว่าจะได้ผลลัพธ์สุดท้าย ใช้เวลานาน เกิดเป็นปัญหาใหญ่ตามมา 2 ประการสำคัญ ได้แก่

  1. ปัญหาเรื่องการวางแผนให้เป็นไปตามเวลา และงบประมาณ เนื่องจาก scope ของงานใหญ่ และมีการแบ่งทีมกันดูแล ทำให้ใช้เวลาในการรวบรวมงาน หรือ communicate กันระดับหนึ่ง ส่งผลให้กว่าจะสำเร็จดังเป้าหมาย
     
  2. ปัญหาเรื่องการเปลี่ยนแปลงทั้งภายใน และภายนอก ที่ส่งผลให้โปรเจคต้องถูกพับเก็บไป เนื่องจากเป็น scope ใหญ่ ที่วางแผนระยะยาว ทำให้เมื่อเกิดปัญหา ที่ผิดพลาดไปจากแผน ก็ไม่สามารถปรับตัว หรือเปลี่ยนแปลงอะไรได้มากนัก

แนวคิดหลักๆ ของ Agile มีดังนี้

  1. ทำงานเป็นทีม และมีการ Communicate กันในทีมอย่างต่อเนื่อง
  2. ผิดพลาดได้ และต้องแก้ให้ได้โดยเร็ว พร้อมเปลี่ยนแปลง และปรับตัวอยู่เสมอ
  3. ค่อยๆ พัฒนาไปทีละนิดๆ โดยมีการส่งมอบงาน และ Update กันอย่างต่อเนื่อง ไม่รอให้เกิดเป็นโปรเจคใหญ่ แล้วส่งทีเดียว
  4. ลดขั้นตอนที่ไม่จำเป็น ให้ความสำคัญกับ Value ให้มากที่สุด

ทั้งนี้ หน้าที่หลัก ของ Agile มีเพียง 4 ตำแหน่ง คือ

  1. Product Owner คือ เจ้าของโปรเจค ทำหน้าที่ในการประเมิน Value ของงาน และจัดลำดับความชัดเจนในงานให้ทีม
  2. Scrum Master คือ ผู้ทำหน้านี้จัดการให้งานเป็นไปตามเป้าหมายที่วางไว้
  3. Team Member คือ แต่ละคนที่รับผิดชอบ Task ต่างๆ เช่น Designer, Analyst, UX/UI เป็นต้น ซึ่งแต่ละคนที่ได้รับหน้าที่ หรือ Job นั้นๆ จะเป็นผู้เชี่ยวชาญด้านนั้นๆ โดยตรง ทำให้งานเกิดขึ้นได้อย่างรวดเร็ว
  4. User คือ ผู้ใช้งาน ที่อาจจะเป็นผู้ให้ Requirement ในขั้นต้นได้อีกด้วย

อไจล์จึงเป็นชื่อเรียกรวม ของระเบียบวิธีการพัฒนาซอฟแวร์หลายชนิด ซึ่งมีแนวทางร่วมกัน 4 ข้อ ดังนี้

1.เน้นที่การให้ความสำคัญกับ “คน” โดยเน้นที่การทำงานร่วมกัน และกระจายอำนาจในการตัดสินใจไปสู่หน้างานจริง

2.เน้นที่การสร้างซอฟต์แวร์ที่ใช้งานได้จริงมากกว่าการยึดถือเอกสารหรือรายงาน อย่างที่ปฏิบัติต่อๆกันมา

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


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

  1. เปลี่ยนจากทำงานให้ “เสร็จ” เป็นส่งมอบซอฟต์แวร์ที่มีคุณค่าและสร้างความพึงพอใจให้แก่ลูกค้า
  2. ซอฟต์แวร์ต้องก้าวไปพร้อมธุรกิจของลูกค้าซอฟต์แวร์จะต้องถูกออกแบบให้สามารถยอมรับความเปลี่ยนแปลง (Change) ได้เสมอ แม้จะเป็นช่วงท้ายของโครงการ
  3. ซอฟต์แวร์ที่ใช้งานได้จริงจะต้องถึงมือลูกค้าอย่างสม่ำเสมอ เพื่อรับรู้ถึงฟีดแบคจากลูกค้า
  4. คนจากทั้งฝั่งธุรกิจและนักพัฒนาจะต้องทำงานร่วมกันเป็นประจำทุกวันตลอดโครงการ
  5. เริ่มจากคัดเลือกคนที่เหมาะสมกับงาน และให้อำนาจในการตัดสินใจที่เหมาะสม
  6. ใช้การสื่อสารที่มีความกว้างที่สุดเท่าที่เป็นไปได้ กล่าวคือการสนทนาต่อหน้าย่อมดีกว่าการโทรศัพท์, การโทรศัพท์ย่อมดีกว่าการส่งอีเมล์ เป็นต้น
  7. วัดความก้าวหน้าของงานจากซอฟต์แวร์ที่ทำงานได้จริงไม่ใช่เอกสารหรือรายงาน
  8. การทำงานต้องยั่งยืน การโหมงานให้เสร็จตามกำหนดที่กระชั้นชิดจะส่งผลต่อคุณภาพของซอฟต์แวร์ในระยะยาว
  9. จะต้องใส่ใจในความสมบูรณ์ของการสร้างสรรค์ทุกขั้นตอนเพราะซอฟต์แวร์มีอายุการใช้งานที่ยาวนานมากกว่าที่คาดคิดไว้เสมอ เช่น ปัญหา Y2K เป็นต้น
  10. ซอฟต์แวร์ที่สร้างแล้วเป็นภาระในการดูแลรักษา เช่น ต้องการทดสอบอย่างสม่ำเสมอ ดังนั้นการไม่สร้างซอฟต์แวร์ส่วนที่ไม่เกิดมูลค่าจะเป็นการดีที่สุด ได้แก่ ไม่สร้างฟีเจอร์ที่ไม่ถูกใช้หรือใช้ไม่บ่อยนัก
  11. สถาปัตยกรรมซอฟต์แวร์ที่ดีที่สุดมาจากที่หน้างานจริงไม่ใช่หอคอยงาช้าง
  12. ทีมที่ดีจะต้องมองย้อนถึงสิ่งที่ตนเองได้ทำไปแล้วเป็นประจำ เพื่อนำมาปรับปรุงแก้ไขวิธีการทำงานอย่างต่อเนื่อง เพื่อให้ทีมมีประสิทธิภาพการทำงานดีขึ้น

 

 

อไจล์” ดีอย่างไร?

อไจล์ไม่ได้มีชื่อเสียงโด่งดังขึ้นมาทันทีหลังจากประกาศคำแถลงการณ์อไจล์ร่วมกัน หากแต่ใช้เวลาอีกหลายปีกว่า อไจล์ จะเริ่มมีชื่อเสียงขึ้นมา ส่วนหนึ่งคือ ความสำเร็จของบริษัทเทคโนโลยีเกิดใหม่ (Tech Startup) อย่าง Google หรือ Facebook เมื่อมีคำถามว่าพวกเขาทำงานกันอย่างไร คำตอบคือพวกเขาใช้ “อไจล์”

มีหลายบริษัททั้งใหญ่และเล็กต้องการให้ตนเองประสบความสำเร็จในแบบเดียวกันกับ Google หรือ Facebook ก็เริ่มนำอไจล์ไปปรับใช้ในองค์กรของตนเองเมื่อมีการทำงานศึกษาพบว่า ข้อดีของการนำอไจล์ไปใช้มี 4 ด้านคือ พนักงานมีขวัญและกำลังใจในการทำงานดี, เวลาในการพัฒนาซอฟต์แวร์ออกสู่ตลาด (Time To Market) สั้นลง, ผลิตภาพสูงขึ้น และข้อบกพร่องของซอฟต์แวร์ (Defect) ลดลง ซึ่งที่สุดแล้วหมายถึง ความก้าวหน้าทางธุรกิจ

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

หลังจากรู้ข้อดีแล้วต่อไปเรามาดูข้อจำกัดของ Agile กัน

ข้อจำกัดของการประยุกต์ใช้ Agile

  • การประยุกต์ใช้ในองค์กรใหญ่ค่อนข้างทำได้ยาก เพราะมีทีมและแผนกที่ค่อนข้างใหญ่ การให้ทุกคนยอมรับวัฒนธรรมนี้ค่อนข้างเป็นไปได้ยาก รวมถึงการแตกฝ่ายต่างๆ เพื่อมารวมเป็นทีมย่อยขนาดเล็กก็ทำได้ยาก
  • Agile เป็นแนวคิดที่ค่อนข้างซัพพอร์ตกับระบบแบบ Flat Organization เพราะฉะนั้นสำหรับบางบริษัทหรือบริษัทที่ผู้บริหารมีแนวคิดแบบ Pyramid Structure ก็จะประยุกต์ใช้ Agile ได้ยาก
  • Agile เป็นแนวคิดที่พัฒนามาจากบริษัท Software Development เลยเหมาะในการใช้พัฒนา Tech Product มากกว่า แต่ไม่ได้หมายความว่าจะประยุกต์ใช้กับงานแบบอื่นไม่ได้ (ที่บริษัทก็มีการประยุกต์ใช้กับทีมที่ทำงานด้าน Marketing เหมือนกัน) เพียงแต่ต้องใช้เวลาและต้องประยุกต์จากหลักการเดิมไปค่อนข้างเยอะ

วิธีการทำงานของ Scrum ก็จะประกอบไปด้วยสิ่งที่น่าสนใจดังนี้

  • Backlog : เป็น Task งานที่ต้องทำ ทั้ง requirement ของลูกค้าและทีม ซึ่ง Product Owner จะเป็นคนตัดสินใจนำ Task ต่างๆ เหล่านี้เข้าไปใน Sprint ตามลำดับความสำคัญ (ส่วนใหญ่แล้วก็จะพิจารณาด้วย Value ของ Task นั้นๆ เมื่อแลกกับ effort ที่ต้องใช้)
  • Sprint Phase : อย่างที่บอกว่า Agile นั้น เน้นการส่งงานให้เร็วและบ่อย ซึ่ง Period นั้นจะเรียกว่า Sprint โดยมีกำหนดประมาณ 2-4 สัปดาห์ โดยเป้าหมายของ Sprint คือการ Deliver บางสิ่งบางอย่างให้สำเร็จ (Task ที่ Product Owner ได้ประเมินว่าควรทำตั้งแต่ก่อนเริ่ม Sprint) ซึ่งเมื่อจบ Sprint ก็จะมีการ Review ผลงาน (Sprint Review) ให้กับคนอื่นๆ ที่เกี่ยวข้องอาจจะเป็นทีมเซลล์ Users หรือลูกค้า เพื่อให้รับทราบถึงความคืบหน้าของโปรเจ็คต์อยู่เรื่อยๆ
  • Daily Scrum Meeting : ในทุกๆ เช้าทีมจะมีการประชุมสั้นๆ 10-15 นาที เพื่อบอกว่าเมื่อวานทำอะไร วันนี้จะทำอะไร และมีปัญหาอะไรบ้าง เพื่อให้การทำงานในทุกๆ วันเป็นไปอย่างราบรื่น ,รู้ว่ากำลังเดินเข้าสู่เป้าหมายหรือยัง และมีการแก้ไขปัญหาอย่างต่อเนื่อง

 

more detail  : https://www.neonrain.com/agile-scrum-web-development/




หลักสูตรการตลาดออนไลน์คอร์สเรียนการตลาด
 Ebook ปัญหายอดฮิต ธุรกิจ SMEs
Ebook เปิดร้านอาหารอย่างไรไม่ให้เจ๊ง !!














Google+

View My Stats


Social Widgets powered by AB-WebLog.com.