คุณเขียนโค้ดไม่ดีเมื่ออยู่ภายใต้แรงกดดันหรือไม่? [ปิด]


14

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


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

คำตอบ:


31

ในคำว่าใช่ ใครก็ตามที่บอกคุณเป็นอย่างอื่นอาจเป็นคนดีผิด

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

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


ฉันจะให้บวก 10 สำหรับโพสต์กล่าวเป็นอย่างดี
maz3tt

16

หากทีมอยู่ในภาวะวิกฤติแล้วมีบางอย่างผิดปกติ

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

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

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

จากโจเอลซอฟแวร์ท่อเทปโปรแกรมเมอร์

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


1
สิ่งเดียวที่ฉันจะเปลี่ยนคือคำว่า "คุณ" ในประเด็นหลักของคุณ ฉันขอยืนยันว่าสำหรับสมาชิกทุกคนในทีมของคุณมีหลายสิ่งหลายอย่างที่อาจผิดพลาดได้และสำหรับการพึ่งพาจากภายนอกทุกคนมีปัจจัยชี้แจงสิ่งต่าง ๆ ที่อาจผิดพลาดได้ หรือในทางกลับกัน ;)
Wonko the Sane

2
@ysolik: ดู rewording อาจไม่ใช่ความผิดของคุณที่การวางแผนหรือการประเมินเป็น FUBAR'ed
Josh K

2
@ysolik: คุณเขียนโค้ดที่เหมาะน้อยลงเพื่อให้ตรงตามกำหนดเวลาและอธิษฐานคุณจะได้รับโอกาสแก้ไขในภายหลัง ด้วยการวางแผนที่เหมาะสมสิ่งนี้ไม่เคยเกิดขึ้น
Josh K

2
อย่าพูดว่าอย่า ... :)
วอนโก the Sane

3
@Wonko: ถูกต้องด้วยการวางแผนที่เหมาะสมสิ่งนี้ไม่ค่อยเกิดขึ้น
Josh K

7

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

บางคนจะพูดว่า"เอ้อนั่นคือชีวิตคุณต้องเรือ"แต่ฉันไม่เห็นด้วยกับทัศนคตินี้

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

ทุกอย่างดีมากพูดว่า"คุณต้องเรือ"แต่มีความแตกต่างระหว่างการดูที่มีประสิทธิภาพและดูเหมือนว่าเป็นคนงานเลอะเทอะ



2

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

ฉันจะทำงานกับมันแม้ว่า


ทำให้ทำงานถูกต้องทำให้เร็ว :) c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast
Juha Untinen

1

ฉันไม่เชื่อว่าฉันเขียนโค้ดที่แย่กว่านั้น แต่ฉันส่งมอบผลิตภัณฑ์ที่แย่กว่านั้น

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

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


0

ขึ้นอยู่กับ

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

รหัสไม่ดีกำลังจะมา!

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


Oooh - ความคิดเห็นที่ดียกเว้นประโยคสุดท้ายที่ทำให้ฉันกลัวเล็กน้อย
Wonko the Sane

ดี. ไม่ได้หมายความว่าพวกเขาจะไม่มีวันเขียน มันน่ากลัว แต่ฉันคิดว่ามันช่วยให้ฉันจดจ่ออยู่กับมัน และมีการทดสอบหน่วยไม่ครอบคลุม 100% มากกว่า 66%
ElGringoGrande

ปัญหาเดียวก็คือว่า 34% ที่ไม่ครอบคลุมคือรหัสใหม่ที่คุณใส่รีบและไม่ใช่รหัสที่จัดตั้งขึ้นแล้วที่ไม่น่าจะเป็น (ทั้งหมด) ทำลายการเปลี่ยนแปลงของคุณ ไม่ได้บอกว่าเรายังไม่ได้ทำมันทั้งหมด แต่เป็นข้อเสนอที่น่ากลัว
Wonko the Sane

0

ฉันรู้จักใครที่ไม่เคยเขียนโค้ดที่ไม่ดีภายใต้ความกดดัน เขายังมีถั่ววิเศษที่คุณอาจสนใจ

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

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