การจัดการงาน "ที่เกี่ยวข้อง" ภายในรายการงานที่คล่องตัวเพียงรายการเดียว


12

ฉันอยู่ในทีมโปรเจคที่มี 4 devs ฉันรวมอยู่ด้วย เราได้มีการพูดคุยกันอย่างยาวนานเกี่ยวกับวิธีจัดการกับงานพิเศษที่เกิดขึ้นในรายการงานชิ้นเดียว

งานพิเศษนี้มักจะเป็นสิ่งที่เกี่ยวข้องกับงานเล็กน้อย แต่ไม่จำเป็นเสมอไปที่จะบรรลุเป้าหมายของรายการ (อาจเป็นความเห็น) ตัวอย่างรวมถึง แต่ไม่ จำกัด เฉพาะ:

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

เมื่องานพิเศษนี้เล็กเราไม่รังเกียจ ปัญหาคือเมื่องานพิเศษนี้ทำให้ส่วนขยายของรายการเกินกว่าการประมาณจุดคุณลักษณะดั้งเดิม บางครั้งรายการ 5 คะแนนจะใช้เวลา 13 คะแนน ในกรณีหนึ่งเรามีรายการ 13 จุดที่ในการหวนกลับอาจมี 80 คะแนนหรือมากกว่า

ในการสนทนาของเรามีสองทางเลือกสำหรับวิธีจัดการกับปัญหานี้

  1. เราสามารถรับงานพิเศษในรายการงานเดียวกันและเขียนออกเป็นการประเมินที่ผิดพลาด อาร์กิวเมนต์สำหรับสิ่งนี้ได้รวม:

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

    • การมีตั๋วแยกต่างหากช่วยให้การประเมินใหม่ดังนั้นเราจึงไม่โกหกตัวเองเกี่ยวกับจำนวนของสิ่งที่เป็นจริงหรือต้องยอมรับว่าการประเมินทั้งหมดของเรานั้นแย่มาก
    • sprint "padding" มีไว้สำหรับความท้าทายทางเทคนิคที่ไม่คาดคิดซึ่งเป็นอุปสรรคโดยตรงต่อการทำตั๋วให้เสร็จสมบูรณ์ มันไม่ได้มีไว้สำหรับรายการด้านที่เป็นเพียง "นิสัยดี"
    • หากคุณต้องการกำหนดเวลาการเปลี่ยนโครงสร้างใหม่ให้วางไว้ที่ด้านบนสุดของ backlog
    • ไม่มีวิธีที่เราจะบัญชีสิ่งนี้อย่างถูกต้องในการประมาณค่าเนื่องจากดูเหมือนว่าจะเป็นเรื่องค่อนข้างง่ายเมื่อมันเกิดขึ้น ผู้ตรวจสอบรหัสอาจบอกว่า "การควบคุม UI เหล่านั้น (ซึ่งคุณไม่ได้แก้ไขในรายการงานนี้) นั้นสับสนเล็กน้อยคุณสามารถแก้ไขได้หรือไม่" ซึ่งเหมือนชั่วโมง แต่พวกเขาอาจพูดว่า "ถ้าการควบคุมนี้ตอนนี้สืบทอดมาจากคลาสฐานเดียวกันกับที่อื่นทำไมคุณไม่ย้ายโค้ด (หลายร้อยบรรทัด) ทั้งหมดนี้ไปยังฐานและรวบรวมสิ่งนี้ทั้งหมด การเปลี่ยนแปลงเรียงซ้อน ฯลฯ ? " และนั่นใช้เวลาหนึ่งสัปดาห์
    • มัน "ปนเปื้อนที่เกิดเหตุ" โดยการเพิ่มงานที่ไม่เกี่ยวข้องลงในตั๋วทำให้จุดคุณลักษณะดั้งเดิมของเราประเมินโดยไม่มีความหมาย
    • ในบางกรณีงานพิเศษเลื่อนการเช็คอินออกไปทำให้เกิดการบล็อกระหว่าง devs

พวกเราบางคนกำลังบอกว่าเราควรตัดสินใจว่าจะตัดอะไรบางอย่างออกไปเช่นถ้ามีสิ่งเพิ่มเติมน้อยกว่า 2 FP มันจะไปในตั๋วใบเดียวกันถ้ามากกว่านั้นให้ทำเป็นตั๋วใหม่

เนื่องจากเราใช้เวลาเพียงไม่กี่เดือนในการใช้ Agile ความคิดเห็นของทหารผ่านศึก Agile ที่มีประสบการณ์มากขึ้นรอบ ๆ ที่นี่เกี่ยวกับวิธีจัดการกับเรื่องนี้คืออะไร?

คำตอบ:


5

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

Agile ไม่ได้ทำดีหลังเพราะมันไม่ได้ตั้งใจเป็นคำตอบสำหรับปัญหาทางเทคนิคและปัญหาเหล่านี้ส่วนใหญ่

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

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

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


4

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

