คำถามติดแท็ก technical-debt

หนี้ทางเทคนิคเป็นคำเปรียบเทียบสำหรับผลที่ตามมาของสถาปัตยกรรมซอฟต์แวร์ที่ไม่ดีและการพัฒนาซอฟต์แวร์ภายใน codebase

16
เกือบเสร็จโครงการแล้ว แต่มีรหัสสปาเก็ตตี้ ฉันจะเขียนใหม่หรือพยายามส่งมันต่อไปหรือไม่? [ปิด]
ฉันเป็นนักพัฒนาเว็บมือใหม่ (มีประสบการณ์หนึ่งปี) สองสามสัปดาห์หลังจากเรียนจบฉันได้รับงานเพื่อสร้างเว็บแอปพลิเคชันสำหรับ บริษัท ที่เจ้าของเทคโนโลยีไม่มากนัก เขาคัดเลือกฉันเพื่อหลีกเลี่ยงการขโมยความคิดของเขาค่าใช้จ่ายในการพัฒนาสูงที่ บริษัท ให้บริการเรียกเก็บและมีใครบางคนที่อายุน้อยกว่าเขาสามารถไว้วางใจ onboard เพื่อรักษาโครงการในระยะยาว (ฉันมาถึงข้อสรุปเหล่านี้ด้วยตนเอง ) Cocky เมื่อฉันย้อนกลับไปตอนนั้นฉันได้รับอนุปริญญาด้านวิทยาศาสตร์คอมพิวเตอร์ ฉันกำลังโทรนัด หลังจากการวิจัยบางอย่างที่ฉันตัดสินบน PHP และเริ่มต้นด้วย PHP ธรรมดาไม่มีวัตถุเพียงรหัสขั้นตอนที่น่าเกลียด สองเดือนต่อมาทุกอย่างยุ่งเหยิงและมันยากที่จะก้าวหน้า แอปพลิเคชั่นเว็บมีขนาดใหญ่มาก ดังนั้นฉันตัดสินใจที่จะตรวจสอบกรอบ MVC ที่จะทำให้ชีวิตของฉันง่ายขึ้น นั่นคือสิ่งที่ฉันได้พบกับเด็กสุดเจ๋งในชุมชน PHP: Laravel ฉันชอบมากมันเรียนรู้ได้ง่ายและฉันก็เริ่มเขียนโค้ดทันที รหัสของฉันดูสะอาดและเป็นระเบียบมากขึ้น มันดูดีมาก แต่เว็บแอปพลิเคชั่นก็มีขนาดใหญ่อีกครั้ง บริษัท กดดันให้ฉันส่งเวอร์ชั่นแรกซึ่งพวกเขาต้องการปรับใช้อย่างชัดเจนและเริ่มมองหาลูกค้า เพราะ Laravel สนุกกับการทำงานมันทำให้ฉันจำได้ว่าทำไมฉันถึงเลือกอุตสาหกรรมนี้ตั้งแต่แรก - บางอย่างที่ฉันลืมไปแล้วในขณะที่ติดอยู่ในระบบการศึกษาที่ไม่ดี ดังนั้นฉันจึงเริ่มทำงานในโครงการเล็ก ๆ ในเวลากลางคืนอ่านเกี่ยวกับวิธีการและแนวปฏิบัติที่ดีที่สุด ฉันมาเยือน OOP, ย้ายไปออกแบบเชิงวัตถุและการวิเคราะห์และอ่านลุงบ๊อบหนังสือรหัสสะอาด สิ่งนี้ช่วยให้ฉันรู้ว่าฉันไม่รู้อะไรเลย ฉันไม่ทราบวิธีการสร้างซอฟต์แวร์ THE RIGHT WAY …

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

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

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

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

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

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


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

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

5
ต่อสู้กับหนี้ทางเทคนิคในฐานะ“ ผู้พัฒนาที่ต่ำที่สุด” หรือไม่?
สมมติว่าคุณทำงานให้กับ บริษัท และสิ่งที่คุณทำคือการพัฒนาซอฟต์แวร์สำหรับพวกเขา คุณไม่มีความคิดในภาพรวมหรืออาจจะเล็กน้อย สิ่งที่คุณมีคืองานที่มอบหมายให้คุณผ่านระบบติดตามปัญหา คุณได้รับงานคุณทำให้งานเป็นไปตามที่งานอธิบายคุณส่งงานกลับมา ชอบเพิ่ม 2 จำนวนเต็ม: function add(a,b){return a + b;} แต่ต่อมาเมื่อโครงการดำเนินไปข้างหน้าคุณจะสังเกตเห็นว่าในขณะที่addมีความซับซ้อนมากขึ้นคุณรู้ว่ามันควรจะต้องมีรูปแบบของสถาปัตยกรรมมากกว่าฟังก์ชั่นที่เพิ่มพารามิเตอร์และส่งกลับค่า อย่างไรก็ตามคุณไม่ทราบว่า addในสถานที่แรกทั้งหมดที่พวกเขาต้องการก็คือง่ายๆที่ คุณไม่ได้คาดหวังว่าการเพิ่มจะซับซ้อนนัก โครงการดำเนินไปด้วยคุณสมบัติที่มากขึ้นซึ่งคุณไม่ได้คาดหวังไว้ตั้งแต่แรก และในที่สุดคุณก็เก็บซ้อนแฮ็คและเลเยอร์ตามเลเยอร์ของฟังก์ชั่นเพื่อหลีกเลี่ยงการทำลาย / เขียนรหัสที่มีอยู่ใหม่ คุณรับมือกับสถานการณ์เหล่านี้อย่างไร? คุณต่อสู้กับหนี้ทางเทคนิคในฐานะ "ผู้พัฒนาที่ต่ำที่สุด" ได้อย่างไร? ชี้แจง: คุณคือ "implementer" ซึ่งต่ำที่สุดในลำดับชั้น คุณเห็นปัญหา แต่ไม่ได้พูดกับเรื่องนี้ ฉันไม่ได้ระบุปริมาณหนี้ทางเทคนิคหรือมองหาเครื่องมือ เกี่ยวกับ"ซ้ำ" ที่สาม การ Refactoring & Rewrite - คุณถูกล็อคในงานของคุณ คุณไม่ได้รับค่าตอบแทนในการทำสิ่งพิเศษ ภาพรวมสถาปัตยกรรม - คุณรู้ระบบโดยรวม แต่ไม่มีแนวคิดเกี่ยวกับสถาปัตยกรรม Code Freeze - ไม่ใช่การโทรของคุณ …

