/ มีวิธีการที่ถูกต้องในการบอกผู้บริหารว่ารหัสของเราแย่แค่ไหน?


70

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

ไฮไลท์บางส่วน:

  • เรายังคงใช้เฟรม (ลองนำบางสิ่งออกจากการสืบค้นซึ่งเป็นไปไม่ได้เกือบ)
  • VBScript
  • แหล่งที่มาที่ปลอดภัย
  • เรา 'ใช้'. NET - โดยที่ฉันหมายถึงเรามี. wrappers สุทธิที่เรียก COM DLLs ทำให้แทบเป็นไปไม่ได้ที่จะตรวจแก้จุดบกพร่องได้อย่างง่ายดาย
  • ทุกอย่างนั้นเป็นฟังก์ชั่นใหญ่อย่างหนึ่ง
  • รหัสไม่สามารถบำรุงรักษาได้ แต่ละหน้ามีหลายไฟล์ที่สร้างขึ้นทุกครั้งที่มีการสร้างหน้าใหม่ หน้าหลักโดยทั่วไปจะไม่ Response.Write () หลายครั้งเพื่อแสดง HTML (runat = "server"? no way) หลังจากนั้นอาจมีตรรกะจำนวนมากในฝั่งไคลเอ็นต์ (VBScript) และในที่สุดหน้าก็จะส่งไปยังตัวเอง (มักจะเก็บสิ่งต่าง ๆ ในเขตข้อมูลที่ซ่อนอยู่) ซึ่งมันจะโพสต์ไปยังหน้าการประมวลผลซึ่งสามารถทำสิ่งต่าง ๆ เช่นบันทึก data ไปยังฐานข้อมูล
  • ข้อมูลจำเพาะที่เราได้รับนั้นน่าหัวเราะ บ่อยครั้งที่พวกเขาเรียกหาสิ่งต่าง ๆ เช่น "เติมข้อมูลฟิลด์ X อัตโนมัติด้วยฟิลด์ Y หรือฟิลด์ Z" โดยไม่มีข้อบ่งชี้ว่าจะเลือกฟิลด์ Y หรือฟิลด์ Z เมื่อใด

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

ฉันจะทำอย่างไร ฉันจะนำปัญหาเหล่านี้มาได้อย่างไร 75% ของทีมเห็นด้วยกับฉันและนำปัญหาเหล่านี้มาใช้ในอดีต แต่ก็ไม่มีอะไรเปลี่ยนแปลง


27
รับใช้มัน 90% ของรหัสการเขียนคือการอ่านรหัส

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

11
นี่คือนอกหัวข้อ แต่คำตอบสั้น ๆ คือเศรษฐศาสตร์ นักพัฒนาซอฟต์แวร์จะต้องเสียค่าใช้จ่ายเท่าใดในการจัดระเบียบรหัสฐานขึ้นและผู้พัฒนาในช่วงหลายเดือนที่ผ่านมาจะได้รับความประหยัดรหัสฐานข้อมูล?
Oliver Charlesworth

89
วิธีที่ดีที่สุดคือในการสัมภาษณ์ออก
kylben

32
มันไม่สำคัญว่าคุณจะพูดกับคนตาบอดเกี่ยวกับสีอย่างไร พวกเขาจะไม่เข้าใจคุณ
ThomasX

คำตอบ:


68

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

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

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

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

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

เขียนใหม่เสร็จสมบูรณ์หรือไม่ เกือบจะเป็นความคิดที่ดีเสมอ

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


10
+1 สำหรับบรรทัดสุดท้ายเพียงอย่างเดียว คนมักจะไม่เต็มใจที่จะฟังมือใหม่แม้ว่าผู้เริ่มต้นจะให้ประสบการณ์ของตัวเองและมุมมองที่แตกต่างที่คนอื่น ๆ จะถูกน้ำท่วมเข้าไปในวัฒนธรรมองค์กรเพื่อดู ผู้คนก็ตาบอดที่จะได้ยินความจริง (เช่น "ทุกอย่างไม่ดีเพราะคนที่ตั้งมันเป็นคนงี่เง่าที่ไม่รู้ว่าพวกเขากำลังทำ WTF") และค่อนข้างจะลงไปกับเรือมากกว่ายอมรับสิ่งที่ไม่ดีและจำเป็นต้อง ได้รับการแก้ไข บางครั้งมันก็เหลือเชื่อที่เจ้าของธุรกิจจะเสี่ยงต่อการสูญเสียทุกสิ่งแทนที่จะใช้เวลาในการแก้ไขสิ่งเลวร้าย
Wayne Molina

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

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

1
@aceinthehole: ถูกต้อง หากการทดสอบมีราคาแพงผู้บริหารจะไม่ต้องการเสี่ยงต่อการเปลี่ยนแปลงใด ๆ ที่ 'ไม่จำเป็น' แม้ว่าระบบจะไม่สามารถทำการเปลี่ยนแปลงได้ในอนาคตอันใกล้
วินไคลน์

