วิธีการออกแบบที่ดีเมื่อใช้วิธีการแบบเปรียว


15

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

ในทางกลับกันฉันมีสองปัญหาที่เปิดอยู่สิ่งแรกที่ฉันจะพยายามอธิบายในคำถามนี้

ปัญหา: ความยากในการรับการออกแบบที่ดี

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

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

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

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

แก้ไข - หมายเหตุ

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

ตัวอย่างเช่นฉันไม่สนใจ (มากเกินไป) เกี่ยวกับการออกแบบที่ดีถ้าฉันต้องใช้องค์ประกอบแบบง่ายที่ (1) จะต้องพร้อมให้เร็วที่สุด (2) จะใช้เพียงครั้งเดียว (3) ไม่ใช่ ใช้โดยส่วนอื่นของระบบ (YAGNI)

ฉันสนใจเกี่ยวกับการออกแบบที่ดีเมื่อมีการใช้ส่วนประกอบ (1) หลายครั้งและในรุ่นต่างๆที่ต่างกันของผลิตภัณฑ์ (2) ต้องได้รับการบำรุงรักษาและขยายเวลาเมื่อผ่านไป (3) มีส่วนประกอบอื่น ๆ มากมายขึ้นอยู่กับมัน .


5
The only well-designed module I could produce recently I obtained by taking a different approach- คุณตอบคำถามของคุณเอง คุณยังต้องมีการออกแบบล่วงหน้า คุณไม่สามารถคาดหวังการออกแบบที่ดีเพียงแค่เติบโตจากการปรับโครงสร้างซ้ำ มันไม่ทำงานอย่างนั้น
Robert Harvey

1
ไม่ได้เพราะอาจเป็นเพราะฉันใช้ SCRUM ไม่ถูกต้อง
Giorgio

3
ไม่มีสิ่งเช่น "SCRUM อย่างถูกต้อง" มีเพียงกระบวนการที่ก่อให้เกิดผลลัพธ์ที่ต้องการ
Robert Harvey

1
นั่นเป็นเหตุผลที่พวกเขาถูกเรียกว่า"แนวทาง" :) อย่างไรก็ตามกระทำทุกวันมีการวิ่งระยะสั้น (1 สัปดาห์ถึง 1 เดือน) กฎแบบนี้ไม่ได้พูดถึงการออกแบบเลย คุณยังต้องมีการออกแบบ
Robert Harvey

คำตอบ:


13

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

จากนั้นอย่าทำเช่นนั้น

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

ในกรณีทั่วไปมากขึ้นมี 3 สิ่งที่ฉันได้เห็นเพื่อการออกแบบที่ดีใน Agile:

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

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

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


3
+1 (+10 ถ้าฉันมีคะแนนมากกว่าหนึ่งคะแนน!) สำหรับ "การบังคับให้ใส่ในช่องนั้นจะทำให้เกิดปัญหา"
Giorgio

17

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

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


+1: ตกลง ดังนั้นฉันควรกำหนดเวลาของการเปลี่ยนโฉมใหม่เมื่อฉันคิดว่ามีความต้องการและไม่เพิ่มคุณสมบัติใหม่จนกว่าฉันจะได้รับการออกแบบที่ดีพออีกครั้ง นั่นอาจเป็นสิ่งที่เราขาดไปในกระบวนการของเรา (นอกเหนือจากข้อเท็จจริงที่ว่า IMO การเพิ่มขึ้นที่เรากำลังพัฒนามักจะน้อยเกินไป)
Giorgio

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

4
โครงการทั้งหมดที่ฉันเห็นว่าคุณให้ความสำคัญกับคุณภาพของรหัสในมือของเจ้าของผลิตภัณฑ์โดยการสร้างเรื่องราว "หนี้สินทางเทคนิค" หรือที่คล้ายกันคุณภาพของรหัสได้รับการจัดลำดับความสำคัญต่ำเสมอเพื่อลดความเร็วและขวัญกำลังใจอย่างจริงจัง ฉันเชื่อว่าทีมเป็นหน่วยงานที่รับผิดชอบคุณภาพของรหัส ทีมควรประเมินเรื่องราวเพื่อให้มีที่ว่างสำหรับการส่งมอบที่เก็บรักษาไว้หรือหากจำเป็นลดหนี้ทางเทคนิค
Buhb

