"ฉันอยากจะบอกคุณเกี่ยวกับAgileและScrum "
"ในตอนต้นของศตวรรษที่ 21 ความคิดของผู้คนเกี่ยวกับการเขียนโปรแกรมกลับหัวกลับหาง"
"ทุกคนต่างเชื่อมั่นว่าการวางแผนระยะยาวไม่ได้ผล ดังนั้นพวกเขาจึงตัดสินใจละทิ้งมันโดยสิ้นเชิง"
"พวกเขาทำอย่างนั้นได้อย่างไร"
"นี่คือวิธี"
"พวกเขาคิดค้นแนวทางการจัดการโครงการที่ยืดหยุ่นที่สุดเท่าที่จะเป็นไปได้"
นี่คือแนวคิดหลักที่อยู่เบื้องหลังการพัฒนาแบบอไจล์ :"
- คนและการสื่อสารสำคัญกว่ากระบวนการและเครื่องมือ
- ผลิตภัณฑ์ที่ใช้งานได้มีความสำคัญมากกว่าเอกสารที่ละเอียดถี่ถ้วน
- การร่วมมือกับลูกค้ามีความสำคัญมากกว่าการปฏิบัติตามเงื่อนไขของสัญญา
- ความเต็มใจที่จะเปลี่ยนแปลงมีความสำคัญมากกว่าการยึดติดกับแผนเดิม
นี่คือหลักการของการพัฒนาอย่างรวดเร็ว:
- สร้างความพึงพอใจให้กับลูกค้าด้วยการจัดหาซอฟต์แวร์ที่มีคุณค่าแต่เนิ่นๆและต่อเนื่อง
- ยินดีต้อนรับการเปลี่ยนแปลงข้อกำหนดแม้ในช่วงท้ายของการพัฒนา (สิ่งนี้สามารถเพิ่มความสามารถในการแข่งขันของผลิตภัณฑ์ขั้นสุดท้าย)
- ส่งมอบซอฟต์แวร์ที่ใช้งานได้บ่อยครั้ง (ทุกเดือนหรือทุกสัปดาห์หรือบ่อยกว่านั้น)
- ปิดการสื่อสารรายวันระหว่างลูกค้าและนักพัฒนาตลอดทั้งโครงการ
- โครงการนี้ดำเนินการโดยบุคคลที่มีแรงจูงใจซึ่งได้รับเงื่อนไขการทำงาน การสนับสนุน และความไว้วางใจที่จำเป็น
- วิธีที่ต้องการในการสื่อสารข้อมูลคือการสนทนาส่วนตัว (ตัวต่อตัว)
- ซอฟต์แวร์ที่ใช้งานได้เป็นตัววัดความก้าวหน้าที่ดีที่สุด
- ผู้สนับสนุน นักพัฒนา และผู้ใช้ควรจะสามารถรักษาความเร็วคงที่สำหรับช่วงเวลาที่ไม่มีกำหนด;
- มุ่งเน้นอย่างต่อเนื่องในการปรับปรุงความเป็นเลิศทางเทคนิคและการออกแบบที่เป็นมิตรกับผู้ใช้
- ความเรียบง่ายคือศิลปะของการไม่ทำงานที่ฟุ่มเฟือย
- ข้อกำหนดทางเทคนิค การออกแบบ และสถาปัตยกรรมที่ดีที่สุดมาจากทีมงานที่จัดการตนเอง
- การปรับตัวอย่างต่อเนื่องกับสถานการณ์ที่เปลี่ยนแปลง
"ปัญหาหลักของการพัฒนาซอฟต์แวร์คือไม่มีผู้เข้าอบรมคนใดมีข้อมูลครบถ้วนเกี่ยวกับสิ่งที่ต้องทำ"
"ลูกค้าสามารถบอกคุณได้ว่าเขาวาดภาพโปรแกรมอย่างไร แต่เขาจะละทิ้งบางสิ่งหรือปล่อยให้บางสิ่งผ่านไป"
"โดยทั่วไปแล้วผู้จัดการต้องแปลข้อกำหนดจากศัพท์แสงการเขียนโปรแกรมเป็นภาษาของลูกค้าแล้วย้อนกลับมาใหม่"
"มีความไม่แน่นอนมากเกินไป"
"บ่อยครั้งที่ความต้องการของลูกค้าเป็นแบบนี้ ทำในลักษณะบางอย่าง แล้วแสดงให้ฉันเห็น ถ้าฉันไม่ชอบ คุณก็ทำซ้ำได้"
“เอ่อ... แย่จัง”
"ตามกระบวนทัศน์ใหม่ โปรแกรมเมอร์ไม่ได้พัฒนาผลิตภัณฑ์หรือโปรแกรมอีกต่อไป แต่กำลังดำเนินการตามฟังก์ชันที่ลูกค้าต้องการ"
"อะไรคือความแตกต่าง?"
"ถ้าอย่างนั้น สมมติว่าการพัฒนาโปรแกรมใช้เวลาหนึ่งปี และหกเดือนก็ต้องผ่านไปก่อนที่จะมีอะไรให้ดู มันก็เหมือนกับการสร้างบ้านหลังใหญ่ ขั้นแรก คุณขุดหลุมสำหรับฐานราก จากนั้นเทฐานราก สร้างผนัง หลังคา ตกแต่ง ฯลฯ"
"แต่ตอนนี้โปรแกรมเมอร์พยายามที่จะปล่อยฟังก์ชันที่จำเป็นโดยเร็วที่สุด สิ่งนี้เหมือนกับการสร้างกระท่อมก่อน จากนั้นจึงสร้างบ้านเคลื่อนที่ จากนั้นเป็นบ้านหลังเล็ก และจากนั้นจึงค่อยเป็นบ้านหลังใหญ่ โดยผ่อนชำระ"
"เมื่อพิจารณาว่าลูกค้าอาจไม่ทราบแน่ชัดว่าเขาต้องการอะไร นี่จึงเป็นแนวทางที่สมเหตุสมผลมาก"
"สมมติว่าลูกค้าต้องการโรงล่าสัตว์ขนาดใหญ่"
"นักพัฒนาสร้างบ้านหลังเล็ก ๆ ให้เขา เขาอาศัยอยู่ในนั้นช่วงฤดูหนาว จากนั้นเขาตัดสินใจว่าเขาไม่ชอบบ้านไม้ มาทำบ้านที่ทำจากอิฐกันเถอะ"
"เขาอาศัยอยู่ใกล้ทะเลสาบช่วงฤดูร้อน แต่ยุงกินเขาทั้งเป็น เขาเคยได้ยินที่ไหนสักแห่งว่าทะเลสาบเย็น ดังนั้นเขาจึงอยากมี แต่ตอนนี้เขาไม่ต้องการทะเลสาบ และมันจะง่ายกว่าที่จะสร้าง บ้านด้วยวิธีนี้: ไม่มีทะเลสาบหมายความว่าไม่มีภัยคุกคามจากน้ำท่วม และคุณสามารถสร้างบ้านบนพื้นแทนการยกพื้นสูงได้ ซึ่งจะเร็วขึ้น 25%"
"การเปรียบเทียบที่น่าสนใจ ลูกค้าเปลี่ยนความต้องการบ่อยขนาดนั้นจริงหรือ"
“ใช่ แต่ปัญหาไม่ได้อยู่ที่ลูกค้า”
"อย่างแรก มันยากมากที่จะจินตนาการว่าสิ่งต่าง ๆ จะเป็นอย่างไรในอนาคต ผู้จัดการ ผู้ทดสอบ และโปรแกรมเมอร์ต่างก็ทำเช่นนี้เช่นกัน พวกเขายังเปลี่ยนใจขึ้นอยู่กับว่าสิ่งต่าง ๆ จะเป็นอย่างไร"
"ประการที่สอง ความต้องการของลูกค้าคือสิ่งที่สำคัญที่สุดไม่ใช่หรือ ท้ายที่สุดแล้วจุดประสงค์ของงานทั้งหมดนี้คือการสร้างสิ่งที่ลูกค้าต้องการไม่ใช่สิ่งที่เขาพูดในตอนแรกว่าสร้าง "
"อันที่จริง มันเคยทำงานในลักษณะนี้: นักวิเคราะห์ธุรกิจจะทำรายการข้อกำหนดทั้งหมด พวกเขาจะรวมรายการนี้ไว้ในสัญญา ลงนาม และทำงานตามรายการเท่านั้น"
"หากรายการขาดสิ่งที่ลูกค้าต้องการจริงๆแต่ลืมไป ก็จะไม่มีใครทำอะไรกับมัน"
"ฉันเข้าใจแล้ว มันง่ายกว่าที่จะทำตามแผน แต่ไม่ใช่ทุกอย่างจะทำตามแผนได้!"
"อย่างแน่นอน."
"นั่นเป็นเหตุผลที่คิดค้นวิธีการพัฒนาแบบ Agile"
"และวันนี้ฉันจะบอกคุณเกี่ยวกับScrumซึ่งเป็นที่นิยมที่สุดในหมู่พวกเขา
"คุณลักษณะหลักของ Scrum คือการแบ่งการพัฒนาโครงการออกเป็นการวนซ้ำเล็กๆ ซึ่งโดยปกติจะใช้เวลา 2-4 สัปดาห์ การวนซ้ำแต่ละครั้งเรียกว่า sprint"
"ในช่วงเริ่มต้นของการวิ่ง จะมีการประชุมวางแผนการวิ่ง ใช้เวลาประมาณ 3-4 ชั่วโมง"
"ในตอนท้ายมีการสาธิตงานที่เสร็จสมบูรณ์ทั้งหมด"
"นี่คือวิธีการทำงานของทุกอย่าง:"
"ก่อนการวิ่งครั้งแรก ลูกค้า (หรือตัวแทนของลูกค้า) สร้างรายการข้อกำหนด กล่าวคือ ชุดของสิ่งที่โปรแกรมควรจะทำได้ ข้อกำหนดเหล่านี้มักเรียกว่า เรื่องราวของผู้ใช้ และลูกค้ามักจะ เรียกว่าเจ้าของผลิตภัณฑ์ ”
"เขาถูกเรียกว่าเจ้าของผลิตภัณฑ์เพราะผลิตภัณฑ์เขียนขึ้นสำหรับเขา เขาและเขาคนเดียวเป็นผู้กำหนดรายการข้อกำหนด - อะไร เมื่อไหร่ และลำดับใด"
"นอกจากนี้ เจ้าของผลิตภัณฑ์มักจะกำหนดลำดับความสำคัญของงาน งานที่มีลำดับความสำคัญสูงสุดจะถูกนำไปใช้ก่อน รายการข้อกำหนดทั้งหมดเรียกอีกอย่างว่างานค้างของผลิตภัณฑ์ "
"เมื่อ Sprint เริ่มต้นขึ้น ทุกคนจะรวมตัวกันเพื่อประชุมหัวหน้าการต่อสู้ซึ่งมักจะเป็นสมาชิกของทีม มักจะเป็นผู้นำการประชุม เป้าหมายของการประชุมคือการเลือกงาน ( เรื่องราวของผู้ใช้ ) สำหรับ Sprint ปัจจุบัน (การวนซ้ำของการพัฒนา) "
"ขั้นแรก ทีมงานจะมอบหมายงานแต่ละงานโดยประมาณอย่างคร่าว ๆ ในวันทำงานเชิงนามธรรม หรือที่เรียกว่า สตอรี่พอยท์ จากนั้นทีมจะตัดสินใจว่าจะมีเวลาทำงานกี่งานให้เสร็จระหว่างการวิ่ง"
"อีกครั้งคือทีมเองที่ตัดสินใจว่าจะมีเวลาทำงานกี่งานให้เสร็จระหว่างการวิ่ง"
"สมมติว่าเจ้าของผลิตภัณฑ์ต้องการให้ทีมเลือก 7 งานแรก แต่เลือกเพียง 5 งาน จากนั้นงานที่ 6 และ 7 จะถูกเลื่อนไปยัง Sprint ถัดไป หากไม่เหมาะกับเจ้าของผลิตภัณฑ์ เขาสามารถเพิ่มลำดับความสำคัญของงานได้ 6 และ 7 เพื่อให้แน่ใจว่าได้รับเลือก แต่งานอื่นๆ บางงานจะออกจากการวิ่ง"
" ปรมาจารย์ด้านการต่อสู้ยังสามารถเสนอให้แบ่งงานบางส่วนออกเป็นส่วนย่อยๆ และกำหนดลำดับความสำคัญที่แตกต่างกันเพื่อให้เจ้าของผลิตภัณฑ์มีความสุขมากที่สุด"
"นั่นคือประเด็นของการประชุม: งานสามารถเปลี่ยนแปลงและแยกส่วนได้ ลำดับความสำคัญสามารถเปลี่ยนแปลงได้ ฯลฯ นี่คืองานที่มองไม่เห็นในตอนเริ่มต้น แต่นำมาซึ่งคุณค่ามากมาย"
"เข้าใจแล้ว มันก็เหมือนกับการขับรถ แม้ว่าในตอนแรกคุณเชื่อว่าคุณต้องตรงไป แต่ความจริงก็คือคุณต้องหลีกเลี่ยงหลุมบ่อ เลี้ยวซ้ายและขวา และแซงผู้อื่นหรือปล่อยให้พวกเขาผ่านคุณไป"
"ใช่ อะไรประมาณนั้น"
"รายการงานที่เลือกสำหรับสปรินต์เรียกว่าsprint backlog "
"โปรแกรมเมอร์ตัดสินใจว่าใครจะทำอะไร จากนั้นพวกเขาก็เริ่มทำงาน" เพื่อปรับปรุงประสิทธิภาพ Scrum แนะนำให้จัดการประชุม 5-15 นาทีทุกวัน ซึ่งทุกคนสามารถบอกกันและกันว่าเมื่อวานทำอะไรไปบ้างและกำลังทำอะไรอยู่ จะทำวันนี้"
"การทำงานเป็นทีม ผมนับถือเลย!"
"เพื่อให้เห็นภาพได้ง่ายขึ้น โดยปกติแล้วแนะนำให้แสดงสถานะการวิ่งปัจจุบันบนกระดานพิเศษ:"
"สังเกตสามคอลัมน์ทางด้านซ้าย"
"ชื่องานแบบย่อจะเขียนบนกระดาษโน้ต และกระดาษโน้ตจะอยู่ในคอลัมน์ต่างๆ ขึ้นอยู่กับสถานะของงาน (วางแผน กำลังดำเนินการ เสร็จแล้ว)"
"ทางด้านขวา คุณจะเห็นแผนภูมิการเบิร์นดาวน์ในแต่ละวัน แผนภูมินี้แสดงรายการงานที่ยังไม่เสร็จ ตามหลักการแล้ว จำนวนงานที่ไม่สมบูรณ์จะลดลงเหลือศูนย์ระหว่างการวิ่ง"
"เมื่อการวิ่งจบลงScrum-masterจะให้ตัวอย่างเพื่อแสดงรายการทุกอย่างที่ทำเสร็จแล้ว"
"จากนั้นเขาจัดการประชุมย้อนหลัง แบบ Sprint ซึ่งกินเวลาสองสามชั่วโมงเช่นกัน ในระหว่างการประชุมนี้ ผู้เข้าร่วมมักจะพยายามคิดว่าอะไรเป็นไปด้วยดี และอะไร (และอย่างไร) ที่จะทำให้ดีขึ้นได้"
"โดยปกติหลังจากวิ่ง 2-3 ครั้ง คุณสามารถระบุและขจัดปัญหาหลักที่ทำให้ทีมทำงานไม่มีประสิทธิภาพมากขึ้น ซึ่งนำไปสู่ประสิทธิภาพการทำงานที่มากขึ้นโดยไม่ต้องเพิ่มภาระงานของทีม สิ่งนี้ไม่สามารถทำได้ก่อนยุคของวิธีการแบบอไจ ล์ "
"บางครั้งการประชุมกรูมมิ่งก็จัดขึ้นในระหว่างการวิ่ง โดยมีจุดประสงค์เพื่อวางแผนการวิ่งครั้งต่อไป ผู้เข้าร่วมมักจะชี้แจงลำดับความสำคัญของงานในการประชุมนี้ พวกเขายังสามารถแบ่งงานบางส่วนออกเป็นส่วนๆ และ/หรือเพิ่มงานใหม่ไปยังงานในมือที่ค้างอยู่ "
"เอาล่ะ นั่นคือทั้งหมดที่ฉันมี นี่เป็นเพียงภาพรวม เป็นไปไม่ได้ที่จะอธิบายทั้งหมดด้วยคำเพียงไม่กี่คำ แต่คุณสามารถอ่านบทความดีๆ เกี่ยวกับเรื่องนี้ได้ที่นี่:"
GO TO FULL VERSION