2
@WayneM และคนที่โง่เง่าที่ไม่รู้จัก WTF ที่พวกเขาทำตอนเริ่มโครงการตอนนี้เป็นผู้จัดการอาวุโส อย่าลืมส่วนนั้น!
HLGEM

58

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

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

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

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

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


2
ตลก ... ฉันได้รับการโหวตจากการแนะนำเว็บไซต์ของ Joel :-)
Robert French

6
@Robert French: ผู้จัดการของคุณกำลังอ่านข้อความของคุณ ...
Dave Markle

8
ไม่ได้ล้อเล่น. มันไม่สนุกเลยที่จะพยายามโต้แย้งว่า "ฉันมีเวลานักพัฒนา 6 เดือนในการเขียนทุกอย่างใหม่ได้หรือไม่ผลลัพธ์ที่ได้จะเป็นสิ่งที่เรามีในทุกวันนี้ ผู้พัฒนารายเดียวกันที่สร้างกองนึ่งอึสำหรับการเขียนใหม่เพราะพวกเขารู้ดีกว่าในตอนนี้ "
JohnFx

3
@ joshin4colours: <quote> ใช่ฉันรู้ว่ามันเป็นเพียงฟังก์ชั่นง่าย ๆ ในการแสดงหน้าต่าง แต่มันมีขนเล็ก ๆ น้อย ๆ งอกขึ้นมา ดีฉันจะบอกคุณว่าทำไม: ผู้ที่มีการแก้ไขข้อบกพร่อง ... ข้อผิดพลาดแต่ละข้อใช้เวลาในการใช้งานจริงเป็นเวลาหลายสัปดาห์ก่อนที่จะพบ ... เมื่อคุณทิ้งโค้ดและเริ่มจากศูนย์คุณกำลังละทิ้งความรู้ทั้งหมด </quote>
Martin York

4
ขออภัย แต่ประสบการณ์หนึ่งปีไม่ได้ให้ความน่าเชื่อถือในการเรียกร้องใด ๆ ต่อผู้บริหารของเขา
Jeremy

14

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

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

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

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

วิธีที่เลวร้ายที่สุดที่ฉันเคยเห็นคือพยายามกระโดดครั้งใหญ่โดยตรงจากระบบเดิมเป็นรุ่นล่าสุดและยิ่งใหญ่ที่สุดเช่นกระโดดจากการทำงาน แต่ระบบ VB6 / Classic ASP / COM + clunky ไปเป็นระบบ MVC / Entity Framework


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

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

11

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

(ถอดความบางส่วนจากความคิดเห็นของ Azkar กับคำถาม)


10
ในทางทฤษฎีมันจะยอดเยี่ยม ในทางปฏิบัติคำตอบจะเป็นสิ่งที่อยู่ในสายของ "ไม่ซีอีโอต้องการAnother Big Projectในเดือน X" หรือ "เรามีคุณสมบัติใหม่ที่ต้องทำในทันทีเราไม่มีเวลาที่จะแก้ไขสิ่งที่ได้ผล"
Wayne Molina

2
ที่ไม่ค่อย (ถ้าเคย) ทำงาน โดยเฉพาะอย่างยิ่งถ้าคุณมีผู้จัดการที่อยู่มาระยะหนึ่งแล้วเพราะเขา / เธอจะเคยได้ยินบทนี้มาก่อนเท่านั้นที่จะเห็นมันระเบิด
taylonr

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

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

2
คำตอบที่บ่อยมากคือ "ใครจะเป็นผู้จ่ายเงินทุนให้คุณในการทำสิ่งนี้" หากคุณไม่มีสปอนเซอร์โดยตรงของงานคุณจะต้องให้ บริษัท ทำการลงทุนระยะยาว หรือว่าคุณจะทำงานฟรีในขณะที่ทำสิ่งนี้?

7

เริ่มอ่านJoel บนซอฟต์แวร์ (Joel Spolsky / ผู้ก่อตั้ง Stack Exchange) ...

สิ่งแรกที่ผมจะทำคือการดำเนินการทดสอบโจเอล

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

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

หวังว่าจะช่วย! ยินดีต้อนรับสู่การเขียนโปรแกรม (รหัส yesterdays มักจะ sucks) ;-)


4
ฉันไม่คิดว่าสิ่งนี้จะพูดถึงวิธีการจัดการของเขา
Pubby

3
ดูเหมือนว่า Azbar จะรู้ปัญหาและรู้วิธีแก้ไข แต่เขาไม่รู้ว่าจะทำให้ลูกบอลกลิ้งไปได้อย่างไรเพื่อให้สามารถแก้ไขได้
Pubby

1
ใช่ ... ฉันแนะนำให้ใช้มุมมองของบุคคลที่สามเมื่อแสดงมัน ฉันไม่คิดว่าเขาจะถามวิธีพูดกับเจ้านายของเขาโดยเฉพาะ
Robert French

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