4
"เรื่องการปรับโครงสร้างใหม่" หรือ "เรื่องหนี้สินทางเทคนิค" ไม่ควรเกิดขึ้น ไม่เคย ต้นทุนของการปรับโครงสร้างใหม่เป็นส่วนหนึ่งของการพัฒนาและไม่ควรแยกงาน มันควรจะทำอย่างต่อเนื่องในขั้นตอนเล็ก ๆ ไม่ได้วางแผนหลังจากความจริงเรื่อง ฉันรู้สิ่งนี้ทีมของเราลองปรับโครงสร้างเรื่องราวมันไม่ดี เมื่อคุณเริ่มการปรับโครงสร้างใหม่ 'on-the-fly' คุณจะเห็นว่าการปรับโครงสร้างกลายเป็นส่วนหนึ่งของการเขียนโค้ดแบบ stile ไม่ใช่งานแยกต่างหากที่ต้องทำ
Patkos Csaba

1
หากคุณเชื่อว่า codebase จะไม่สามารถจัดการเรื่อง X ได้อย่างสะดวกโดยไม่มีการปรับโครงสร้าง / เขียนใหม่อย่างมีนัยสำคัญดังนั้นการปรับโครงสร้างนี้ควรเป็นส่วนหนึ่งของ Story X และงานที่จำเป็นสำหรับการปรับโครงสร้างนี้ควรนำมาพิจารณาเมื่อประมาณเรื่องราว X
Buhb

6

"การออกแบบที่ดี" เป็นเรื่องส่วนตัว

อะไร"ออกแบบมาอย่างดี"หมายถึงคุณ? ไปยังเจ้าของผลิตภัณฑ์? ให้กับลูกค้าหรือไม่

คือ"การออกแบบดี " เป้าหมายของเจ้าของผลิตภัณฑ์หรือไม่? เป้าหมายของลูกค้า? หรือเพียงแค่คุณ

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

ดีพอและ YAGNI

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

มันเป็นที่คาดว่านักพัฒนาเป็นมืออาชีพและจะปฏิบัติใช้ปฏิบัติที่ดีที่สุดการออกแบบที่เหมาะสมและสำนวนที่จะใช้คุณสมบัติและเรื่องราว

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

การแย่งชิงกัน

ระเบียบวิธี Agile ที่สามารถเขียนลงได้ไม่ใช่ระเบียบวิธี Agile "- Jarrod Roberson

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

ร้านค้าส่วนใหญ่ที่ฉันเคยทำงานมีสิ่งที่เรียกว่า Sprint ZERO, Sprints สำหรับสมาชิกอาวุโสของทีมเพื่อร่างสถาปัตยกรรมโดยรวมหรือรูปแบบของผลิตภัณฑ์

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

โดยทั่วไป

โดยทั่วไปแล้วระบบ"ออกแบบมาอย่างดี"นั้นดีพอและติดตาม YAGNI

Agile และ SCRUM โดยเฉพาะอย่างยิ่งในการดำเนินการของ Agile นั้นเป็นมากกว่าเกี่ยวกับวิธีการผลิตผลิตภัณฑ์อย่างโปร่งใสที่สุดเท่าที่จะเป็นไปได้สำหรับเจ้าของผลิตภัณฑ์ / ผู้สนับสนุน

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


2
คือ "การออกแบบที่ดี" เป้าหมายของเจ้าของผลิตภัณฑ์: ไม่ใช่เป้าหมายโดยตรง ทางอ้อมใช่: ออกแบบมาอย่างดีหมายถึงง่ายต่อการตรวจแก้จุดบกพร่องและบำรุงรักษา ฉันต้องใช้เวลาหลายสัปดาห์ในการหาจุดบกพร่องที่สำคัญ
Giorgio