6
“ บริษัท ซอฟต์แวร์ที่กำหนดเอง” จัดการกับหนี้ทางเทคนิคได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา "บริษัท ซอฟต์แวร์ที่กำหนดเอง" คืออะไร? โดย "บริษัท ซอฟต์แวร์ที่กำหนดเอง" ฉันหมายถึง บริษัท ที่สร้างรายได้เป็นหลักจากการสร้างซอฟต์แวร์ที่กำหนดเองหนึ่งครั้งบิตของซอฟต์แวร์ ตัวอย่างเช่นมีหน่วยงานหรือ บริษัท เครื่องกลางหรือผู้รับเหมา / ที่ปรึกษาเช่นRedify ตรงกันข้ามกับ "บริษัท ซอฟต์แวร์ที่กำหนดเอง" คืออะไร? ตรงข้ามของโมเดลธุรกิจข้างต้นคือ บริษัท ที่มุ่งเน้นผลิตภัณฑ์ระยะยาวไม่ว่าจะเป็นแอพเดสก์ท็อป / มือถือที่ปรับใช้ได้หรือซอฟต์แวร์ SaaS วิธีที่แน่นอนในการสร้างหนี้ทางเทคนิค: ฉันทำงานให้ บริษัท ที่พยายามมุ่งเน้นไปที่ชุดผลิตภัณฑ์ SaaS อย่างไรก็ตามเนื่องจากข้อ จำกัด บางอย่างเราบางครั้งก็จบลงด้วยความมุ่งมั่นของลูกค้าบางรายและเราสิ้นสุดการสร้างบิตของซอฟต์แวร์ที่กำหนดเองที่สามารถใช้สำหรับไคลเอ็นต์นั้นเท่านั้น นี่เป็นวิธีที่แน่นอนในการก่อหนี้ด้านเทคนิค ตอนนี้เรามีซอฟต์แวร์นิดหน่อยที่จะรักษาซึ่งไม่เพิ่มอะไรเข้าไปในผลิตภัณฑ์หลักของเรา หากงานที่กำหนดเองเป็นวิธีที่แน่นอนในการสร้างหนี้ทางเทคนิคเอเจนซี่จะจัดการกับมันอย่างไร นั่นทำให้ฉันคิด บริษัท ที่ไม่มีผลิตภัณฑ์หลักเป็นศูนย์กลางของรูปแบบธุรกิจของพวกเขาพวกเขามักจะทำงานซอฟต์แวร์เอง พวกเขารับมือกับแนวคิดเรื่องหนี้ทางเทคนิคได้อย่างไร …

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

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

9
โดยสรุป: เราจะดูแลระบบเดิมอย่างไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา นิวยอร์ก - ด้วยการระเบิดที่ทำให้ตึกระฟ้าสั่นสะเทือนท่อไอน้ำอายุ 83 ปีส่งข้อความที่ทรงพลังว่าไมล์ของท่อสายไฟและเหล็กที่อยู่ใต้นิวยอร์กและเมืองอื่น ๆ ในสหรัฐอเมริกากำลังแก่ลงและอาจกลายเป็นอันตรายอย่างไม่มั่นคง เรื่องราวเกี่ยวกับท่อไอน้ำที่ระเบิดในแมนฮัตตัน เราเคยได้ยินเกี่ยวกับเน่าซอฟแวร์และหนี้ทางเทคนิค และเราได้ยินจากสิ่งที่ชอบ: "ลุงบ๊อบ" มาร์ติน - ใครเตือนเราเกี่ยวกับ " ผลที่ตามมาของการเลอะ " ไมเคิลซีขน - ใครทำให้เรามีคำแนะนำสำหรับ'การทำงานอย่างมีประสิทธิภาพด้วยรหัสมรดก' แน่นอนว่าชุมชนวิศวกรรมซอฟต์แวร์ตระหนักถึงปัญหาเหล่านี้ แต่ฉันรู้สึกว่าสังคมโดยรวมของเราไม่เห็นคุณค่าว่าปัญหาเหล่านี้สามารถทำให้เกิดปัญหากับระบบและแอปพลิเคชันได้อย่างไร ในฐานะที่เป็นสตีฟ McConnell บันทึก : ... ซึ่งแตกต่างจากหนี้ทางการเงินหนี้ทางเทคนิคนั้นมองเห็นได้น้อยกว่าดังนั้นผู้คนจึงมีเวลาได้ง่ายขึ้นโดยไม่สนใจ หากนี่เป็นเรื่องจริงและฉันเชื่อว่าเป็นเช่นนั้นฉันกลัวว่ารัฐบาลและภาคธุรกิจอาจเลื่อนการบำรุงรักษาและการป้องกันแฮกเกอร์เป็นประจำจนกว่าจะสายเกินไป [เหมือน NYC และท่อไอน้ำ] คำถามของฉัน: มีวิธีที่เราสามารถหลีกเลี่ยงซอฟต์แวร์เทียบเท่า NYC และท่อไอน้ำได้หรือไม่?

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