“ การปีนป่าย” คืออะไร?


42

ฉันเคยได้ยินการปีนป่ายที่กล่าวถึงในบริบทของ Agile หรือ Extreme Programming ดูเหมือนจะเป็นส่วนเสริมในการจับคู่

มันคืออะไรกันแน่? ควรใช้เมื่อใด คุณทำได้ดีแค่ไหน?


@CodeWorks: การค้นหาของฉันใน Google ให้ผลลัพธ์ที่เกี่ยวข้องน้อยและไม่มีคำตอบที่ชัดเจนสำหรับคำถามของฉัน หากมีคำตอบที่ยอมรับได้แล้วก็โพสต์ไว้ที่นี่
Jay Bazuzi


มีการพากย์เสียงในเกมวีดิโอกลยุทธ์ "Sword of the Stars" ซึ่งผู้คนมด / ตั๊กแตนตำข้าว / ไฮฟ์มินด์พูดเมื่อคุณออกคำสั่งการวิจัยว่า ฉันคิดเสมอว่ามีจุดประสงค์เพื่อลงจอดด้วยความรู้สึกประชดละคร
Erik Reppen

คำตอบ:


43

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

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

มีปัญหาบางอย่างที่นี่ ตัวอย่างเช่น QA ไม่สามารถทดสอบสิ่งต่าง ๆ ได้เสมอก่อนที่จะสร้างขึ้น (หรือแม้กระทั่งการออกแบบ) ในกรณีนี้คุณควรสร้างการออกแบบร่วมกันก่อนแล้วจึง QA สามารถเขียนการทดสอบ (เริ่มต้นล้มเหลว) กับการออกแบบและไม่ใช้งานจริง


+1 น่าสนใจ คุณเคยเห็นงานนี้ในทางปฏิบัติหรือไม่?
CodeART

2
อีกวิธีในการพูดว่า "มีงานระหว่างทำน้อยที่สุด" ใช่ไหม?
Jay Bazuzi

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

1
@JayBazuzi ใช่สวยมาก การได้รับการสนับสนุนจากทีมงานเป็นสิ่งสำคัญเช่นกัน
Oleksi

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

10

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

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

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

"การปีนป่าย" นั้นไม่ได้เป็นอะไรที่ยิ่งใหญ่ไปกว่าคำว่า "เฮ้ขอให้เราช่วยคุณได้"


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

@Jay Bazuzu: ไม่ว่าทุกคนจะทำงานเดี่ยวเป็นส่วนหนึ่งของการวางแผนการวิ่งหรือไม่ว่าจะเกิดขึ้นตามความต้องการที่เกิดขึ้นตามธรรมชาติความหมายยังคงเหมือนเดิม - ทุกคนทำงานร่วมกันในงานเดียว
ไบรอัน Oakley

ฉันคิดว่าคำตอบของคุณสำคัญมากที่นี่ คำตอบอื่น ๆ ที่ 'ยอมรับ' คือ "อะไร" แต่ดูเหมือนว่าคุณจะอยู่อย่างไร
Ape-inago

2

การปีนป่ายเป็นแนวคิดหลักของความว่องไว ไม่ใช่สิ่งที่ทำ "เมื่อมีปัญหา" การจับกลุ่มในรูปแบบที่ง่ายที่สุดหมายความว่าทีมทำงานร่วมกันในรายการ (เรื่องราว) และทำงานให้เสร็จ แนวคิดหลักคือ "ออกจากการเริ่มต้นและเริ่มต้นการตกแต่ง" กล่าวอีกนัยหนึ่งแทนที่จะเป็นนักพัฒนาซอฟต์แวร์ทุกคนที่ทำงานอย่างอิสระบนเนื้อเรื่องทีมมุ่งเน้นที่เรื่องราว / ภารกิจที่ จำกัด ยิ่งขึ้นด้วยกัน คิดว่ามันเป็นความแตกต่างระหว่างระบบเธรดเดี่ยวและมัลติเธรด หากเรื่องราวของผู้ใช้มี 10 ภารกิจที่ต้องทำและแต่ละคนมี 8 ชั่วโมงโดยสมมติว่าไม่มีปัญหาแทรกซ้อนนักพัฒนาคนหนึ่งสามารถทำงานแต่ละงานตามลำดับและทำให้เรื่องราวสมบูรณ์ใน 80 ชั่วโมงหรือประมาณสองสัปดาห์ (ให้ 10 วันวิ่ง ของ 8 dev ชั่วโมงต่อวัน) เกิดอะไรขึ้นถ้านักพัฒนาสองคนแยกงานและทำงานพร้อมกัน 80 ชั่วโมงการทำงานเดียวกันนี้สามารถทำได้ในหนึ่งสัปดาห์ เพิ่มที่สามและคุณสามารถดูได้ในขณะนี้มันอาจจะทำใน 3 ถึง 4 วัน

การปีนป่ายสามารถทำได้หลายวิธี:

  1. การเขียนโปรแกรมจับคู่ (นักพัฒนาสองคนนั่งเคียงข้างกันเพื่อทำงานกับโค้ดหนึ่งคือ "ไดรเวอร์" ที่เขียนโค้ดอีกอันคือเนวิเกเตอร์ทำให้ทิศทางในระยะยาวอยู่ในใจและช่วยในการตรวจสอบโค้ดพร้อมกัน
    1. จับคู่ทำงาน: นักพัฒนาและผู้ทดสอบทำงานพร้อมกันในงานเดียวกันการเข้ารหัสหนึ่งครั้งและการทดสอบอื่น ๆ การเขียนแบบอัตโนมัติเป็นต้น
    2. การปีนป่ายเหมือนที่ฉันได้กล่าวไปแล้วซึ่งเป็นเรื่องธรรมดามาก โดยปกติแล้วสมาชิกในทีมจะได้รับเรื่องราว แต่แต่ละคนก็มีงานแต่ละอย่างในวิธีนี้
    3. การเขียนโปรแกรม Mob: ทีมงานทั้งหมดมุ่งเน้นไปที่เรื่องเดียว (หรือแม้กระทั่งงาน) ในเวลา

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

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


1

บทความต่อไปนี้บน InfoQ อธิบายวิธีการหนึ่งในการปีนป่าย:

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

อ่านบทความสำหรับคำอธิบายโดยละเอียด

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