3
ช่างเป็นคำตอบที่ตกต่ำอะไร โดยทั่วไปจะรับประกันซอฟต์แวร์ปานกลางที่ห่อหุ้มดาวเคราะห์อย่างเช่นสารที่หนาสีเทา
Robert Harvey

@Giorgio นั่นไม่ใช่เป้าหมายนั่นเป็นความคาดหมายโดยนัย

@ RobertHarvey ฉันรู้ว่าคุณเคยเห็นวิดีโอ Big Ball of Mud และอ่านกระดาษ นี่คือชีวิตจริง SCRUM โดยเฉพาะคือการยอมรับของ BBOM และรวบรวมไว้ในระเบียบวิธีโดยการยอมรับเอนโทรปีซึ่งเป็นส่วนหนึ่งของกระบวนการและจัดการมันด้วยการพยายามจัดทำเอกสาร (การเปิดตัวทางเทคนิค) และทำให้ช้าลง ใช่คุณควรเริ่มห่างจาก BBOM / Entropy ทั้งหมด แต่ในชีวิตจริงที่ไม่ได้เป็นเช่นนั้นเสมอไป

1
ตกลง แต่คุณไม่สามารถกิน "คาดหวังโดยนัย" ได้ นั่นเป็นเพียงการโบกมือ "มันจะได้รับการออกแบบให้ดีเพราะฉันเป็นมืออาชีพและฉันรู้ว่าฉันกำลังทำอะไรอยู่" (ใช้เสียง Bill Murray ที่ดีที่สุดของฉัน) ใช่แล้ว
Robert Harvey

3

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

ไม่กี่เดือนที่ผ่านมาฉันได้รับชิ้นส่วนขนาดใหญ่ที่จะใช้งาน ฉันมีสเปคทั้งหมดพร้อมดังนั้นฉันจึงต้องใช้คุณสมบัติใหม่ตามนั้น งานต้องใช้เวลาประมาณ 5-6 สัปดาห์ (ตามที่ฉันประมาณ) ฉันใช้เวลาหนึ่งสัปดาห์ในการทำงานด้านการออกแบบเท่านั้น งานมีความซับซ้อนเล็กน้อย: มีวัตถุหลักที่ฉันได้ข้อสรุปจากสเป็คมี 15 สถานะที่แตกต่างกันและ UI จะมีพฤติกรรมที่แตกต่างกันสำหรับทุกรัฐ

ฉันออกแบบเวิร์กโฟลว์ทั้งหมดและโครงสร้าง DB และคลาสหลังจากนั้น

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

หลังจากประสบการณ์นี้ฉันมั่นใจอย่างแน่นอนว่ามันคุ้มค่าที่จะสร้างการออกแบบที่ยอมรับได้ในตอนแรกกว่าหวังว่าด้วยปาฏิหาริย์บางอย่างที่คุณจะได้รับในตอนท้าย


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

1

Hind-sight is 20-20 หากคุณมีข้อมูลที่คุณจัดการในตอนต้นของโครงการเพื่อหาข้อมูลทั้งหมดแล้วเขียนรหัสในอีกไม่กี่สัปดาห์ฉันแนะนำให้คุณทำ

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

ทำไมทุกคนที่มีประวัติของโครงการน้ำตกลงที่ประสบความสำเร็จเปลี่ยนไปใช้วิธีการที่คล่องตัว?


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

0

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


มันเป็นแนวปฏิบัติที่ดีที่จะกำหนดตารางการออกแบบหรือไม่เรื่องราวของผู้ใช้
Giorgio

@Giorgio: นั่นอาจไม่จำเป็น แต่เจ้าของผลิตภัณฑ์อย่างน้อยควรให้ภาพรวมของความคาดหวังของลูกค้าเกี่ยวกับโครงการก่อนที่โครงการจะเริ่มและอธิบายว่ามันพังอย่างไร
James

1
หากมีคนลงคะแนนโปรดให้เหตุผล
เจมส์

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