การจัดการความต้องการทำงานในระยะยาวกับโครงการ Agile อย่างไร


14

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

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

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

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

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

ปัญหานี้เกิดขึ้นเมื่อคุณพิจารณาเรื่องราวของผู้ใช้ที่ขยายขึ้นแทนที่หรือแม้แต่คัดค้านเรื่องราวก่อนหน้า

ตอนนี้ลองนึกภาพช่องว่าง 2 ปีระหว่างการทำซ้ำการพัฒนาในโครงการ (มีความเสถียรในการผลิต) ทีมเดิมหมดไปแล้วและเป็นความรู้ทั้งหมด

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

แน่นอนว่างานในมือจะให้ข้อมูลบางอย่าง แต่แทบจะไม่ได้อยู่ในรูปแบบที่เรียกดูได้ง่าย

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

จากประสบการณ์ของฉันสิ่งต่อไปนี้ใช้ไม่ได้:

  • กรูมมิ่ง Backlogเพื่อลบหรืออัปเดตเรื่องราวผู้ใช้ก่อนหน้าเพื่อให้สามารถอ่าน Backlog เป็นเอกสารข้อกำหนดได้
  • Documentation Sprintsที่สมาชิกในทีมได้รับมอบหมายด้วยการบันทึกสถานะปัจจุบันของระบบ
  • เอกสารผ่านการทดสอบพฤติกรรม วิธีนี้เป็นวิธีเดียวที่ฉันได้เห็นมาใกล้กับการทำงาน น่าเสียดายที่การทดสอบพฤติกรรมการใช้รหัสเป็นเหยื่อของปัญหาการตั้งชื่อ แม้ว่าการทดสอบอาจจัดทำเอกสารระบบอย่างถูกต้อง แต่ให้ทีมนักพัฒนาที่มีความผันผวนในการเขียนการทดสอบตามคำศัพท์โดเมนถ้อยคำและรูปแบบที่เหมือนกันนั้นแทบเป็นไปไม่ได้

ดังนั้นเพื่อย้ำ:

หนึ่งจะจัดการความต้องการโครงการเปรียวในระยะยาวได้อย่างไร


อะไรคือจุดประสงค์ของการรวบรวมข้อกำหนดที่นำไปใช้ หากคุณคิดว่ามันเป็นบั๊ก ทำไมคุณต้องการอ้างอิงข้อกำหนด มีข้อกำหนดอยู่ตราบใดที่มีรายการค้าง (Backlog) อยู่ สิ่งนี้ดูเหมือนจะขัดกับ "ซอฟต์แวร์ที่ทำงานได้มากกว่าเอกสารที่ครอบคลุม" ฉันไม่เข้าใจปัญหาของคุณกับการทดสอบบางทีนั่นอาจเป็นคำถามแยกต่างหาก
Dave Hillier

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

1
เปรียวไม่เกี่ยวกับโครงการแต่แทนที่จะพัฒนาผลิตภัณฑ์ โครงการระยะยาวไม่มีอยู่จริงใน Agile การพัฒนาแต่ละส่วนควรมีอยู่ในตัวเอง
Dave Hillier

1
โดยโครงการระยะยาวฉันหมายถึงโครงการ (หรือผลิตภัณฑ์ถ้าคุณจะ) ซึ่งจะมีการหมุนเวียนในทีมได้ 100% ลองนึกภาพผลิตภัณฑ์ที่สวยงาม X ที่ได้รับการพัฒนาตามแนวทางปฏิบัติที่ดีที่สุดของ Agile มันเข้าสู่การผลิตและทำงานได้อย่างไร้ที่ติมานานหลายปี แล้ววันหนึ่งมีคนต้องการพัฒนาผลิตภัณฑ์นั้นต่อไป น่าเสียดายที่ไม่มีคนเหลืออยู่จากโครงการเดิม สิ่งนี้ทำให้การเริ่มต้นขึ้นยากมาก นี่เป็นตัวอย่างของปัญหาที่ฉันคิดว่าเป็นเรื่องจริงและอยากทราบวิธีบรรเทา
MetaFight

1
"ทีมนักพัฒนาที่ผันผวน" ดูเหมือนว่าปัญหาจริงที่นี่ มันเลวร้ายแค่ไหนในกรณีของคุณ?
ร่าเริง

คำตอบ:


10

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

ลองมาดู Agile Manifesto สักครู่ ความต้องการเปรียว:

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

