คุณสมดุลระหว่าง“ ทำถูกต้อง” และ“ ทำเร็วที่สุด” ในการทำงานประจำวันของคุณอย่างไร? [ปิด]


180

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

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

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

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


12
ง่าย: ทำมันขวาและทำมันได้อย่างรวดเร็ว
Ren

158
@ren: ดีฉันคิดว่าคุณไม่ได้เป็นโปรแกรมเมอร์คุณเป็นผู้จัดการ :-)
Flot2011

44
เป็นภาระ xkcd.com/844
MikeTheLiar

5
ทำโดยเร็ว ถ้าคุณยังมีเวลาทำถูกต้อง
Laurent Couvidou

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

คำตอบ:


106

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

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

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

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

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

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

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

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


14
"บ่อยครั้งที่ทีมขายทำให้เราเดือดร้อนเพียงแค่รับค่าคอมมิชชั่น" - ณ จุดใดที่คุณจะพิจารณาว่าการขายควรรับผิดชอบการขายบางอย่างที่ธุรกิจไม่สามารถส่งมอบได้ - สมมติว่ามีอยู่หรือไม่ คุณมีตัวอย่างที่พวกเขาก้าวข้ามเส้นแบ่งระหว่างการตลาดเชิงรุกและการขายต่อหรือไม่?
Tom W

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

9
+1 - "ฉันจะไม่เสียสละคุณภาพในคุณสมบัติที่ทำให้ลูกค้าต้องได้รับโดยเร็ว แต่จะมีบางอย่างเกิดขึ้น" ... นั่นยอดเยี่ยม
Joel B

59
@TomW - ฉันมักจะชี้ให้เห็นว่าสถาปนิกกองทัพเรือหัวหน้า Titanic ที่เตือนการตัดต้นทุน (Thomas Andrews) ลงไปกับเรือในขณะที่คนขาย / การตลาดชั้นนำที่เร่งการลดต้นทุนและทำให้สิ่งต่าง ๆ เสร็จเร็วที่สุด (Bruce Ismay) ในเรือชูชีพ
jfrankcarr

4
ฉันชอบที่จะให้เวลาพิมพ์คำตอบเช่นนี้ แต่ฉันมีลูกค้าที่ขอร้องเจ้านายของฉันทางโทรศัพท์ "บ่อยครั้งที่ทีมขายทำให้เราเดือดร้อนเพียงเพื่อให้ได้ค่านายหน้า" เหมือนกันที่นี่ ... แต่อย่างใดพวกเขายังคงได้รับโบนัสเหล่านั้น!
Kenzo

62

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

เพราะคุณรู้ว่าสิ่งที่จะจริงๆทำให้เกิดผู้จัดการของคุณที่จะผลักดันคุณหรือลูกค้าของคุณจะโกรธ? ชั้นเลว


43
แม้ว่าโดยทั่วไปจะมีเวลาในการทำงานที่ดี แต่ก็ไม่มีเวลาที่จะทำอย่างสมบูรณ์แบบ มีโลกที่แตกต่างระหว่างสองสิ่งนี้
Donal Fellows

2
@ DonalFellows แน่นอน 'ถูกต้อง' อยู่เสมอ "ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดโดยใช้ความเข้าใจที่ดีที่สุดของปัญหา ณ จุดนี้เพื่อความสามารถสูงสุดของเรา" ผู้คนทำผิดพลาด การเปลี่ยนแปลงข้อกำหนด แนวทางปฏิบัติที่ดีที่สุดเปลี่ยนไป อย่าตัดมุมและ refactor เมื่อสิ่งที่เกิดขึ้น
Telastyn

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

1
@ DonalFellows ไม่มีใครใช้คำว่าสมบูรณ์แบบโซลูชันที่สมบูรณ์แบบคือทางออกที่ผิด Telastyn กำลังพูดถึงโซลูชันที่เหมาะสม ทางออกที่ถูกต้องคือแนวทางที่ตรงตามข้อกำหนดและไม่น่าจะทำให้เกิดปัญหาในอนาคตในขณะที่จัดการได้ง่ายในกรณีที่ทำได้ แอบโซลูทผิดเสมอ
Jimmy Hoffa

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

21

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

  • สื่อสารมูลค่า

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

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

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

  • รับทีมในหน้าแช่งเดียวกัน

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

  • เลือกเครื่องมือที่เหมาะสม

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

  • FFS, ถ้าวิศวกรไม่ได้ตัดสินใจ, อย่างน้อยก็รับอินพุตวิศวกรในการเลือกเครื่องมือ

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

  • มุ่งเน้นการออกแบบมากกว่าการใช้งาน

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

  • บันทึกข้อกังวลของคุณ

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


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

1
ฉันรู้สึกดีกับคำตอบนี้ แต่ฉันเพิ่งพบงานแรกของฉันที่งาน biz และ dev ไม่ได้อยู่ที่ลำคอของกันและกันอย่างต่อเนื่องและผลกระทบก็น่ายินดี เราเพิ่งทำสิ่งต่างๆเสร็จแล้ว ไม่เสมอไปทันทีที่เราต้องการ แต่เราคำนึงถึงอนาคตจริง ๆ และแสดงให้เห็นทั้งในผลิตภัณฑ์และความสามารถของเราในการปรับเปลี่ยนตามความต้องการเปลี่ยนแปลง Big Ball of Mud หนีไม่พ้นเป็นเรื่องโกหก IMO
Erik Reppen

19

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

แก้ไข: มีทรัพยากรที่ดีเพียงไม่กี่รายการใน "refactoring กับค่าใช้จ่ายในการบำรุงรักษาที่สูงขึ้น" ที่กล่าวถึงในเอกสารข้อมูลนี้: http://www.omnext.net/downloads/Whitepaper_Omnext.pdf


