เป็นการสุ่มเปลี่ยนรหัสที่อนุญาตให้ใช้ในการต่อสู้


23

พื้นหลัง

  • ทีมของฉันใช้การต่อสู้
  • ฉันยังไม่ได้มอบหมายงาน
  • ไม่มีงานที่รอดำเนินการใน Backlog
  • วันนี้เป็นวันแรงงานสำหรับลูกค้าของฉัน

ไม่มีสิ่งต่าง ๆ ที่ต้องทำในวันนี้ฉันต้องการเริ่มการรีแฟคเตอร์รหัสบางอย่างที่ฉันเห็นในโปรเจคที่ฉันกำลังทำงานอยู่

ตกลงในการต่อสู้ถ้าฉันเริ่มการสุ่มรหัสใหม่ที่ฉันมีและไม่ได้เขียนที่รบกวนฉันอยู่ตลอดเวลา แต่ไม่มีเวลาวันอื่น ๆ ที่จะแก้ไขได้เนื่องจากการมอบหมายวันอื่น ๆ ?

แล้ววันอื่น ๆ ที่ฉันมีเวลาว่างระหว่างการวิ่ง

ฉันทำได้จริงและเชื่อในการฟื้นฟูอย่างต่อเนื่อง ฉันมักจะทำกับชิ้นส่วนของรหัสที่ฉันทำงานเมื่อกำหนดเรื่อง แต่สิ่งที่เกี่ยวกับรหัสอื่น ๆ ที่ฉันเห็นว่าไม่เกี่ยวข้องกับสิ่งที่ฉันกำลังทำงานอยู่ในขณะนั้น?



ฉันคิดว่านี่ไม่ใช่ความคิดเห็นที่สมบูรณ์เพราะฉันถูกถามอย่างเฉพาะเจาะจงเกี่ยวกับกระบวนการต่อสู้
Carlos Muñoz

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

@ BЈовићไม่ฉันเขียนคำถามเมื่อวันที่ 1 กันยายน
Carlos Muñoz

1
@ BЈовићวันแรงงานเป็นวันจันทร์แรกของเดือนกันยายนในสหรัฐอเมริกา วันที่ 1 พฤษภาคมเป็นวันแรงงานสากล ฉันไม่ได้ทำงานในสหรัฐอเมริกาในวันแรงงาน
Carlos Muñoz

คำตอบ:


29

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

ดังนั้นสำหรับคำตอบของฉัน ... ในระยะสั้นมันจะเป็นเช่นนี้:

ใช่รหัส refactoring "สุ่ม" ได้รับอนุญาตใน Scrumตราบใดที่ทีมตัดสินใจว่าควรทำ (หลังจากทั้งหมดมันคือการจัดระเบียบตัวเอง)

และสำหรับคำตอบที่ยาวนาน:

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

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

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

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


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

5
ไม่มีการทดสอบจำนวนมากที่ทำให้การรีแฟคเตอร์ปลอดภัยอย่างสมบูรณ์ SQLite เป็นหนึ่งในซอฟต์แวร์ที่ผ่านการทดสอบมากที่สุดโดยมีความครอบคลุมของสาขาโดยรวม แต่พวกเขายังคงทำการแก้ไขข้อผิดพลาดฉุกเฉินตลอดเวลา
Jan Hudec

@Petter Refactoring ถูกกำหนดเป็นการเปลี่ยนแปลงโครงสร้างภายในของซอฟต์แวร์เพื่อให้ง่ายต่อการเข้าใจและถูกกว่าการปรับเปลี่ยนโดยไม่เปลี่ยนพฤติกรรมที่สังเกตได้ ข้อผิดพลาดเป็นพฤติกรรมที่สังเกตได้ดังนั้นจึงไม่สามารถ "refactored out" คุณใช้ refactoring ที่ส่วนของรหัสที่คุณตัดสินว่าจะได้รับประโยชน์จากโครงสร้างที่ดีกว่าไม่ใช่การสุ่ม (ดังนั้นเครื่องหมายคำพูด) อย่างไรก็ตามเพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณจะไม่ส่งผลกระทบต่อพฤติกรรมที่สังเกตได้ของระบบคุณต้องมีการทดสอบครอบคลุม 100% แม้ว่าบางส่วนจะทำได้ผ่านการทดสอบด้วยตนเอง
MichelHenrich

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

2
การครอบคลุมโค้ด 100% ไม่ได้ป้องกันการแนะนำบั๊กอย่างแน่นอน แม้ว่าทุก ๆ บรรทัดของรหัสจะถูกทดสอบ แต่สถานะของโปรแกรมที่เป็นไปได้จะไม่ถูกทดสอบ
bdsl

11

การต่อสู้ไม่ได้พูดอะไรเกี่ยวกับการปรับโครงสร้าง

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


4

ฉันจะบอกว่าไม่มันไม่ใช่ สิ่งนี้ไม่คำนึงถึงประเภทของงาน (การเปลี่ยนใหม่เป็นต้น)

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

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


1

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

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

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

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

หากมีข้อสงสัยให้ถามผู้จัดการของคุณ

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


1
คุณมีความหมายอย่างไรกับ "การปรับสภาพเครื่องสำอาง"?
BЈовић

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

1

การต่อสู้ไม่ได้พูดอะไรเกี่ยวกับการรื้อฟื้น (ดูการบรรยายของโรเบิร์ตซี. มาร์ติน "ดินแดนที่ทะเลาะกันลืม")

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

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

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

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

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