ฉันเน้นสี่ครั้งล่าสุด ทำไม? เพราะมันเป็นโครงการที่จะป้องกันไม่ให้โครงการยุบตัวภายใต้น้ำหนักของมันเอง

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

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

และเขาเป็นคนที่รักษาเอกสารข้อกำหนดหลัก

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

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


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

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


1
ช้างเป็นช้างแมมมอ ธ ? Lol :)
Dave Hillier

1
Bah คุณจะได้รับเรื่องตลกถ้าคุณยัง upvote :)
Robert Harvey

1
"ช้างเป็นโครงการช้างแมมมอ ธ ที่ต้องมีการวางแผนล่วงหน้าเอกสารจำนวนมหาศาลและระยะเวลายาวนาน": น่าสนใจ: บางครั้งที่ฉันรู้สึกว่าโครงการประเภทนี้ไม่ได้รับการพิจารณาอีกต่อไปเพราะพวกเขา ไม่พอดีกับมุมมองที่คล่องตัวของสิ่งต่าง ๆ
Giorgio

@ จอร์โจ: นั่นเป็นเหตุผลที่ฉันบอกว่าพวกเขาจะไม่ว่องไว ไม่ใช่ทุกโครงการซอฟต์แวร์ใหม่ที่ถูกสร้างขึ้นภายใต้ Agile และไม่ใช่ทุกคนที่จะเข้าร่วม Agile
Robert Harvey

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

3

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

สิ่งที่ใช้ได้ผลดีในประสบการณ์ของฉันคือการเชื่อมโยงข้อกำหนดทางธุรกิจและเรื่องราวของผู้ใช้ทั้งสองทิศทาง BR # 1 อาจรับรู้ได้จากเรื่องราว A และ B. เรื่องราว C อาจครอบคลุม BRs # 2 และ # 3 ใส่สิ่งนี้ไว้ในตัวติดตามโครงการสเปรดชีตสิ่งที่คุณใช้

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

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


2

จริงๆแล้วฉันทำงานในโครงการดูแลรักษา Kanban ของร้านค้าบนเว็บขนาดใหญ่ซึ่งผู้พัฒนาดั้งเดิมไม่สามารถใช้งานได้อีกต่อไป

userstory / requirements / bugfix ทุกตัวมี ticketnumber และทุก sourcecode-change ถูกลิงก์กับ ticketnumber ใน sourcecontrol-comment-field

sourcecontrol-checkin-s (svn) อัปเดตตั๋ว coressponding โดยอัตโนมัติเพื่อให้ในตั๋วฉันมีลิงก์ไปยัง sourceconrtol-changesets ทั้งหมด

ถ้ามอดุลาร์ / ฟังก์ชั่นถูกนำมาใช้ใหม่จะมีหมายเลขตั๋วในซอร์สโค้ดด้วย

ในระบบตั๋ว (redmine) ตั๋วมีการเชื่อมโยงระหว่างกันเป็น (ซ้ำกันคือข้อผิดพลาดคือการปรับแต่งของ, .... )

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

ตัวอย่าง: ฉันต้องเปลี่ยนบางสิ่งบางอย่างใน "orderConfirmation-Web-page" ในซอร์สโค้ดของหน้าฉันเห็นความคิดเห็น: 'สร้างขึ้นสำหรับ "# 4711"' ดังนั้นฉันจึงสามารถเชื่อมโยงตั๋วใหม่ของฉันกับตั๋วเก่า "4711" หรือหนึ่งในผู้สืบทอด


ใครจะเป็นผู้รับผิดชอบในการรักษาความสัมพันธ์ในระบบตั๋ว?
MetaFight

1

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

แม้ว่าจะไม่มีอะไรใหม่

หากคุณกำลังใช้ Agile รุ่นที่ปรับขนาดมากขึ้น (เช่นSAFe ) คุณจะมีแบ็คล็อกอื่น ๆ ที่ไม่ใช่ Backlog ของการใช้งาน โดยทั่วไปจะมีลักษณะเช่นนี้:

  1. Backlog ผลงาน (การวางแผนเชิงกลยุทธ์ของมหากาพย์และงบประมาณ)
  2. โปรแกรม / การปล่อยค้าง (คุณสมบัติและ Epics)
  3. Backlog โครงการ / ทีม (เรื่อง, Spikes, Bugs)

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

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

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