สิ่งที่ต้องทำในฐานะทีมใหม่นำไปสู่โครงการที่มีปัญหาการบำรุงรักษา?


19

ฉันเพิ่งรับผิดชอบโครงการโค้ดที่มีปัญหาการบำรุงรักษา ฉันจะทำอะไรได้บ้างเพื่อให้โครงงานมีเสถียรภาพ

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


ฉันขอแนะนำให้ลงทุนอย่างมากในเครื่องมือการครอบคลุมโค้ดเช่น Re # และ StyleCop (ฟรี) และอื่น ๆ มันถูกกว่ามากที่จะมีซอฟต์แวร์ตรวจจับปัญหาในซอร์สโค้ดอย่างน้อยก็สำหรับบัตรแรก
งาน

คำตอบ:


14

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

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

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

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


1
ฉันอ่าน WEWLC แล้วและมันก็ดีจริงๆ อาจเป็นสิ่งที่มีค่าที่สุดในหนังสือเล่มนี้ก็คือความรู้ที่ว่ามีวิธีจัดการกับสิ่งเลวร้ายที่คุณเจอในโครงการมรดกและคุณสามารถย้อนกลับกระบวนการเน่าซอฟต์แวร์
Jason Swett

4

นำเสนอหนี้ทางเทคนิคในการแก้ไขข้อบกพร่องและคุณสมบัติเพิ่มเติม

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

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

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


1

ฉันอาจจะระบุชัดเจน แต่เดี๋ยวก่อน

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

สิ่งนี้จะช่วยให้คุณคุ้นเคยกับ codebase อีกเล็กน้อย

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

ควรทิ้ง codebase ไว้ให้ดีกว่าเดิมก่อนที่จะเริ่มเจาะเข้าไปในนั้น ฉันค่อนข้างมั่นใจว่าเป็นการลงทุนขนาดเล็กที่จะจ่ายออกแม้ในระยะที่ไม่ยาวมากนัก


1

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


1

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

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

โชคดี.


1

ทางเลือกหนึ่งคือปัดฝุ่นประวัติย่อของคุณและเริ่มการหางาน

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


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

0

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


0

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

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


0

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

"คุณไม่สามารถทำกระเป๋าผ้าไหมออกมาจากหูของแม่สุกร"

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