สิ่งใดที่คุณมอบให้ในการแสดงซ้ำสองครั้งแรกใน Agile


22

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

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

สิ่งใดที่ส่งมอบให้กับลูกค้าในการทำซ้ำครั้งแรก คุณแสดงความคืบหน้าในทิศทางที่ถูกต้องอย่างไรเมื่อคุณสร้างรหัสนั่งร้าน


2
การสร้างกรอบหรือรากฐานทั้งหมดควรเป็นการตัดสินใจที่ล่าช้าในโครงการให้มากที่สุด
JeffO

@JeffO: คุณหมายถึงอะไรช้าที่สุด? คุณสามารถขยายออกเป็นคำตอบได้หรือไม่?
JohnDoDo

5
เป็นการดีที่ไม่ควรตัดสินใจเลย ไม่ควรสร้างเฟรมเวิร์ก แต่ควรปรากฏเป็นผลมาจากการปรับโครงสร้างใหม่ ไม่มีกรอบ "ดี" (สำหรับคำนิยามเชิงอัตนัยของตัวเอง "ดี") กรอบถูกออกแบบมาตั้งแต่เริ่มต้นพวกเขาถูกดึงออกมาหลังจากความจริงจากการใช้งานที่มีอยู่หรือขึ้นอยู่กับกรอบอื่น ๆ ที่
Jörg W Mittag

7
@JohnDoDo สร้างรากฐานแบบตรงไปตรงมาถือว่าคุณรู้ว่าความต้องการของแอปพลิเคชันของคุณจะเป็นอย่างไรก่อนที่มันจะมีอยู่จริง ทุกครั้งที่ฉันเห็นผู้คนทำเช่นนี้พวกเขาจะทำบางสิ่งที่แข็งทื่อและยากที่จะทำงานด้วย บ่อยครั้งที่ผู้ใช้งานของ "กรอบงาน" ยุติการต่อสู้มากกว่าการยอมรับ
Stefan Billiet

คำตอบ:


15

เป็นเรื่องปกติที่จะมีการวิ่ง 2 สัปดาห์

สำหรับฉันการวิ่งครั้งแรกหรือ 2 ครั้งแรกจะมีคุณสมบัติ "มองเห็น" ได้น้อยกว่าการวิ่งในภายหลังด้วยเหตุผลที่แน่นอนนี้

อย่างที่บอกไปแล้วว่าไม่ควรใช้เวลา 2 สัปดาห์ในการสร้างโครงทั้งหมดของคุณและไม่มีอะไรใน UI ที่มองเห็นได้

บางทีคุณอาจไม่ได้ทำรายการนั่งร้านทุกรายการในการวิ่งครั้งแรกหรือ 2 บางทีชิ้นส่วนสามารถรอและเพิ่มในภายหลังได้

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


6
+1 สำหรับย่อหน้าสุดท้าย - เป็นความคิดที่ดีที่จะเริ่มต้นการพัฒนาโดยมีต้นแบบสำหรับการตรวจสอบความถูกต้องของผู้ใช้
Konamiman

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

4
+1 แต่ให้จำไว้เสมอว่าภูเขาน้ำแข็งเป็นความลับเสมอเมื่อแสดงส่วน UI ให้กับลูกค้าของคุณjoelonsoftware.com/articles/fog0000000356.html
Doc Brown

1
@MatthewFlynn - การต่อสู้อาจไม่มีเฟส "ข้อกำหนด" ที่แท้จริง แต่นั่นไม่ได้หมายความว่ามีข้อกำหนด ZERO หรือเอกสารประกอบอยู่ ฉันไม่เคยมีส่วนเกี่ยวข้องกับโครงการที่ลูกค้าบอกว่า "เพียงแค่ไปข้างหน้าและเริ่มสร้างและเราจะคิดออกตลอดทาง" ฉันคิดว่ามีคำศัพท์สำหรับสิ่งนั้น โดยปกติควรมีขั้นตอนการคัดสรรบางอย่างของโครงการซึ่งรวมถึงการสนทนาและข้อตกลงบางอย่างเกี่ยวกับสิ่งที่จะจัดส่ง ฉันได้นำเสนอต้นแบบในช่วงการขาย
hanzolo

1
@hanzolo - โครงการที่ประสบความสำเร็จอย่างมากที่ฉันทำงานเมื่อไม่นานมานี้เกี่ยวข้องกับการใช้โซลูชันเพื่อจัดการกับข้อกำหนดทางกฎหมายใหม่ที่เป็นส่วนหนึ่งของพระราชบัญญัติการดูแลราคาไม่แพง ทราบความต้องการพื้นฐานว่าใช่ แต่ไม่มีอะไรในแบบของต้นแบบหรือการออกแบบที่จะแก้ไขปัญหานั้น ทีมงานโครงการ (ซึ่งรวมถึงนักวิเคราะห์ธุรกิจ) คิดออกภายในบริบทของการวิ่ง อย่างดีที่สุดผู้บริหารระดับสูงจะได้พูดคุยกับผู้คนในธุรกิจเกี่ยวกับเรื่องราวที่จะเกิดขึ้นก่อนหน้าหรือสองทีมก่อนหน้านี้ แต่นั่นคือทั้งหมดที่เราต้องทำงานร่วมกัน มันทำงานได้ดี
Matthew Flynn

13

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

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

ดังนั้นแนวทางที่แนะนำคือการสร้างเฉพาะสิ่งที่จำเป็นจริงตอนนี้และส่งมอบตอนนี้

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

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


