Agile ทำงานอย่างไรเมื่อแทนที่ระบบการทำงาน


15

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

เมื่อไม่นานมานี้ฉันมีโครงการสองสามโครงการที่เกี่ยวข้องกับการแทนที่ระบบการทำงานบางประเภท โมเดลด้านบนไม่ทำงานเลย: จนกว่าคุณจะสร้างระบบที่รวมฟังก์ชันการทำงานทั้งหมดของระบบที่มีอยู่แล้วผู้ใช้ก็ไม่ได้สนใจอะไรเลย พวกเขาจะไม่ใช้มัน

คุณจะใช้งาน Agile ได้อย่างไรเมื่อ "ชุดย่อยที่มีประโยชน์น้อยที่สุด" คือ "ทั้งหมด"


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

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

คำตอบ:


14

วิธีการแก้ปัญหาแบบเปรียวอาจไม่สามารถแทนที่ทั้งหมดได้ในครั้งเดียว แต่เป็นการเปลี่ยนเฟสแบบค่อยเป็นค่อยไป

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


2
+1 ไม่เห็นคำตอบของคุณที่นี่ก่อนที่ฉันจะพูดในสิ่งเดียวกัน จิตใจที่ยอดเยี่ยมและทั้งหมด;)
Michael Brown

+1 สำหรับแสดงให้เห็นว่า Agile อาจไม่ใช่วิธีการที่เหมาะสำหรับการใช้งานจริงบางประเภท
อาหารเหลว

@pap ใช่แล้วagile (TM) นั้นถูก hyped อย่างหนักดังนั้นอาจมีอันตรายจากการสุ่มสี่สุ่มห้าโดยใช้วิธีการหนึ่งที่คงที่โดยไม่ต้องคิดถึงสถานการณ์ที่เฉพาะเจาะจงของคุณเอง
MarkJ

การรักษาบางส่วนของระบบเก่าทำงานหมายถึงการใช้ความพยายามในการพัฒนาเพื่อผสานรวมกับระบบเก่าใช่ไหม
Steve Bennett

1
@SteveBennett: ใช่มันเป็นเช่นนั้น แน่นอนว่าเป็นการแลกเปลี่ยน แต่ผลตอบแทนจะลดความเสี่ยงลงอย่างมากและคุณต้องทำซ้ำส่วนที่ต้องทำซ้ำเท่านั้น
sleske

6

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

สิ่งนี้ต้องการความแม่นยำและความพยายามมากกว่า "รีบูต" ของแอปเก่า แต่คุณจะได้รับ ROI สั้นลง นอกจากนี้เมื่อผ่านกระบวนการคุณสามารถใส่ hooks ไว้เพื่อเปิดใช้งานระบบ "ใหม่" เพื่อให้รัดคอได้ง่ายขึ้นโดยระบบ "ใหม่" ถัดไป


5

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

การต่อสู้สนับสนุนว่าหลังจากวิ่งแต่ละผลิตภัณฑ์นั้นคือ "ศักยภาพ Shippable" ไม่จำเป็นต้องมีการจัดส่ง แต่จะต้องมีคุณภาพของผลิตภัณฑ์ shippable

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

คุณอาจพบว่ามีการเพิ่มฟีเจอร์ใหม่ ๆ และฟีเจอร์เก่า ๆ จะถูกลดลงหากคุณรวมการตอบรับจากผู้ใช้


1
+1 นั่นคือวิธีที่เราเข้าหา แม้ว่าความคิดทั้งหมดของ 'เริ่มต้นใหม่' นั้นเป็นไปไม่ได้มาก คุณลองใช้วิธีการที่ยากมาแทนที่การแก้ปัญหาแบบเดิมทีละนิด?
Kris Van Bael

@KrisVanBael ที่ดีกว่าในทางทฤษฎี (และเป็นแบบอย่างที่ดี) แต่เป็นอีกคำถามหนึ่งที่ "มันขึ้นอยู่กับ" - คำตอบเก่า ๆ บางอันเก่าจริงๆ (ดังนั้นเรามองไปที่การเปลี่ยนแปลงของแพลตฟอร์ม) หรือกระบวนการเชื่อมต่อเข้าด้วยกัน และ "บิต" อาจมีขนาดค่อนข้างใหญ่
Murph

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

