ความผิดพลาดครั้งใหญ่ที่สุดที่คุณเคยทำ [ปิด]


33

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

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

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

ฉันรู้ว่าคำถามนี้คล้ายกับคำถามใน Stack Overflow แต่คำถามที่ฉันพบดูเหมือนจะได้รับคำตอบทั่วไปแทนที่จะเป็นเรื่องจริง :)

อะไรคือข้อผิดพลาด / ความผิดพลาดในการเขียนโค้ดที่ยิ่งใหญ่ที่สุด ...


6
คำถามกินเนส!
Junior M

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

ง่าย ๆ สำหรับฉัน จ่ายเงินเพื่อถอนการลงทุน แต่เปลี่ยนเป็นเซ็นต์สองครั้ง จ่าย 3 ล้านแทน 30k วิ่งขึ้น - SQL ไม่ดีที่ข้อ แจ้งเตือนผู้คน 4k ว่าการลงทุน $ 1 - $ 10 เพิ่มขึ้น $ 1800 ข้ามคืน เห็นได้ชัดว่าลูกค้าเหล่านี้บางคนไปและใช้เงิน กู้คืนได้ค่อนข้างรวดเร็วทางการเงิน ความมั่นใจและความรู้สึกผิดที่แตกสลายไม่เคยหายไปไหน วิธีการกู้คืน: รับผิดชอบ ยอมรับความผิดพลาดของคุณ อย่าตำหนิสิ่งอื่นใดแม้ว่าจะมีปัจจัยสนับสนุน สิ่งนี้ได้พบกับความเข้าใจและความพยายามของทีมในการแก้ไข ลูกค้าชื่นชมความซื่อสัตย์
Reasurria

คำตอบ:


54

การออก SQL UPDATE ด้วย 'WHERE' WHERE Clause ที่ตรงกับทุกอย่าง

เรียนรู้บทเรียน: ออกเลือกก่อนเสมอเพื่อดูสิ่งที่จะมีการเปลี่ยนแปลง


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

2
โอ้ฉันทำอย่างนั้นแล้ว น่ารังเกียจมาก ...
ล็นทรอน

4
ฮ่าฮ่าฉันคิดว่าทุกคนที่มี SQL ภายใต้เข็มขัดของพวกเขาได้ทำสิ่งนี้ในบางครั้งฉันรวม
billy.bob

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

13
ฉันทำอย่างนั้นครั้งเดียวเพื่อรีเซ็ตรหัสผ่านของใครบางคน หลังจากที่ฉันตั้งรหัสผ่านของทุกคนให้เหมือนกันฉันก็แค่บอกหัวหน้าว่าฝ่ายสนับสนุนด้านเทคนิคจะได้รับโทรศัพท์จำนวนมากและเราควรบอกผู้โทรว่าเราต้องเปลี่ยนรหัสผ่านด้วยเหตุผลด้านความปลอดภัย
Barry Brown

36

ความผิดพลาด

ใช้เวลาสามวันในก้อนอันนี้:

if($func == "remove")
{
    $p->comments[$index]->removed = true;
    $p->save();
}
else if($func == "approve");
{
    $p->comments[$index]->approved = true;
    $p->comments[$index]->removed = false;
    $p->save();
}

เห็นข้อผิดพลาดหรือไม่ else ifมันอัฒภาคในตอนท้ายของการ ฉันไม่ทราบสาเหตุที่ความคิดเห็นที่ลบออกของฉันไม่ได้ลบออก ขุดลงไปในฐานข้อมูล AJAX ขอผมก็ใช้ตัวแปร POST มีerror_log'และทุกที่alerts ลงเอยด้วยการเขียนวิธีการใหม่และใช้งานได้ จากนั้นฉันก็แตกต่างกับเวอร์ชั่นดั้งเดิมและสังเกตเซมิโคลอน

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


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

24
เป็นชื่อเรื่อง (ตั้งใจ) เล่นสำนวน : o
Agos

3
@Rogue Coder: ความแตกต่างระหว่างคำพูดเดี่ยวและคู่ที่มีขนาดเล็กหายไป มันเป็นเวลาที่ผิดในการใช้รอบสมองกังวลเกี่ยวกับมัน ดูการทดสอบที่ด้านล่างของphpbench.com
Joeri Sebrechts