ตามนิยามนี้และตามมาแล้วตัวชี้ 5 ตัวที่กลายเป็นตัวชี้ 13 ตัวเป็นการประมาณค่าที่ผิด สิ่งที่คุณจะพิจารณาถึงการปรับโครงสร้างงานอาจเป็นเหมือนการปรับโครงสร้าง คุณต้องจัดระเบียบพื้นที่สำคัญของ codebase ใหม่เพื่อให้การทำงานใหม่ถูกรวมไว้ในวิธีที่เข้าใจและบำรุงรักษาได้ ซึ่งมักจะบ่งบอกถึงความล้มเหลวของทีมในการทำความเข้าใจเส้นทางการพัฒนาในอนาคตโดยทั่วไปนำไปสู่บางสิ่งที่ถูกนำมาใช้อย่างง่าย ๆ ในการทำซ้ำก่อนหน้านี้ การสื่อสารที่ดีขึ้นระหว่าง BAs และ PM ที่รู้ว่ามีอะไรเพิ่มเติมใน Backlog และทีมพัฒนาที่มุ่งเน้นไปที่การวิ่งปัจจุบันสามารถบรรเทาสิ่งนี้ได้ ผลัดกันเรื่องนี้มีหนี้สินทางเทคนิคจำนวนมากที่เกิดขึ้นในการพัฒนาที่ผ่านมา และมันก็ติดกับทีม ขั้นตอนการตรวจสอบโค้ดที่ดีขึ้นนอกเหนือจากความรู้เชิงแนวคิดที่ดีขึ้นของรูปแบบการออกแบบและเส้นทางในอนาคตโดยทั่วไปของโครงการสามารถช่วยลดเหตุการณ์ดังกล่าวได้

สิ่งหนึ่งที่ต้องจำไว้คือการเปลี่ยนโครงสร้างนั้นเป็นงานที่ "ไม่เหมาะ" ใน Agile SCRUM งานจะถูกประเมินใน "ชั่วโมงที่เหมาะ" นั่นคือจำนวนชั่วโมงที่ใช้ในการเขียนโค้ดใหม่ที่ไม่เคยมีมาก่อนและทำให้ฐานคุณลักษณะของโครงการดีขึ้น นักพัฒนา 8 ชั่วโมงต่อวันอาจแนบเนียนเพียง 5 ชั่วโมงเท่านั้น บางครั้งคุณสามารถวางใจใน 6 โดยเฉพาะอย่างยิ่งใน "ยืด" ของโครงการที่ทีมฮัมเพลงจริงๆ การปรับโครงสร้างใหม่หรือการย้อนกลับและการเปลี่ยนแปลงที่ไม่ส่งผลกระทบต่อการทำงานของโครงการ แต่การปรับปรุง codebase ด้วยวิธีอื่นนั้นไม่ใช่งานในอุดมคติเช่นการวางแผนการออกแบบการสื่อสารการตรวจทานการหยุดพักหรือการหยุดทำงานทางเทคนิค นอกเหนือจากการหยุดทำงานทางเทคนิคแล้วงานที่ไม่เหมาะเป็นสิ่งสำคัญ แต่ไม่ได้ทำให้เกิดความก้าวหน้าในสายตาของเจ้าของผลิตภัณฑ์

ดังนั้นหากการปรับโครงสร้างใหม่ไม่ได้เพิ่มจำนวนชั่วโมงจริงที่ใช้ไปสองเท่าจะต้องมีการปรับปรุงงานจำนวนหนึ่งเมื่อคุณประมาณการในเวลาที่เหมาะสม สมมติว่าเนื่องจากฉันไม่ทราบว่าการปรับเทียบคะแนนของทีมของคุณเป็นอย่างไรตัวชี้ 5 ตัวนั้นเทียบเท่ากับนักพัฒนาในอุดมคติหนึ่งสัปดาห์หรือประมาณ 25 ชั่วโมงในอุดมคติ 5 ซึ่งกลายเป็น 13 (มากกว่าสองนักพัฒนา - สัปดาห์ละระดับเดียวกัน) เป็นสาเหตุของการหวนกลับบางส่วนเกี่ยวกับสิ่งที่ทำให้เกิดความซับซ้อนกับบอลลูน บางที codebase ไม่จำเป็นต้องทำการรีแฟคเตอร์เท่าที่เคยทำจริง ๆ อาจเป็นหนี้ทางเทคนิคจำนวนมากที่ไม่รู้จักกับทีมที่ต้องแก้ไขเพื่อให้คุณสมบัติใหม่ทำงาน

ในจักรวาลสำรองลองจินตนาการว่า 5 ตามเวลาในอุดมคติกลายเป็น 7 (~ 35 ชั่วโมง) ตามเวลาจริงเพราะคุณต้องการการรีแฟคเตอร์เพิ่มเติม 10 ชั่วโมงเพื่อใส่รหัสใหม่และบิตก่อนหน้านี้ในรูปแบบที่เหมาะสม สถาปัตยกรรมการออกแบบ ในกรณีนั้นการเพิ่มพิเศษจะอยู่ภายใน "ช่องว่าง" ระหว่างชั่วโมงในอุดมคติและยอดรวมระหว่างจำนวนวันของนักพัฒนาซอฟต์แวร์ที่ควรใช้ ในฐานะผู้จัดการโครงการฉันจะเรียก 5 ที่กลายเป็น 7 ประมาณการที่สมเหตุสมผลและดำเนินการต่อ


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

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

1

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

  1. ทำลายเรื่องราวจนกระทั่งอยู่ในช่วงที่สอดคล้องกัน (3, 5 หรือ 8 คะแนน)
  2. สมมติว่าเรื่องนี้รวมถึงการปรับโครงสร้างใด ๆ ที่จำเป็น

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

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


0

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

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

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

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