12
มีตัวเลือกที่ดีกว่าคือทำให้ส่วนหนึ่งของการสร้างนิสัยการเข้ารหัสปกติของคุณ dayly ทุกๆชั่วโมง เมื่อใดก็ตามที่คุณเพิ่มหรือเปลี่ยนฟังก์ชั่น ดังนั้นคุณไม่จำเป็นต้องจองเวลาพิเศษหรือ "โน้มน้าวการบริหารจัดการ"
Doc Brown

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

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

1
@DocBrown มันทำงานเมื่อคุณพูดคุยกับการจัดการ ถ้าคุณพูดคุยกับนักพัฒนาอาวุโสและบอกเขาว่าคุณจะเพิ่มสองฟิลด์ในแบบฟอร์มและจะใช้เวลา 3 วัน ... ขอให้โชคดี :)
Andrzej Bobak

2
การขยายเวลาโดยประมาณของคุณเพื่อรับเวลาการบำรุงรักษาเป็นปัญหาด้วยเหตุผลหลายประการ บางครั้งหนี้ทางเทคนิคในความเป็นจริงก็คุ้มค่าที่จะเกิดขึ้น จะเกิดอะไรขึ้นเมื่อบิสจู่สังเกตเห็นว่าในสถานการณ์ฉุกเฉินใช้เวลา 15 นาทีในการตบสองฟิลด์ใหม่เมื่อครั้งที่แล้วใช้เวลา 8 วัน IMO, biz จะต้องตระหนักถึงหนี้เทคโนโลยีและผลกระทบระยะยาวที่มี ปัญหาจะต้องเข้าใจตามที่คุณจ่ายตอนนี้หรือคุณจ่าย 5 เท่าในภายหลังเมื่อทุกอย่างเสร็จสิ้น
Erik Reppen

14

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

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

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

http://blogs.popart.com/2007/07/what-scotty-from-star-trek-can-teach-us-about-managing-expectations/


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

11

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

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

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

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

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


7

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


7

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

การแก้ไขโค้ดที่ไม่ได้ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดมักใช้เวลานานกว่ามาก การพยายามค้นหาว่า null นั้นมาจากไหนเมื่อโทรดูเหมือน abcde () อาจใช้เวลานาน

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

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

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

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

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

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


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

1
@ErikReppen Code ที่สร้างความสับสนอ่านไม่ออกและการดำเนินการตามรูปแบบการสืบทอดขนาดใหญ่จะทำให้คำจำกัดความ DRY ของฉันล้มเหลว หากคุณต้องการคิดรหัสออกทุกครั้งที่คุณใช้งานการออกแบบจะล้มเหลวอย่างชัดเจนแม้ว่าการใช้งานจะผ่านไป
BillThor

มันสามารถเกี่ยวข้องกับการนำมาใช้รหัสจำนวนมากแม้ว่า ส่วนที่น่ารำคาญคือการปีนต้นไม้ 18 ชั้นหรือต้นแบบเพื่อค้นหาคำจำกัดความที่แท้จริงของวิธีการที่ทำสิ่งที่น่ารำคาญจริงๆโดยเฉพาะอย่างยิ่งหากมีการแทนที่
Erik Reppen

6

ทำให้มันทำงานแล้วทำให้สมบูรณ์

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

หวังว่านี่จะทำให้คุณมีเวลามากขึ้นในการกลับไปที่ปัญหาเหล่านี้และทำให้พวกเขาสมบูรณ์แบบ

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

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


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

5

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

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

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

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

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


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

@PhillW - เห็นด้วยอย่างยิ่ง. แก้ไขตามนั้น
นาธานลอง

4

หากเป็นข้อผิดพลาดให้ทำโดยเร็วหากเป็นคุณลักษณะใหม่ใช้เวลาของคุณ

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

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

บริษัท ที่ดีที่สุดเข้าใจว่าซอฟต์แวร์ที่ดีต้องใช้เวลาและฝีมือการผลิต


3

เมื่อเกิดเหตุฉุกเฉินให้สร้างโซลูชันการแก้ไข สร้างบั๊กใหม่ในการติดตามบั๊กที่กล่าวถึงสิ่งนี้ ทำให้ถูกต้องเมื่อใดก็ตามที่คุณมีเวลา


5
ปัญหาคือแทบจะไม่เคยมีเวลาเลยนั่นเป็นปัญหาและข้อผิดพลาดประเภทนี้จะได้รับความสำคัญต่ำสุดเสมอ
Flot2011

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

3

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


3

นี่เป็นแผนการที่ดี:

  1. ทำให้แผนทำในสิ่งที่ถูกต้องใช้เวลาเท่ากันทั้งหมดกับทำตามขั้นตอน
  2. ปรับเวลาของคุณให้เหมาะสมจนกว่าสภาพแวดล้อมของคุณจะมีความสุข รักษาคุณภาพ
  3. ???
  4. ความสำเร็จ

1

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

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

ถ้าฉันทำอย่างนั้นบ่อยครั้งพอรหัสประจำของฉันจะดีขึ้นอย่างต่อเนื่องฉันคิดว่า


1

ซอฟต์แวร์เป็นเรื่องแปลกและกระบวนการพัฒนาซอฟต์แวร์นั้นน่ากลัว

แตกต่างจากสิ่งส่วนใหญ่ในชีวิตจริง แต่ชอบทำสิ่งต่าง ๆ กับคอมพิวเตอร์

เร็วกว่าเชื่อถือได้มากกว่า

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

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


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

-1

งานไม่เหมาะกับคุณ

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

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

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