2
@ back2dos: เอ่อ ... ถูกต้อง ดังนั้นคุณแนะนำให้ทิ้งภาษาที่กล่าวถึงทั้งหมดลงในความโปรดปรานของ haXe? สิ่งที่ปรากฏตัวครั้งแรกในปี 2005? ไปข้างหน้าด้วยสิ่งนั้น
Josh K

10
ขอบคุณสำหรับการโต้เถียงในสไตล์ One True Brace +1
eswald

28

การคิดว่าการเขียนโปรแกรมส่วนใหญ่เกี่ยวกับการสร้างสิ่งใหม่ ๆ ที่เป็นที่นิยมตั้งแต่เริ่มต้น


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

2
ยังมีรหัสใหม่มากมายให้เขียน โปรเจ็กต์โอเพนซอร์สจำนวนมากต้องการการเข้ารหัสตั้งแต่เริ่มต้นซึ่งใช้ฟังก์ชันการทำงานเดียวกันกับระบบปิด
PP

23

ความผิดพลาดที่ใหญ่ที่สุดของฉันคือการคิดว่าการเขียนโปรแกรมเป็นเงินที่ง่าย ...


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

1
คุณทำคะแนนได้ดี ฉันไม่ได้เขียนโปรแกรมเพื่อเงิน แต่จริงๆฉันคิดว่ามันจะง่ายกว่าที่จะอยู่จากมัน การเขียนโปรแกรมเป็นความหลงใหลของฉันและฉันจะทำอย่างนั้นแม้ว่าฉันจะต้องจ่ายเงิน
Marcelo de Aguiar

4
@johnc เดียวกันจะไปสำหรับอาชีพส่วนใหญ่ ฉันไม่เข้าใจคนที่ไปมหาวิทยาลัยเพื่อ "เรียนรู้การเขียนโปรแกรม" อย่างแท้จริง ฉันเริ่มต้นเมื่อฉันอายุ 14 กับ K&R ฉันไปมหาวิทยาลัยเพื่อ "เรียนรู้อิเล็คทรอนิคส์" - แต่เดาสิว่าฉันจะเป็นโปรแกรมเมอร์ได้อย่างไร นักดนตรีที่ดีที่สุดสอนตัวเอง โปรแกรมเมอร์ที่ดีที่สุดสอนตัวเอง นั่นคือชีวิต.
PP

เอเมนพี่ชายอาเมน
Mister

23

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

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

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


15
อุ๊ยตาย หมายเหตุถึงตนเอง: ทำการสำรองข้อมูลเสมอ: แม้ว่าจะมีข้อมูลสำรองอยู่แล้วก็ตาม
Kramii Reinstate Monica

1
@Karmii: คำแนะนำที่ดีที่สุด
Chris

@ Kramii - ดีใจที่ฉันได้เรียนรู้บทเรียนที่เร็วในอาชีพของฉัน
JohnFx

คุณไม่โดนไล่ออกเหรอ?
Mateen Ulhaq

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

15

เมื่อ phpmyadmin ถามว่า:

"คุณกำลังจะทำลายฐานข้อมูลที่สมบูรณ์! คุณต้องการ DROP DATABASE xxx หรือไม่?"

ฉันกด Enter


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

6
@Hugo: +1 ฉันมีอาจารย์ที่ uni (เช่น Unix / sysadmin ฐานข้อมูล) ที่เคยพูดว่า "เมื่อใดก็ตามที่คุณทำอะไรที่ร้ายแรงเอามือของคุณออกจากคีย์บอร์ดและนั่งบนพวกเขาเป็นเวลาประมาณสิบวินาทีและคิดว่าจะเกิดอะไรขึ้น"
Bobby Tables

1
@Hugo: ฉันไปได้ไกลกว่า - "คุณกำลังจะทำลายฐานข้อมูลที่สมบูรณ์ถ้าคุณต้องการ DROP DATABASE xxx ให้พิมพ์ DELETE:"
Loren Pechtel

3
@Hugo @Loren Pechtel - "คุณกำลังจะทำลายฐานข้อมูลที่สมบูรณ์! การค้นหาเว็บในการเข้าสู่ระบบของคุณปรากฏขึ้นหลายครั้ง 'lol' และดังนั้นการกระทำนี้ถูกปฏิเสธโปรดดูผู้ดูแลระบบของคุณหรือเรียนรู้ที่จะสื่อสาร"
Detly

