วิธีที่จะหยุดการชุบทองและเพียงแค่มีเนื้อหาที่จะปล่อยการพัฒนาที่ทำงาน [ปิด]


29

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

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


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

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

เจ้านายของคุณคิดอย่างไร
JeffO

คำตอบ:


22

ที่ดีที่สุดคือศัตรูของดีพอ

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


2
ขอบคุณ David ที่ทำให้ฉันนึกถึงคำพูดที่เกี่ยวข้องมากที่ฉันอ่านเมื่อเร็ว ๆ นี้: "Perfect คือศัตรูที่ทำ"
Andy Bowskill

1
เนื่องจากต้นฉบับเป็นภาษาฝรั่งเศส (วอลแตร์) มันค่อนข้างยากที่จะพูดว่าเวอร์ชั่นใดที่ "ถูกต้อง" - ถ้าไม่มีใครเขียนเป็นภาษาฝรั่งเศสนั่นก็คือ
David Hammen

24

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

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

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

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


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

@ AndyBowskill ฉันมีปัญหาแบบนี้เหมือนที่คุณทำ ตอนนี้คุณเป็นอย่างไรบ้าง
datasn.io

14

ซอฟต์แวร์ชุบทอง

ครั้งแรกที่ฉันเห็นการชุบทองที่ใช้เป็นคำอธิบายสำหรับซอฟต์แวร์อยู่ในกระดาษโดย Barry Boehmซึ่งเขาได้ให้รากสาเหตุดังต่อไปนี้:

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

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

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

ความสามารถพิเศษสำหรับ Time Boxing

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

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

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

ต้นแบบที่มีการจัดการอย่างรวดเร็วและสกปรกหรือมีความเสี่ยง?

ฉันมีผู้จัดการที่เคยขอให้ทำงานในลักษณะที่แน่นอน

รวดเร็วและสกปรก แต่เป็นเรื่องของความงาม

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

เราจะเสียสละอะไรให้เหมาะกับเวลาของเรา

ในบทที่หนึ่งของExtreme Programming Explainedฉบับที่สอง Kent Beck พูดถึงสิ่งที่ต้องทำในการเคลื่อนที่อย่างรวดเร็ว คำตอบของเขาคือ "คุณทำในสิ่งที่คุณต้องทำเพื่อสร้างคุณค่าให้กับลูกค้า"

อันตราย

ในฉบับพิมพ์ครั้งแรกของหนังสือเล่มเดียวกันเบ็คระบุความคิดเห็นของ Boehm เกี่ยวกับการควบคุมความเสี่ยงที่มีความสำคัญต่อวิธีการของเขาโดยพูดว่า:

"ความเสี่ยงเป็นปัญหาพื้นฐานของการพัฒนาซอฟต์แวร์"

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

ความพอเพียงของจิตใจ

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

การบีบบังคับอาจเป็นอาการไม่ใช่โรค

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

คำติชมและการแข่งขัน

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

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

ในโลกแห่งการทำงานของเราแต่ละคนในทีมต้องแข่งขันกับผู้อื่นด้วย เป็นเรื่องจิตเภทเล็กน้อยที่จะเชื่อในการมีทีมที่แบ่งปันงานและความรุ่งโรจน์สำหรับความสำเร็จ แต่จากนั้นใช้กระบวนการจัดการประสิทธิภาพประจำปีที่ให้รางวัล 20% ของสมาชิกลงโทษหรือ expels สมาชิก 10% หรือมากกว่านั้นและ แสร้งว่าส่วนใหญ่ 70% ก่อให้เกิดสิ่งที่ดีที่สุดโดยไม่มีแรงจูงใจ ฉันคิดว่านี่เป็นช้างตัวใหญ่ในห้อง WRT ที่ส่งเสริมการทำงานเป็นทีมและเพื่ออ้างอิงเรื่องราวของ Kent Beck มันแสดงให้เห็นถึงความผูกพันทางวัฒนธรรมที่ลึกซึ้งในการเป็นชาวเขา

ทางข้างหน้า

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

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


Nice ตอบโดยละเอียด +1 Re "แต่ต้องเกิดขึ้นก่อน": มันล่มดังนั้นฉันจะใช้การเปรียบเทียบกีฬาอเมริกัน ลองนึกภาพว่าทีมฟุตบอลทำงานเหมือนธุรกิจทั่วไปที่มีรีวิวพนักงานประจำปี "เราลดเงินเดือนของคุณลง 50% คุณพลาดการจับสามเกมในเกมแรกในเกมสี่เกมถัดไปที่คุณไม่ได้เล่นเกมจนถึงไตรมาสที่สอง การวิพากษ์วิจารณ์ปีหนึ่งทำอันตรายมากกว่าดี ไม่มีสิ่งใดที่เป็นคำวิจารณ์เชิงสร้างสรรค์ถ้ามันสายเกินไปในการมา
David Hammen

ลิงค์ไปยังคนที่ภูเขาและคนในป่า
Wildcard

7

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

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


ยินดีต้อนรับและขอบคุณสำหรับการโพสต์ครั้งแรกของคุณในโปรแกรมเมอร์แลกเปลี่ยนกอง โปรดพิจารณาป้อนคำถามติดตามเป็นความคิดเห็นกับคำถามมากกว่าเป็นคำตอบ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเกณฑ์สำหรับการเขียนคำถามและคำตอบที่ได้รับคะแนนสูงและรับตราโดยการอ่านคำถามที่พบบ่อยที่programmers.stackexchange.com/faq
DeveloperDon

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