กลายเป็นดีกว่า Bug-ผู้ให้บริการ


24

ฉันรักการเป็นโปรแกรมเมอร์ ที่นั่นฉันพูดมัน อย่างไรก็ตามด้วยที่กล่าวว่าฉันได้ตระหนักว่าเมื่อเร็ว ๆ นี้ว่าฉันไม่สามารถยืนแก้ไขข้อผิดพลาด เลย

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

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

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


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

10
อย่าเขียนบั๊กในโค้ดของคุณ ... แก้ปัญหาแล้ว
Michael Brown

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

1
@ พอลตอมลินฉันเข้าใจสิ่งที่คุณพูด ฉันรู้ว่านักพัฒนาบางคนที่รักการพัฒนาส่วนหน้า ... ฉันฉันชอบรหัสที่ไม่ใช่ UI ที่ดีที่สุด บางครั้งการเขียนโค้ดใหม่อาจทำได้ยากเพราะบางครั้งคุณได้รับ "บล็อกของนักเขียน"
Michael Brown

1
เป็นการยากที่จะวัด "ประสิทธิภาพ" ของการแก้ไขข้อบกพร่องเพราะคุณอาจใช้เวลามากในการค้นหาว่า "ไม่ใช่ปัญหา" เช่นเดียวกับ Edision ที่อ้างว่าได้กล่าวว่าเขาพบว่า "1,000 วิธีที่จะไม่ทำให้หลอดไฟ "และฉันคิดว่าการไม่แก้ไขมักจะให้คำแนะนำในการสอนให้คุณรู้ว่าเบาะแสสำคัญและงานแก้ไขข้อผิดพลาดในปัจจุบัน (และอนาคต)
Zeke Hansell

คำตอบ:


21

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

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

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

การรอนานสำหรับข้อเสนอแนะนั้นน่าเบื่อและลดระดับไม่ใช่การแก้ไขข้อบกพร่อง


เคยอ่าน Mythical Man-Month ไหม? เพียงแค่รอภาพจนกว่าจะถึงเช้าวันถัดไปและพยายามที่จะวิเคราะห์เนื้อหาการถ่ายโอนข้อมูลกองซ้อน / ลงทะเบียนที่มีอยู่ในช่วงเวลาที่ล้มเหลว ...
sq33G

@ sq33G หรือแย่กว่านั้นคือการมีทีมทดสอบของคุณในอินเดียที่คุณคุยด้วยทางอีเมลเท่านั้น (เรื่องจริง)
Garrett Hall

13

การแก้ไขข้อผิดพลาดเป็นทักษะที่สำคัญอย่างยิ่งที่คุณควรเรียนรู้ ฉันอ่านที่ไหนสักแห่งโดยปกติจะใช้เวลา 80% ในการแก้ไขปัญหา 20% ในแอปพลิเคชัน

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


1
สิ่งที่คุณเขียนนั้นเป็นความจริง อย่างไรก็ตาม 80% / 20% ของคุณเป็นจริงเพียงเพราะมีรหัสเส็งเคร็งมากในป่า โดยเส็งเคร็งฉันหมายถึงการออกแบบภายใต้หรือ over-architected หรือ mis-architected หรือเพียงแค่การเลอะเทอะธรรมดา (การเขียนโปรแกรมหัวแตก) ที่ถูกกล่าวว่าไม่มีอะไรผิดปกติกับนักพัฒนาต้องการพัฒนาเพื่อแก้ไขข้อผิดพลาด เพิ่มในความจริงที่ว่าซอฟต์แวร์ส่วนใหญ่ได้รับการออกแบบไม่ดีตั้งแต่เริ่มต้นและคุณได้ตั้งค่าตัวแก้ไขข้อบกพร่องส่วนใหญ่แล้วสำหรับความล้มเหลว
Wil Moore III

@wilmoore: คุณถูกต้องกับรหัสเส็งเคร็งและยังมีความต้องการที่เปลี่ยนแปลง
ManuPK

6

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

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