15

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

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

กลายเป็นหนึ่งในวิธีการค้นหาที่ไม่เป็นอันตรายที่ฉันเพิ่มคือการเรียกใช้บริการจากระยะไกลซึ่งส่งผลให้มีการกดฐานข้อมูลอย่างน้อยหนึ่งครั้ง ในการเปรียบเทียบแต่ละครั้ง ดังนั้นในหน้าเว็บที่มีการเรียงลำดับมากกว่า 2,000 รายการฉันกำลังสร้างความนิยม ~ 6000 (nlogn) DB อุ๊ยตาย


ฐานข้อมูลมีความชัดเจนในรหัสของคุณหรือไม่หรือเกิดขึ้นในวิธีการ / คุณสมบัติที่คุณโทรหา
dbkk

การกดฐานข้อมูลถูกซ่อนอยู่หลังวิธีที่ดูเหมือนเป็น getter ธรรมดา: ฉันเพิ่มการเรียก myObj.getFoo () ในเมธอด comparTo JavaDoc บนคลาสย่อยที่เกี่ยวข้องไม่ทราบถึงความเป็นไปได้ของการเข้าใช้ DB แต่ JavaDoc บนอินเตอร์เฟส myObj (ซึ่งเป็นสิ่งที่ฉันดูเมื่อเขียนโค้ด) ไม่ได้กล่าวถึงการจัดเรียง ในทั้งสองกรณีฉันคิดว่าเป็นการสาธิตที่ชัดเจนของ (a) การทดสอบที่ไม่เพียงพอในนามของฉันและ (b) จะเกิดอะไรขึ้นหากคุณไม่ปฏิบัติตามอนุสัญญาการตั้งชื่อที่ดี
Yevgeniy Brikman

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

15

ฉันทำสิ่งนี้แล้ว:

rm -rf /bin

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

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

ความดีบางอย่างมาจากประสบการณ์ ฉันเรียนรู้วิธีลิสต์ไดเรกทอรีโดยไม่ต้องใช้คำสั่ง / bin ใด ๆ

echo *

+1 เทคนิคการเรียนรู้เช่นการจำลอง ls และ cat โดยใช้เชลล์ Bourne สร้างจากโหมดผู้ใช้คนเดียวบนระบบ DEC-BSD
Arcege

11

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

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

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

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

ไม่นานนักที่โทรศัพท์จะดังขึ้นที่สำนักงานของลูกค้า ...

นั่นเป็นความผิดพลาดเพียงอย่างเดียวที่ทำให้ฉันขอลาออก


+1 สำหรับข้อมูลจริงมีขนาดใหญ่กว่าข้อมูลตัวอย่าง :-(
nakedfanatic

IMO นี่คือหนึ่งในสิ่งที่แย่กว่านั้น> _ <
sevenseacat

7

ฉันเคยใช้การเข้าร่วมไขว้โดยไม่มีตัวกรอง ทำงานได้ดีบนฐานข้อมูลทดสอบด้วยข้อมูลเพียงเล็กน้อย เมื่อมันถูกปรับใช้มันจะจบลงด้วยแถว ~ 60M ในแบบสอบถามเฉลี่ย


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

7

ฉันตรวจพบเลเซอร์สแกนเนอร์ราคา $ 100,000

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

เมื่อหลักสุดท้ายคือ 0 มันจะถูกตัดดังนั้นแกน Z คือ 10 เท่า

เกิดความ Hillarity



5

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


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

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

4

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

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

ด้านที่ดีคือในที่สุดหัวหน้าก็ผุดขึ้นในกล่องพัฒนา


3

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

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

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

/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174


7
นี่น่าจะเป็นวิธีที่ผู้คนจำนวนมากเรียนรู้เมื่อมันเหมาะสมที่จะใช้ GET และเมื่อมันเหมาะสมที่จะใช้ POST
Oli

เห็นด้วยฉันกำลังจะเริ่มต้นพัฒนาอินทราเน็ตใหม่และสิ่งนี้ทำให้การใช้ GET และ POST อย่างเหมาะสมอยู่ด้านบนสุดของข้อกำหนด ASP MVC ยังช่วยให้การดำเนินการนี้ง่ายและสะดวก
Chao

1
ไม่ใช่ความผิดพลาดของคุณแต่เป็นเรื่องที่ดีอย่างไรก็ตาม :-)
Dean Harding