8

สิ่งใดที่ส่งมอบให้กับลูกค้าในการทำซ้ำครั้งแรก

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

นอกจากนี้ยังมีคำถาม

คุณอาจสร้างกรอบหรือรากฐาน

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


3

สิ่งที่เราพยายามทำคือส่งมอบในการทำซ้ำครั้งแรกในแอปพลิเคชั่นที่ง่ายที่สุดเท่าที่จะเป็นไปได้ เราเห็นประโยชน์ที่สำคัญ 3 ประการในเรื่องนี้:

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

"ตั้งค่ากระบวนการจัดส่ง" ยากกว่าที่ผู้คนคิด
Frank Shearar

ใช่แล้ว. นั่นคือเหตุผลที่คุณควรทำสิ่งนี้ให้เร็วที่สุด
user99561

2

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

นี่เป็นสิ่งที่ผิดเนื่องจากคุณไม่จำเป็นต้องสร้างกรอบคุณอาจใช้ในอนาคต ความคิดคือการสร้างเฉพาะสิ่งที่จำเป็น (ดูYAGNI ด้วย )

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

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

สิ่งใดที่ส่งมอบให้กับลูกค้าในการทำซ้ำครั้งแรก คุณแสดงความคืบหน้าในทิศทางที่ถูกต้องอย่างไรเมื่อคุณสร้างรหัสนั่งร้าน

หลังจากทำซ้ำศูนย์เห็นได้ชัดว่าคุณไม่มีอะไรจะส่ง ส่งมอบมาหลังจากการทำซ้ำหนึ่ง มันมีคุณสมบัติที่คุณตั้งไว้สำหรับการทำซ้ำ

หากคำถามของคุณคือ "วิธีการเลือกสิ่งที่จะเข้าสู่การทำซ้ำ X?" ให้ดูที่วิดีโอ videocasts เหล่านี้ (วิดีโอสำหรับการทำซ้ำ 0 A และส่วนหนึ่งของ B)


+1 สำหรับการเป็นศูนย์เดียวที่กล่าวถึงการทำซ้ำ
crad

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

@ user99561 Frameworks เป็นการตัดสินใจครั้งใหญ่และมักจะยากที่จะเปลี่ยนแปลง ตัวอย่างเช่นคุณควรรู้ว่าคุณจะใช้ gtest หรือ cppunit สำหรับการทดสอบหน่วยก่อนที่จะเริ่มเขียนโค้ด การเปลี่ยนในภายหลังจะเป็นความเจ็บปวดอย่างมากในตูดและเสียเวลามากมาย
BЈовић

@BЈовић: ใช่กรอบคือการตัดสินใจที่ยิ่งใหญ่นั่นคือเหตุผลที่คุณควรเลื่อนการตัดสินใจออก ไม่มีจุดตัดสินใจเกี่ยวกับกรอบงานหากคุณไม่รู้ว่าต้องพัฒนาอะไรและแอพพลิเคชั่นและสถาปัตยกรรมจะเป็นอย่างไร คุณควรตัดสินใจว่าจะใช้เฟรมเวิร์กใดในช่วงเวลาที่เป็นไปได้ล่าสุด มิฉะนั้นคุณจะเสี่ยงต่อการเปลี่ยนแปลงอย่างแน่นอน
user99561

@ user99561 หากคุณไม่ทราบว่าต้องพัฒนาอะไรคุณไม่สามารถเริ่มได้ :) ข้อกำหนดและเรื่องราวของผู้ใช้จะต้องถูกเขียนลงมิฉะนั้นการวนซ้ำ 1 จะไม่สามารถเริ่มต้นได้
BЈовић

2

คุณสามารถส่งทุกอย่างที่คุณต้องการ การสร้างแนวคิดโครงสร้างพื้นฐานนั้นผิด / ไม่คล่องตัว / ไม่ยั่งยืน

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

เหล่านี้จะเพียงพอที่จะเริ่มต้นการพัฒนา จากนั้นหากคุณต้องการ CI คุณสามารถเพิ่มเรื่องราว CI ได้หากคุณใช้ฟิสิคัลเซิร์ฟเวอร์แน่นอนเพิ่มเรื่องราวให้

แต่เริ่มส่งในวันที่ 1 และไม่หยุด!


1

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

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

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

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

หากคุณตกลงตามกำหนดเวลากับลูกค้าตราบใดที่คุณพบข้อตกลงดังกล่าวลูกค้าอาจไม่สนใจสิ่งที่คุณทำที่ 1 หรือที่ 2 คุณสามารถแสดงผลการทดสอบหน่วยให้พวกเขาเห็นได้เสมอ แต่ถ้าคุณบอกว่าเราจะมีบางอย่างให้คุณดูหลังจากวิ่ง 2 (หรือ 3) และคุณส่งมันจะทำให้มีความสำคัญมากขึ้น ลูกค้าคาดหวังว่าจะสมเหตุสมผลเท่าที่นักพัฒนาและทั้งสองทำงานเพื่อเป้าหมายเดียวกัน โครงการที่เสร็จสมบูรณ์ซึ่งตรงกับความต้องการของลูกค้าและทำงานได้ตามที่คาดหวัง ดังนั้นการกังวลว่าไม่มีอะไรให้ดูหลังจากการวิ่ง 1 เป็นจุดที่สงสัยเนื่องจากลูกค้าเพียงต้องการให้แน่ใจว่าหลังจากการวิ่ง 20 โครงการจะเสร็จสิ้น (-ish)

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