1
@Robert French +1 สำหรับคำตอบที่ดี เป็นสิ่งสำคัญที่ Azkar ต้องอยู่ภายใต้การดำเนินธุรกิจและเทคโนโลยี การแนะนำให้เขาแสดงความคิดเห็นของตัวเองจากการสังเกตของบุคคลที่ 3 ที่มีคุณสมบัติสูงจะช่วยในการพัฒนาของ Azkar ในฐานะนักพัฒนาไม่ใช่เป็นแค่ผู้เขียนโค้ด นอกจากนี้เรื่องราวของ PB&J นั้นสนุกดี
bakoyaro

7

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

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


เป็นความคิดที่ดีและแน่นอนมาก
sdm350

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

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


ไม่มี / มี / มี การเลือกภาษาและเครื่องมือไม่ใช่ทางเลือกที่เกิดขึ้นเนื่องจากเหตุผลทางเทคนิค (ดู: parashift.com/c++-faq-lite/big-picture.html#faq-6.5 ) เป็นเครื่องมือที่ บริษัท มีมาตั้งแต่เริ่มต้น จัดทำเครื่องมือ บริษัท หรือทีมใหม่ไม่น่าจะเกิดขึ้นเพราะผลผลิตลดลง
Martin York

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

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

4

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

ตัวอย่างอาจใช้สำหรับ "รหัสไม่สามารถบำรุงรักษาได้":

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

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

โชคดี. คุณจะต้องการมัน


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

3

"ฉันเริ่มต้นใหม่จากวิทยาลัย" - ควรตอบคำถามของคุณ

ฝ่ายจัดการอาจทราบว่ารหัสนั้นเหมาะสมที่สุด รหัสส่วนใหญ่คือถ้าคุณจ้าง Ray Gosling, Guido Van Rossum หรือคนอื่นที่ดีและมีราคาแพงในการเขียน

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

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


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

ไม่เอนเอียงกับรุ่นน้องอย่างแน่นอน แต่บางทีเขาควรจะยอมรับประสบการณ์และความรู้ที่เหนือกว่าของเพื่อนร่วมงานของเขาที่ทำงานมานานแล้ว? พวกเขาไม่สามารถเป็น Wallies เก่า ๆ ที่ไร้ความสามารถได้
James Anderson

2

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

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

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


2

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

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


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

1

การจัดการไม่สนใจรหัส พวกเขาสนใจเกี่ยวกับการมีผลิตภัณฑ์ที่จะขาย

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

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


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

ฉันคิดว่า SourceSafe ตัวเองไม่ใช่ปัญหามันยังคงใช้ SourceSafe ต่อไปเมื่อมีเครื่องมือฟรีที่ดีกว่าเพียงแค่ตะโกนว่า "เราไม่รู้ทุกอย่างนอกกรอบ" และ "คนธรรมดาสามัญเป็นกฎประจำวัน ผลิตภัณฑ์มากกว่าเรียนรู้สิ่งที่เหนือกว่า ". เป็นทัศนคติที่ผู้ใช้ SourceSafe ส่วนใหญ่มีปัญหา
Wayne Molina

"จัดระเบียบโค้ดโดยไม่ได้รับอนุญาต" - ฟังดูเหมือนแก้ไขบางอย่างที่ไม่เสียหาย
James Anderson

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

0

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

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


0

อย่าทำมัน

การเขียนโครงการขนาดใหญ่ใหม่จากศูนย์เป็นความผิดพลาดครั้งใหญ่


ขนาดใหญ่สัมพันธ์กัน
Luca

1
คำจำกัดความของฉันคือ: หากไม่สามารถเขียนซ้ำได้เองภายใน 5 วันมันมีขนาดใหญ่
Cesar Canassa

-1

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

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

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


-3

มีผู้จัดการสองประเภท: คนที่แกล้งทำเป็นเข้าใจสิ่งที่คุณทำและคนที่ไม่ทำ คนที่แกล้งเข้าใจซอฟต์แวร์จะเป็นศัตรูกับคุณ คนที่คุณไม่รำคาญเท่านั้น

ไม่ว่าในกรณีใดผู้จัดการก็เป็นคนโกหกทั้งหมด

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


+1 ที่ "ผู้จัดการเป็นคนโกหกทั้งหมดดังนั้นพวกเขาจึงมีความมุ่งมั่นอย่างแรงกล้าที่จะคิดว่าทุกคนเป็นใคร"
ZJR

-1 ในสิ่งเดียวกัน; ทั้งไม่จริงและไม่ช่วยเหลือ
Jaap

@ Jaa มีการศึกษาจำนวนมากที่สัมพันธ์กับอำนาจและชนชั้นทางสังคมกับความไม่ซื่อสัตย์ หมายความว่าคุณจะถอน -1 ของคุณหรือไม่ ตัวอย่าง: msnbc.msn.com/id/35836844 blogs.discovermagazine.com/notrocketscience/2010/04/27/… news.sciencemag.org/sciencenow/2012/02/shame-on-the-rich.html
Joe

การศึกษาที่สองโดยเฉพาะอย่างยิ่งพิสูจน์จุดที่แน่นอนของฉัน
โจ

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