3

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

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


1
พวกคุณไม่ทำผิดพลาด DB เคยโทรย้อนกลับ?
Jé Queue

@Xepoch นั่นจะช่วยได้ก็ต่อเมื่อคุณเริ่มทำธุรกรรม
CaffGeek

1
@Chad โดยทั่วไปเราไม่ควรสันนิษฐานว่าการรับส่งข้อมูลทั้งหมดควรเป็นการทำธุรกรรมโดยปริยาย?
Jé Queue

2
@Xepoch ไม่เคยคิด
CaffGeek

1
@Char ฉันมีการตั้งค่าส่วนตัวสำหรับการรักษาปฏิสัมพันธ์ DB ทั้งหมดภายในธุรกรรม ผู้ที่ไม่พวกเขามีความเสี่ยงหรือมีกรณีธุรกิจที่ไม่สนใจ สมมติฐานข้อกำหนดและ MANDATE คือเราจะเริ่มต้นและบำรุงรักษาโครงการโค้ดด้วยการจัดการฐานข้อมูลธุรกรรม
Jé Queue

3

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

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

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


8
ประณามฉันต้องการทำงานกับหุ่นยนต์! สิ่งที่ฉันทำตลอดทั้งวันคือการสร้างเว็บไซต์ที่มีหมัด
Dan Ray

2

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

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


2

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


ฉันมีเพื่อนร่วมงานทำสิ่งนี้ มีเพียงเขาเท่านั้นที่คิดว่าเขาทิ้งสำเนาในท้องที่ของเขาไม่ใช่ของที่แยง พวกเราทำงานกันแล้วก็ได้ยินว่าเขาไป 'OH SH ** !!!!' นั่นเป็นช่วงบ่ายที่สนุกสนาน
Tyanna

2

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


ไม่ใช่ความผิดของฉัน แต่เกี่ยวข้อง บริษัท ที่ฉันทำงานให้กับหนึ่งในเว็บเซิร์ฟเวอร์ของพวกเขาถูกบุกรุกทำให้เข้าถึงรูทเซิร์ฟเวอร์ของผู้ควบคุมเวอร์ชัน (DMZ? Whazda?) ซึ่งเขาได้ดำเนินการ "rm -r /" ทันที
jwenting

2

ใช้==แทนequalsการเปรียบเทียบสตริงใน Java


13
นั่นคือความผิดพลาดครั้งใหญ่ที่สุดที่คุณเคยทำ?
Chris

นี่เป็นปัญหาที่เกิดขึ้นใน Java อีกมากซึ่ง==เป็นการเปรียบเทียบการอ้างอิง ใน C # ==การเปรียบเทียบค่าสตริงเหมือนกับ.Equals() ที่กล่าวว่ามีความแตกต่างบางอย่างดูคำตอบของ Jon Skeet ที่นี่: stackoverflow.com/questions/3678792/…
Tim Goodman

2
@ Tim: ที่ยังคงไม่ได้คำตอบว่านี่คือ "ความผิดพลาดที่ใหญ่ที่สุดที่คุณเคยทำ" ... บางบริบทเพิ่มเติมเกี่ยวกับผลที่ตามมาอย่างน้อยจะดี ...
คณบดีฮาร์ดิ้ง

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

@Dean: มันไม่ใช่ความผิดพลาดที่ใหญ่ที่สุดที่ฉันเคยทำ ... ฉันแค่ชี้แจงความแตกต่างของพฤติกรรมที่นี่กับ C # vs Java
Tim Goodman

1

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


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

พวกเขามีแนวโน้มที่จะรับความผิดพลาดโง่ ๆ ไปตามทางเช่นที่ระบุไว้ที่นี่ซึ่งจะทำให้นักพัฒนาซอฟต์แวร์ระมัดระวังมากขึ้น
johnc

เพื่อให้ชัดเจนความผิดพลาดก็ไม่มีทัศนคติเช่นนั้น ความผิดพลาดนั้นบอกว่าคุณมีทัศนคติแบบนั้น
Dan Ray

ฉันอยากจะพูดแบบนี้กับหลาย ๆ คนในช่วงหลายปีที่ผ่านมา
Reasurria