3

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

มีขั้นตอนการวางแผนประมาณ 6 เดือนก่อนที่การพัฒนาจะเริ่มขึ้น แต่ก็เข้าใกล้เป็น SCRUM เช่นกัน นี่คือที่เจ้าของผลิตภัณฑ์เขียนร้านค้าระดับสูงและบทกวีหลังจากการวิเคราะห์ระบบที่มีอยู่และสัมภาษณ์ลูกค้า

ระบบที่มีอยู่เดิมมีความเสถียรอย่างมากเมื่อเข้าสู่โหมดบำรุงรักษาที่สำคัญ แสดงเฉพาะปัญหาจุกได้รับการแก้ไขทุกอย่างเพียงเข้าสู่ระบบเพื่อวัตถุประสงค์ทางประวัติศาสตร์และเพื่อให้แน่ใจว่าปัญหาเดียวกันไม่ได้ปรากฏในระบบใหม่

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

เมื่อระบบใหม่ได้คุณสมบัติใหม่เกือบ 100% เสร็จสมบูรณ์ระบบจะเปิดตัวสำหรับการผลิตแบบขนานทั่วไปซึ่งใช้เวลาสองถึงสามเดือน

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


เย็น. สิ่งสำคัญในเรื่องนี้คือความพร้อมของพนักงานที่เต็มใจทำงานพร้อมกันทั้งสองระบบ
Steve Bennett

2

ฉันยังคิดว่าความคล่องตัวเพิ่มมูลค่าจำนวนมากในสถานการณ์นี้

เป็นเพียงว่าคุณมีเป้าหมายสุดท้ายที่กำหนดไว้อย่างมากคือ 'แทนที่ระบบปัจจุบัน'

เทคนิคและกระบวนการแบบเปรียวยังคงช่วยให้คุณมีประสิทธิภาพยิ่งขึ้น

ตัวอย่างเช่น

คุณยังสามารถส่งมอบในระบบซ้ำ ๆ และในการวิ่งขนาดเล็ก

คุณยังสามารถใช้เทคนิคที่คล่องตัวเพื่อจัดลำดับความสำคัญของงานหลังจากสื่อสารกับบุคคลสำคัญ

คุณยังสามารถใช้ความคล่องตัวในการวางแผนโดยยึดตามความเร็วที่สังเกตได้

คุณยังสามารถใช้เทคนิคและปรัชญาที่คล่องแคล่วเช่นการกระจายความรู้ TDD การเขียนโค้ดที่สะอาดเพื่อปรับปรุงคุณภาพและการออกแบบภายในของโครงการ

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


1

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

ทำให้พวกเขาเข้าใจว่าคุณไม่ต้องการทำอย่างนี้เพราะคุณคิดว่ามันจะสนุกและคุณจะเหงาด้วยกระบวนการน้ำตก มันจะสร้างแอพที่ดีขึ้นในระยะยาว

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


0

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

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

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

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

อาจเป็นลูกค้ารถยนต์ที่คุณต้องการดูและประเมินเครื่องยนต์เพื่อให้แน่ใจว่าคุณจะได้รับสิ่งที่คุณคาดหวัง อุ๊ปส์ฉันต้องการเครื่องยนต์ 6 สูบแทนเครื่องยนต์ 4 สูบ! ฉันไม่ได้บอกคุณก่อนหน้านี้เหรอ? ไม่มีปัญหาให้เปลี่ยนเป็นคำสั่งซื้อจากโรงงาน

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


ใช่ แต่ประสบการณ์ของฉันได้รับมาแล้วเพื่อติดตามอุปมาว่าลูกค้ารถไม่ทราบอะไรเกี่ยวกับเครื่องยนต์และไม่สามารถบอกอะไรที่เป็นประโยชน์จากการมองที่หนึ่ง เมื่อพวกเขาอยู่ในโหมดสมมุติความคิดเห็นนั้นค่อนข้างตื้น "โอ้ดูเหมือนว่าจะทำในสิ่งที่เราต้องการ" และคุณจะไม่ได้รับมากนักจนกระทั่งพวกเขาใช้มันเป็นครั้งแรกเพื่อแก้ปัญหาจริง
Steve Bennett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.