ฉันไม่เห็นด้วยอย่างยิ่งที่จะทำให้เกมเป็นตัวแก้ไขข้อบกพร่องส่วนใหญ่ในหนึ่งวันหรือสิ่งที่ชอบ ข้อบกพร่องบางอย่างเล็กน้อยที่จะแยกและแก้ไขเมื่อคุณรู้วิธีที่จะทำให้พวกเขา: วางค่านั้นลงในช่องนี้และดู: ความยาวที่เหลืออยู่ตอนนี้ไม่ถูกต้อง (บางทีคุณอาจนับไบต์แทนตัวอักษรและลืมเกี่ยวกับพื้นที่ด้านบนพูด U + 007F) อื่น ๆ (โดยเฉพาะอย่างยิ่งข้อบกพร่องที่เกี่ยวข้องกับสภาพการแข่งขันหรือการทำมัลติเธรด) สามารถใช้เวลาหลายวันในการทำซ้ำ แต่สำคัญเมื่อพวกเขาทำ เกิดขึ้นในสนาม พวกเขาทั้งสองรับประกันเพียงรายการเดียวในตัวติดตามบั๊ก
CVn

การนับบั๊กดังกล่าวเท่า ๆ กันนั้นหมายความว่าทุกคนจะแก้ไขข้อผิดพลาดง่าย ๆ มากกว่าการแก้ปัญหาการแข่งขัน .. แต่นั่นไม่ใช่กรณีที่ไม่มีการแก้จุดบกพร่อง :-) ไม่ปล่อยให้แมลง 'ยาก' พักผ่อนในสิ่งที่เรียบง่ายเป็นหัวข้อที่แตกต่างกันโดยสิ้นเชิง
Alexander Gessler

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

5

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

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

นอกเหนือจากนั้นบางครั้งการทำงานก็แค่นั้น ... ทำงาน


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

คุณต้องเขียนชุดคำสั่ง "error error handler" เพื่อช่วยให้คุณจับได้ ;-)
Zeke Hansell

2

ในสถานการณ์ประเภทนี้คุณต้องมีความท้าทายที่สร้างสรรค์ ปกติมันเขียนโค้ด แต่ที่นี่ไม่ใช่

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

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

ดังนั้นในระยะสั้นฉันจะพูดว่า "มักจะพัฒนา" :)


ฉันได้ยินคุณ. ฉันหวังว่าฉันจะทำบางสิ่งเพื่อทำให้สิ่งต่าง ๆ เป็นไปโดยอัตโนมัติ ฉันมีเซิร์ฟเวอร์และไคลเอนต์และฉันไม่สามารถทำให้ไคลเอ็นต์อัตโนมัติได้อย่างง่ายดาย มีหลายขั้นตอนในขั้นตอนการทำงานของสิ่งนี้และข้อบกพร่องหลายอย่างเกิดขึ้นระหว่างขั้นตอนดังนั้นฉันต้องทำขั้นตอน 30 วินาทีจากนั้นขั้นตอน 3 นาทีหรือย้อนกลับ บรรทัดล่างเป็นฝันร้ายที่น่ารัก> :)
Naftuli Kay

2

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

  1. เขียนการทดสอบหน่วยสำหรับชิ้นส่วนของรหัสที่ผิดปกติ ตรวจสอบให้แน่ใจว่าคุณมีการทดสอบการตรวจสอบการทำงานทั้งหมดที่ต้องการรวมถึงการทดสอบที่แยกพฤติกรรม buggy โดยเฉพาะ
  2. เขียนรหัสใหม่ที่ผ่านการทดสอบทั้งหมดที่คุณเพิ่งเขียน
  3. แทนที่รหัสเดิมด้วยรหัสใหม่
  4. รันการทดสอบการรวม นี่คือที่ที่คุณจะพบกับการรีบู๊ตเซิร์ฟเวอร์สามนาที แต่ควรลดลงหากคุณทำขั้นตอนที่ 1-3 ได้ดี
  5. Voila!