1

เรื่องนี้เกิดขึ้นกับเพื่อนร่วมงานในเดือนนี้

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

ค่าใช้จ่าย: ค่าจ้าง SMS หนึ่งเดือน


นั่นถูก! :)
jwenting

1

ตามคำขอของผู้จัดการฉันคัดลอก/etc/sudoersจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง (แม้ว่ามันจะไม่สามารถแก้ไขปัญหาได้ในมือ แต่ก็อยู่ข้างๆ) น่าเสียดายที่ฉันเคยsudoย้ายไฟล์ที่คัดลอกไปแล้วโดยไม่ได้แจ้งว่าเจ้าของและการอนุญาตนั้นผิดอย่างสมบูรณ์ ณ จุดที่ไม่มีใครมีรากเปลือกเปิดไม่มีใครสามารถทำได้sudoและไม่มีใครสามารถเข้าสู่ระบบเป็น root /bin/falseเพราะเปลือกของมันถูกกำหนดให้ และเครื่องอยู่ในคลังข้อมูลระยะไกล ...


1

ฉันต้องการสร้างไฟล์ข้อมูลเมตาสำหรับแต่ละไฟล์ในไดเรกทอรี (เช่นสำหรับทุกไฟล์somedir/foo.binฉันต้องการสร้างไฟล์somedir/foo.bin.meta) ด้วยเหตุผลโง่ฉันตัดสินใจสร้างไฟล์โดยการเปิดและปิดการสตรีมไฟล์ผ่าน Python:

for fn in os.listdir(path):
    open(os.path.join(path, fn), 'w').close()

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

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


1

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

Aaaaanyway ฉันเปลี่ยน (เล็กน้อย) เป็นซอฟต์แวร์ ฉันอาจรอให้หน้าต่างบริการเปลี่ยน แต่ฉันคิดว่า "เฮ้มันต้องใช้เวลาหนึ่งนาทีในการเริ่มบริการใหม่อีกครั้งทำไมต้องกังวลฟอร์จูนสนับสนุนตัวหนา" ดังนั้นฉันจึงรีสตาร์ทโชคไม่ดีที่เธรดถูกล็อกดังนั้นฉันจึงไม่สามารถแทนที่ได้ เริ่ม panick ฉันตัดสินใจที่จะรีบูตเครื่องอย่างรวดเร็ว (ฉัน remoting ใน) น่าเสียดายที่ฉันตื่นตระหนกฉันคลิก "ติดตั้งการอัปเดตและปิดเครื่อง" แทน: P

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

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


1

อาร์ก, 23:00 น., ปิดห้องปฏิบัติการ, เร็ว, เร็ว ...

$ enscript -o midterm.hs midterm.hs
$ submit midterm.hs
Error: submission is empty

ไม่มีพระเจ้า! FFS ฉันหมายถึงคุณ PS ****!


ขอโทษสำหรับรูปแบบภาษามันเป็นสิ่งจำเป็นสำหรับความถูกต้อง
Orbling

0

บางครั้งก่อนเมื่อเขียนโค้ด JS ฉันไม่สามารถแยกความแตกต่างระหว่าง "1" (หนึ่ง) และ "l" "small L" แม้ตอนที่ฉันพิมพ์คำตอบนี้ทั้งคู่ก็แทบจะเหมือนกันในเครื่องมือแก้ไข!


ทำไมถึงลงคะแนน?
Gopi

0

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

page.vis? body = <body> <p> โอ้ที่รัก </p> </body>

และมันจะทำในสิ่งที่ดูเหมือน

โชคดีที่ฉันไม่มีผู้ใช้ (ถอนหายใจ) ดังนั้นฉันคิดว่ามันไม่ได้มีความเสี่ยงด้านความปลอดภัยมากเกินไป


0

อุบัติเหตุ TSQL อย่างแน่นอน - คำสั่ง TSQL มากเกินไปในหน้าต่างตัวแก้ไขเดียว เหนื่อยเล็กน้อยและผู้คนขัดจังหวะฉันซ้ายและขวาและฉันออกคำสั่งที่อัปเดตที่อยู่ระเบียน 47,000 เมืองรัฐและรหัสไปรษณีย์ แม้ว่าจะได้รับการแก้ไขในเวลาประมาณ 25 นาทีก็ตาม

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