การปรับโครงสร้างส่วนใหญ่เป็นงานใต้ดิน การรีแฟคเตอร์ "ยอดเยี่ยม" หมายความว่าการรีแฟคเตอร์ "น้อย" ยังไม่ได้รับการประมวลผลในอดีต

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

หลีกเลี่ยงสิ่งทางเทคนิคจากลูกค้าและทำงานในฐานะนักพัฒนามืออาชีพ


0

นี่เป็นวิธีหนึ่ง: ทำทั้งสองอย่าง!

การปรับโครงสร้างซ้ำมักจะเกิดข้อผิดพลาดหรือใช้เวลานานกว่าเดิมซึ่งประมาณไว้เมื่อ @misterbiscuit ชี้ให้เห็น

ดังนั้นพิจารณาความพยายามที่จะทำมันเป็นร่างหรือขัดขวาง คุณไม่จำเป็นต้องขออนุมัติหรือโฆษณาถ้าในขั้นตอนนี้

จากนั้นให้รวมไว้ในหนึ่งในสองช่องทาง:

  • ตั๋วที่มีอยู่ซึ่งสัมผัสกับรหัส / ฟังก์ชั่นเดียวกับที่คุณสามารถห่อหุ้มสิ่งนี้ได้อย่างสมเหตุสมผลตามที่ตกลงกับสมาชิกในทีม
  • ทั้งตั๋วสำหรับตรวจสอบที่กรูมมิ่งตั๋วต่อไป (หรือการประชุมรายสัปดาห์ ฯลฯ หากน้ำตก) ในเวลานั้นคุณสามารถทำมันได้

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

สิ่งนี้จะมีข้อดีหลายประการ:

  • รหัสทั้งหมดของคุณผ่านกระบวนการเดียวกันรับการทดสอบ QA ในขั้นตอนการวางจำหน่าย ฯลฯ
  • คุณได้รับการบายอินอย่างเป็นทางการรวมถึงจากผู้จัดการผลิตภัณฑ์การปรับโครงสร้างนั้นเป็นส่วนหนึ่งของงานฝีมือและไม่ใช่สิ่งที่จำเป็นต้อง 'แอบเข้าไป' ในวันหยุด ถามตัวเองว่าทำไมคุณถึงไม่ 'แอบเข้าไป' คุณลักษณะที่แท้จริงอาจช่วยให้มองเห็นได้
  • คุณสามารถขอจับคู่ตรวจสอบรหัส qa, devops และการสนับสนุนอื่น ๆ ทั้งหมดที่อาจจำเป็นสำหรับการเปลี่ยนรหัสแฟคตอริ่ง ทุกอย่างจะเป็นทางการตามนโยบายและระเบียบปฏิบัติและเหนือกระดาน
  • หากคุณเป็น บริษัท การค้าสาธารณะที่มีการปฏิบัติตาม SOX คุณอาจต้องการ / จำเป็นที่จะต้องทำกระบวนการแบบเป็นทางการ (เช่นเอกสารและจากนั้นปฏิบัติตาม)
  • คุณจะได้รับชื่อเสียงที่ดีขึ้นจากทั้งผู้จัดการผลิตภัณฑ์ (การเปลี่ยนแปลงได้ดำเนินการอย่างรวดเร็ว) และทีมพัฒนา (โค้ดเบสได้รับการปรับปรุง)
  • องค์กรกำลังมองหาที่จะดูแลเกี่ยวกับคุณภาพของรหัสที่ดีสำหรับการผลิตขวัญกำลังใจการเก็บรักษาพนักงานและเหตุผลอื่น ๆ อีกมากมาย
  • ผลกระทบต่อความเร็วของโครงการสามารถติดตามได้ง่ายขึ้นเมื่อรวมงานทั้งหมด มันจะโอเคที่จะไม่กำหนดคะแนนใด ๆ เนื่องจากการมีอยู่ของตัวเองสามารถใช้เพื่อส่งผลต่อความเร็ว
  • นักพัฒนามีแนวโน้มที่จะเห็นเครื่องมือที่กระตุ้นให้มีการตรวจทานโค้ดง่ายขึ้นเช่น Fisheye, Github และอื่น ๆ
  • นักพัฒนามีแนวโน้มที่จะเห็นมาตรฐานขั้นพื้นฐานบางอย่าง (บางครั้งก็ทำเป็นเอกสารบางครั้งก็ไม่ใช่) ที่ทำให้รหัสการแบ่งปันและทำให้การปรับโครงสร้างทำได้ง่ายขึ้น บางครั้งส่วนใหญ่ของการเปลี่ยนโฉมใหม่คือการเลือกสไตล์แล้วนำไปใช้ในวงกว้าง (แทนที่การผสมผสานของวิธีการเข้าด้วยกัน)

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


0

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

  • แก้ไขปัญหาการออกแบบหรือสถาปัตยกรรม
  • ปรับปรุงการใช้งาน

ตกลงในการต่อสู้ถ้าฉันเริ่มการสุ่มรหัสใหม่ที่ฉันมีและไม่ได้เขียนที่รบกวนฉันอยู่ตลอดเวลา แต่ไม่มีเวลาวันอื่น ๆ ที่จะแก้ไขได้เนื่องจากการมอบหมายวันอื่น ๆ ?

จากคำตอบนี้ :

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

ในงานก่อนหน้าของฉันเรามีการต่อสู้ชนิดหนึ่งโดยมีการวิ่งมากขึ้น (2-3 เดือน) เนื่องจากเรามีความล่าช้าระหว่าง sprints (1 เดือน) เราใช้เวลานี้เพื่อวิเคราะห์ซอฟต์แวร์และ refactor รหัส

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