2

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

ฉันเห็นว่าการดีบักเป็นทักษะที่แตกต่างจากการเขียนโปรแกรมถึงแม้ว่าจะเกี่ยวข้องกัน โดยเฉพาะอย่างยิ่งการดีบักโปรแกรมแบบมัลติเธรดเกือบทั้งหมดแตกต่างจากการเขียน


1

หากการพัฒนาซอฟต์แวร์น่าเบื่อแสดงว่าคุณทำผิด กล่าวอีกอย่างว่ามันไม่ใช่ปัญหาของคุณ แต่เป็นปัญหากับแพลตฟอร์มและกระบวนการของคุณ คุณเคยมองหาตำแหน่งที่ใช้ภาษาไดนามิก (เช่น Python, Ruby, JavaScript) ซึ่งคุณไม่ต้องรอการรีสตาร์ทเซิร์ฟเวอร์หรือไม่?


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

1
@TK: ที่ บริษัท สุดท้ายของฉันเราประสบความสำเร็จอย่างยิ่งใหญ่ในการรวม Groovy เข้ากับกระบวนการพัฒนา Java ของเราเพื่อให้กระบวนการทำงานแบบแมนนวลโดยอัตโนมัติ มันไม่ใช่จาวา แต่มันก็ใกล้พอและมีประสิทธิภาพมากจนเรามีแรงผลักดันน้อยมาก
วินไคลน์

1

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

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

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

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


1

โปรแกรมเมอร์ส่วนใหญ่จะต้องจัดการกับปัญหาส่วนตัวในบางจุดในอาชีพของพวกเขา

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

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

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

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


1

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

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

ค้นหาข้อผิดพลาดนั้นและแก้ไข


1

สิ่งหนึ่งที่ฉันพบในหมู่เพื่อนร่วมงานและผู้ที่รู้จักดีว่า "debuggers / bug fixers / แก้ปัญหา" ก็คือพวกเขาชอบแก้ปริศนา นั่นอาจหมายถึงปริศนาอักษรไขว้เกมจำนวน (เช่น Sudoku) และปริศนาลอจิกเป็นต้น ...

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

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

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


0

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

แล้วคุณจะทำให้มันสนุกได้อย่างไร ฉันตอบไม่ได้สำหรับคุณเพราะฉันนึกไม่ออกว่าเรือของคุณลอยอยู่ที่อะไร สำหรับฉันฉันเป็นเครื่องมือเล็ก ๆ น้อย ๆ ดังนั้นคำตอบก็คือมีห่วงโซ่เครื่องมือที่เชื่อถือได้มากและกระบวนการพัฒนาที่ยืดหยุ่นซึ่งทั้งหมดนี้มีส่วนทำให้การแก้ไขข้อผิดพลาดน้อยลงและเป็นปัญหาที่ต้องแก้ไข อย่างรวดเร็ว. ฉันกำลังพัฒนาส่วนใหญ่ใน C # และฉันมักจะมองหาเครื่องมือที่จะลบเวลาน่าเบื่อเสียส่วนของการเขียนซอฟต์แวร์ ผมใช้วิธีการทดสอบการพัฒนาครั้งแรกที่ได้รับการสนับสนุนด้วย BDD API ดีมากเรียกว่าStoryQ ฉันใช้Resharperเพื่อทำให้การรีแฟคเตอร์และ StyleCop ของฉันเป็นแบบอัตโนมัติมากขึ้นเพื่อเก็บฝาบนสิ่งต่าง ๆ เช่นสไตล์การเข้ารหัส สมาชิกใหม่ล่าสุดของฉันในกลุ่มเครื่องมือได้รวมอยู่ด้วยNCrunchที่รันการทดสอบของฉันอย่างต่อเนื่องและพร้อมกันในพื้นหลังในขณะที่ฉันเขียนโค้ดและมันก็เป็นNCrunchที่ได้พิสูจน์แล้วว่าเป็นผู้เปลี่ยนเกม

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

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