ในขณะที่ฉันไม่สามารถเขียนรายการข้อผิดพลาดทั้งหมดบ่อยครั้งการตั้งคำถามและต่อยเป็นปัญหาที่เกิดขึ้นในตัวเองมักจะใช้เวลาทำงานมากจนเมื่อถึงเวลาที่คุณเตรียมไว้อย่างเพียงพอคุณก็ตอบคำถามของคุณเองได้มากขึ้น เวลากว่าที่คิดไว้เป็นอย่างอื่น
ฉันรู้สึกเหมือนกันกับ> 75% ของคำถามที่ฉันโพสต์
อย่างไรก็ตามนั่นไม่ใช่ข้อโต้แย้งที่ไม่รบกวนการทำเช่นนั้น นี่คือการแก้จุดบกพร่องเป็ดยางได้อย่างมีประสิทธิภาพ คุณกำลังค้นหาคำตอบสำหรับคำถามที่คุณคิดว่าอาจทำให้คุณไม่สามารถตอบคำถาม ซึ่งหมายความว่าคุณกำลังคิดเกี่ยวกับปัญหาจากมุมมองของคนอื่น ซึ่งหมายความว่าคุณกำลังคิดถึงปัญหาจากทุกทิศทางที่เป็นไปได้ ซึ่งเป็นวิธีที่ดีที่สุดในการค้นหาข้อบกพร่อง
ที่ดีที่สุดคุณได้พิสูจน์แล้วว่าคุณไม่สามารถคิดถึงคำตอบได้ที่นี่ ที่ "แย่ที่สุด" คุณจะต้องตอบคำถามของคุณเอง คำนึงถึงคำพูดเพราะมันไม่เลวเลย มันก็อาจจะเป็นเวลาน้อยที่ไม่มีประสิทธิภาพ แต่การแก้ปัญหาที่เกิดขึ้นอย่างช้า ๆ จะดีกว่าได้อย่างรวดเร็วการตัดสินใจที่จะไม่จัดการปัญหา คุณจะได้เร็วขึ้นในการแก้ปัญหาในที่สุด
กรณีในจุด:
เมื่อฉันเป็นนักพัฒนาที่มีประสบการณ์ฉันจัดการกับหน้า eror ของ ASP.Netหลายครั้ง ฉันต้องการให้ Google ส่งข้อความเพื่อหาว่ามีอะไรผิดปกติ อาจใช้เวลาหลายชั่วโมงก่อนที่ฉันจะได้คำตอบที่ถูกต้อง โดยทั่วไปฉันทำผิดพลาดทุกอย่างในหนังสือและต่อมาต้องจัดการกับผลที่ตามมาจากการแก้ไขข้อบกพร่อง
ตอนนี้เมื่อมีข้อผิดพลาดปรากฏขึ้นฉันรู้แล้ว "ผู้ต้องสงสัยปกติ" ของสิ่งที่อาจก่อให้เกิดปัญหา รายการ "ผู้ต้องสงสัยปกติ" ทางจิตของฉันขึ้นอยู่กับปัญหาที่ฉันพบบ่อยที่สุดในอาชีพของฉันอย่างมีประสิทธิภาพ หากไม่ได้ใช้งาน Googling ชั่วโมงที่ไม่มีเวลาอย่างมีประสิทธิภาพครั้งแรกฉันจะไม่ทำรายการทางจิตนี้ แต่ตอนนี้ฉันมีรายการทางจิตนั้นฉันเร็วขึ้นมากในการแก้ไขปัญหา
นอกจากนี้ในขณะที่ฉันไม่สามารถจับมันได้ แต่การตอบสนองของการสนทนาฟรีไม่สามารถจับคู่ได้โดยการสนทนาทางอินเทอร์เน็ตในรูปแบบใด ๆ ที่ฉันนึกออก
ฉันไม่เห็นด้วยที่นี่ คุณพูดถูกว่าการสื่อสารทางอินเทอร์เน็ตนั้นตอบสนองน้อยลง แต่คุณ (ในความเห็นของฉัน) ผิดว่าเรื่องนี้ไม่ดีสำหรับคุณ
ในฐานะนักพัฒนาคนเดียวคุณจะต้องพึ่งพาการแก้ไขจุดบกพร่องของเป็ดยาง ส่วนประกอบที่สำคัญสำหรับการทำ RDD คือคุณคาดหวังว่าคำถามที่เป็ดยางอาจมีให้คุณ เห็นได้ชัดว่าคุณไม่สามารถเชื่อในสิ่งที่เป็ดยางพูดได้
เมื่อจัดการกับระบบการส่งข้อความช้า (โพสต์บน StackOverflow หรือการสื่อสารโดยการเขียนจดหมาย) คุณจะได้รับแรงจูงใจโดยเนื้อแท้เพื่อให้แน่ใจว่าคุณทำให้ถูกต้องในครั้งแรก เพราะจำเป็นต้องแก้ไขข้อผิดพลาดจะเป็นกระบวนการที่ช้าและยากลำบาก
จากการเปรียบเทียบให้พิจารณาว่าระบบการส่งข้อความรวดเร็ว (การสนทนาการส่งข้อความทันที) คุณสามารถแก้ไขบางสิ่งได้ทันที ความสามารถในการแก้ไขบางสิ่งบางอย่างได้อย่างรวดเร็วทำให้ผู้คนมีแรงจูงใจน้อยลงเพื่อให้แน่ใจว่าถูกต้อง
สี่จุดในกรณี:
- เมื่อฉันสร้างรายการวิเคราะห์ / สิ่งที่ต้องทำส่วนบุคคลของฉันเองในฐานะนักพัฒนาฉันยังคงใช้ปากกาและกระดาษ ฉันสังเกตเห็นว่าฉันคัดค้านสมมติฐานและความเท็จเมื่อฉันพิมพ์บันทึกของฉันเพราะใจของฉันคิดว่า "ฉันสามารถแก้ไขได้ในภายหลัง" อย่างไรก็ตามการแก้ไขสิ่งที่คุณเขียนลงบนกระดาษนั้นเป็นเรื่องน่ารำคาญคุณต้องตัดสิ่งต่าง ๆ ออกและเขียนระหว่างบรรทัดและเอกสารดูแย่กว่านั้นมากเมื่อมันเขียนบนกระดาษ การเขียนบนกระดาษทำให้ฉันตรวจสอบตัวเองก่อนตัดสินใจเขียน สิ่งนี้จับความเข้าใจผิดได้เร็วก่อนที่ฉันจะเขียนโค้ดที่จะทำให้เกิดข้อบกพร่อง
- คุณยายของฉันเป็นเลขานุการ (อายุของเครื่องพิมพ์ดีด) การพิมพ์ผิดในเอกสารที่เป็นทางการหมายถึงต้องพิมพ์หน้าทั้งหมดอีกครั้ง ป้าของฉันเป็นเลขา (อายุของโปรแกรมประมวลผลคำ) เธอสามารถพึ่งพาเครื่องตรวจตัวสะกดอัตโนมัติและสามารถแก้ไขข้อผิดพลาดได้ง่ายและใช้ความพยายามน้อยที่สุด คุณยายของฉันมีข้อผิดพลาดในการพิมพ์และสะกดผิดน้อยกว่าเมื่อเปรียบเทียบกับป้าของฉัน
- วิดีโอเกมที่ใช้พิมพ์บนตลับหมึก การแก้ไขข้อผิดพลาดหลังจากรีลีสเป็นไปไม่ได้ คุณต้องพิมพ์ใหม่ตลับหมึกทั้งหมดแจกจ่ายให้กับผู้ขายทั้งหมดและหวังว่าผู้ขายจะสามารถติดต่อกับลูกค้าที่ซื้อเกมแล้ว มันจะมีค่าใช้จ่ายตันเงิน (สองเท่าของต้นทุนการผลิตทางกายภาพ) และจะยังไม่ถึงลูกค้าบางราย ตอนนี้ในยุคของอินเทอร์เน็ตแพทช์นักพัฒนาเกมได้แสดงให้เห็นว่ามีการลงทุนน้อยกว่ามากในการทดสอบเกมของพวกเขาเพื่อให้พวกเขาสามารถหลีกเลี่ยงข้อผิดพลาดในการปล่อยวันได้เพราะมันง่ายกว่ามาก ๆ ผลกระทบของการทำผิดพลาดจะลดลงจนถึงจุดที่ดีกว่าในการแก้ไขปัญหาหลังจากได้รับจริงเมื่อเทียบกับการทดสอบทุกอย่างที่เป็นไปได้ ข้อผิดพลาดที่อาจเกิดขึ้น
- ฉันเคยอาศัยอยู่ในอพาร์ทเมนต์ชั้นสามไม่มีลิฟท์และต้องจอดที่ถนนหนึ่งหรือสองแห่งจากอาคารของฉัน ฉันแทบจะไม่ลืมที่จะหยิบอะไรจากรถของฉัน ตอนนี้ฉันอาศัยอยู่ในบ้านที่มีรถยนต์อยู่ข้างๆฉันในถนนรถแล่น ฉันลืมที่จะใช้สิ่งจากรถของฉันตลอดเวลา
ความคิดพื้นฐานที่นี่เป็นที่ระบบแลกเปลี่ยนยาก incentivizes คนที่จะทำให้การแลกเปลี่ยนที่ถูกต้องและความเป็นจริงการตรวจสอบ ความรุนแรงของการลงโทษ (= กระบวนการแก้ไขที่ยาก) สอนให้คุณไม่ทำผิดพลาด
นอกจากนี้การซ่อนรายละเอียดเพื่อถามคำถามที่กำหนดไว้อย่างดีช่วยลดความเป็นไปได้ที่จะมีคนเจอปัญหาที่คุณไม่ได้คิด
เมื่อคุณสร้างMCVEคุณไม่ควรสร้างมันและโพสต์ไว้ในคำถาม คุณควรทำด้วยตัวเองก่อนเพื่อที่จะแยกปัญหาได้ จากนั้นเมื่อคุณคิดว่าปัญหาจะไม่สามารถลดได้อีกต่อไปและคุณยังไม่เห็นสาเหตุ จากนั้นคุณมีคำถามที่ถูกต้องสำหรับ StackOverflow
กรณีในจุด:
ฉันมักจะมี Visual Studio ที่สองที่ทำงานด้วยแอปคอนโซลที่เรียกว่า Sandbox เมื่อใดก็ตามที่ฉันพบปัญหาทางเทคนิคฉันจะคัดลอกรหัสที่กระทำผิดลงในกล่องทรายและเริ่มเล่นกับมัน
- จะเกิดอะไรขึ้นเมื่อฉันเปลี่ยนการตั้งค่านี้
- ฉันสามารถทำให้เกิดปัญหาซ้ำได้หรือไม่ถ้าฉันย่อรหัสให้สั้นลง
- การตั้งค่าใดที่ทำให้เป็นไปได้ / เป็นไปไม่ได้ที่จะทำให้เกิดปัญหาอีกครั้ง
ใน 90% ของกรณีฉันพบสาเหตุของปัญหาเพราะ sandbox ช่วยให้ฉันดูรหัสที่ละเมิดโดยไม่ถูกรบกวนโดยบริบทโดยรอบ (หรือตัวอย่างเช่นความไม่แน่นอนเกี่ยวกับค่าที่มาสำหรับส่วนต่าง ๆ ของรหัส
ในอีก 10% ของกรณีฉันเหลือรหัสขั้นต่ำในการทำซ้ำปัญหาซึ่งทำหน้าที่เป็นตัวอย่างที่สมบูรณ์แบบเพื่อโพสต์บน StackOverflow
ท้ายสุด แต่ไม่ท้ายสุดฉันไม่ต้องการโพสต์โปรเจคทั้งหมดเพื่อให้โลกมองไปที่นิรันดร์ที่เหลือด้วยเหตุผลที่ชัดเจน
เมื่อคุณมี MCVE แล้วคุณไม่ควรมีข้อมูลส่วนบุคคล (หรือ บริษัท ) มากนัก หากคุณทำเช่นนั้นเนื่องจากรหัสมีน้อยจึงเป็นเรื่องง่ายที่จะเปลี่ยนชื่อสิ่งต่าง ๆ เป็นตัวอย่าง foo / bar / baz ขั้นพื้นฐานเพิ่มเติม