- การดีบักเป็นทักษะที่แทบจะจำเป็นสำหรับนักพัฒนา
- การดีบักให้ความสำคัญกับ กรอบความคิดว่าจะเข้าหาอย่างไร
- การดีบักคือกระบวนการค้นหาสาเหตุของปัญหาโดยอาศัยสถานการณ์และข้อมูลที่มีอยู่
- ผู้เขียนอธิบายสิ่งนี้ว่าเป็นสัญชาตญาณ
- สัญชาตญาณคือการเชื่อมโยงความรู้ที่เรามีกับปัญหา
- ประสบการณ์ทำหน้าที่เป็นทางลัดที่ทำให้ความรู้กลายเป็นสัญชาตญาณ
- นักพัฒนามักจะจำกัดความเป็นไปได้ให้แคบลงโดยสัญชาตญาณ เพื่อหาสาเหตุของพฤติกรรมที่ไม่คาดคิด
- ผู้เขียนมองว่าการค่อย ๆ จำกัดขอบเขตลงทีละอย่างโดยยึดหลักการจะมีประสิทธิภาพ
- แนะนำ 4 ขั้นตอนในการค้นหาปัญหา
- ขั้นแรก ตั้งข้อสงสัย
- ทุกอย่างไม่ว่าจะเป็นโค้ด ล็อก ข้อความแสดงข้อผิดพลาด ข้อมูลมอนิเตอร์ริง ข้อกำหนด หรือฮาร์ดแวร์ ล้วนเป็นการรวบรวมข้อมูลเพื่อแก้ปัญหา
- การทำเช็กลิสต์จะช่วยได้
- ขั้นที่สอง จัดหมวดหมู่
- จากข้อมูลที่รวบรวมมา ให้แยกสิ่งที่รู้กับสิ่งที่ยังไม่ค่อยรู้
- ข้อมูลที่ถูกคัดกรองออกไปทันทีในขั้นตอนรวบรวมข้อมูลนั้น เกิดจาก สัญชาตญาณเล็ก ๆ
- ผู้เขียนแบ่งเป็น 4 ประเภท ได้แก่ ข้อบกพร่องเชิงตรรกะ ข้อบกพร่องของเทคโนโลยีที่พึ่งพา ข้อบกพร่องของเทคโนโลยีพื้นฐาน และข้อบกพร่องทางกายภาพ
- ขั้นที่สาม เรียนรู้
- ให้ค้นหาช่องว่างของความรู้จากข้อมูลที่รวบรวมได้แล้วเรียนรู้เพิ่มเติม
- ขั้นที่สี่ เชื่อมโยง
- ให้ตั้งสมมติฐานเกี่ยวกับปัญหาจากข้อมูลแล้วทดลอง
- หากเกิดมุมมองใหม่ในกระบวนการนี้ ให้ใช้วงจรป้อนกลับโดยย้อนกลับไปทำทั้ง 4 ขั้นตอนอีกครั้ง
- เนื้อหาที่แนะนำข้างต้นเป็นวิธีที่มีประโยชน์ในการฝึกฝน สัญชาตญาณ ที่กล่าวถึงก่อนหน้า
- หากคุณยังไม่มีหลักการดีบักของตัวเอง จะใช้บทความนี้เป็นพื้นฐานเพื่อสร้างขึ้นมาก็ได้ หรือจะคิดขึ้นใหม่ก็ได้ และยิ่งดีหากแบ่งปันเคล็ดลับดี ๆ ร่วมกัน
7 ความคิดเห็น
เห็นด้วยมากครับ และดูเหมือนว่าคุณได้เรียบเรียงและเสนอแนวทางการเข้าถึงการดีบักในภาพรวมไว้ได้ดีมาก
ในกระบวนการดีบักจริง ๆ มักมีสาเหตุและองค์ความรู้เบื้องหลังที่หลากหลายซึ่งเชื่อมโยงกันอย่างซับซ้อน ดังนั้นผมคิดว่ากระบวนการค่อย ๆ แคบโฟกัสลงเพื่อหาคลูที่จำเป็นจากในนั้นเป็นสิ่งสำคัญมากจริง ๆ
ในเนื้อหาหลักได้บอกว่าในกระบวนการเช่นนั้นควรลับคมสัญชาตญาณและความเข้าใจเชิงลึก ซึ่งสำหรับการจับจุดเริ่มต้นว่าต้นเหตุอยู่ตรงไหน และควรสืบหาจากจุดใดเป็นหลักนั้น สัญชาตญาณที่สั่งสมจากประสบการณ์และความคุ้นเคยน่าจะมีบทบาทอย่างมากในเรื่องนี้
เห็นด้วยครับ/ค่ะ ผม/ฉันอยากถ่ายทอดสัญชาตญาณที่คุณพูดถึงออกมาให้ดี แต่พอมาคิดดูแล้ว น่าจะดีกว่าถ้าจะใช้คำว่า "ความหยั่งรู้" ให้สอดคล้องกันทั้งบทความแทน "สัญชาตญาณ"
ผมคิดว่าคนที่ให้เหตุผลเป็นก็เป็นไปได้ ส่วนคนที่ทำไม่ได้ก็คือทำไม่ได้
คงจะเมื่อราว ๆ 30 ปีก่อนล่ะมั้ง
รุ่นพี่มักพูดกันว่า ทำงานสาย IT สักประมาณ 3 ปีแล้ว ความสามารถของทุกคนก็จะเท่า ๆ กันหมด
พอมาคิดดูตอนนี้ ....
การเชื่อมโยงข้อมูล หากมองว่าเป็นเรื่องของการอนุมานหรือการพิสูจน์เชิงตรรกะ มากกว่าจะเป็นเรื่องของสัญชาตญาณ ก็น่าจะเป็นธรรมชาติกว่าไหมครับ? เมื่อฝึกฝนการพิสูจน์ซ้ำ ๆ จนชำนาญแล้ว ระหว่างทางอาจถูกข้ามไปและคำตอบผุดขึ้นมาทันทีเหมือนการท่องสูตรคูณ จนดูคล้ายสัญชาตญาณได้ก็จริง แต่ผมคิดว่าทั้งสองอย่างก็ควรถูกแยกออกจากกัน
ส่วนที่เหลืออย่างการตั้งข้อสงสัย การจัดหมวดหมู่ และการเรียนรู้ ผมเห็นด้วย เพราะจากประสบการณ์ของผม เมื่อประสบการณ์และความรู้พื้นฐานสะสมมากขึ้น สิ่งเหล่านี้ก็ดีขึ้นตามไปด้วย
ขอเสริมหลังจากกลับไปอ่านบทความอีกครั้ง
ดูเหมือนว่านิยามของคำว่า intuition ที่ผู้เขียนใช้ จะต่างจากนิยามของ intuition ที่ใช้กันโดยทั่วไปในสังคมครับ โดยทั่วไปผมเข้าใจว่านิยามของ intuition คือการเข้าใจปัญหาโดยไม่ผ่านกระบวนการคิด แต่พออ่านบทความแล้วก็ทำให้ผมฉุกคิดขึ้นมาว่า หรือจริง ๆ แล้วผมเข้าใจความหมายของ intuition ผิด เลยต้องกลับไปตรวจสอบอีกครั้ง ผมยังคิดด้วยว่ามันอาจขัดกับประเด็นหลักโดยรวมของบทความที่บอกว่าการดีบักจำเป็นต้องมีขั้นตอนของการคิดไม่ใช่หรือครับ ถ้าการดีบักเป็นงานที่ทำได้ด้วย intuition ล้วน ๆ จริง งั้นข้ออ้างว่าระหว่างดีบักไม่จำเป็นต้องตรวจสอบล็อกหรือข้อมูล และไม่ต้องมีการจัดการเวอร์ชันเลย ก็น่าจะต้องเป็นจริงด้วยไม่ใช่หรือครับ?
สวัสดีครับ/ค่ะ ขอบคุณที่สนใจบทความนี้
อย่างที่คุณกล่าวไว้ โดยทั่วไปแล้วคำว่า intuition หมายถึงการรับรู้สิ่งใดสิ่งหนึ่งโดยไม่มีการคิดวิเคราะห์โดยตรง แต่ผม/ฉันก็ไม่คิดว่าเราจะไปถึงคำตอบที่ถูกต้องได้จริง ๆ ในสภาพที่ไม่มีความรู้อะไรเลย
ก่อนอื่น หากจะเขียนความคิดของผม/ฉันเกี่ยวกับคำว่า intuition เวลาพูดถึงเรื่องการดีบัก เรามักได้ยินเพื่อนร่วมงานพูด หรือแม้แต่ตัวเราเองก็เคยพูดว่า "จู่ ๆ ก็นึกขึ้นมาได้" หรือ "รู้สึกว่าตรงนั้นน่าจะเป็นปัญหา" อยู่บ่อย ๆ ผม/ฉันมองว่าส่วนนี้คือ intuition ครับ/ค่ะ เมื่อไม่ปล่อยสิ่งที่ผุดขึ้นมาอย่างกะทันหันนั้นผ่านไปเฉย ๆ แต่ค่อย ๆ ไล่ตรวจทีละอย่าง สุดท้ายก็พบได้ว่าเราเคยมีประสบการณ์กับส่วนนั้นมาก่อน หรือเข้าใจความรู้ที่เกี่ยวข้องเป็นอย่างดี เพราะอย่างนั้นผม/ฉันจึงใช้คำว่า intuition และเพราะอาจทำให้เกิดความเข้าใจผิด จึงได้เพิ่มประโยคว่า "การเชื่อมโยงความรู้ที่ฉันมีเข้ากับปัญหาคือ intuition"
ดังนั้น หากจะตอบข้อสงสัยบางส่วนที่คุณกล่าวถึงในมุมมองของผม/ฉัน
สำหรับประเด็นที่ว่า "ขัดแย้งกับใจความหลักโดยรวมที่ว่าการดีบักต้องมีลำดับขั้นของความคิด" นั้น intuition ที่ผม/ฉันอธิบายในบทความ หมายถึงการข้ามบางส่วนไปโดยแทบไม่ต้องคิดมาก เพราะเป็นสิ่งที่เคยประสบมาแล้วหรือเป็นข้อเท็จจริงที่รู้อยู่แล้ว ดังนั้นจึงไม่ได้หมายความว่าไม่ต้องมีลำดับขั้นของความคิด แต่ต้องการสื่อว่าเป็นเครื่องมือที่ช่วยให้คิดได้เร็วขึ้น
ต่อมา ในประเด็นที่ว่า "ถ้าการดีบักเป็นงานที่ทำได้ด้วย intuition ล้วน ๆ จริง งั้นข้ออ้างว่าระหว่างดีบักไม่จำเป็นต้องตรวจ log หรือข้อมูล และไม่ต้องมีการจัดการเวอร์ชันเลย ก็น่าจะเป็นจริงด้วยไม่ใช่หรือ" นั้น ผม/ฉันไม่ได้เขียนว่ามันทำได้ด้วย intuition ล้วน ๆ ตรงกันข้าม ผม/ฉันได้เพิ่มประโยคว่า "การดีบักคือกระบวนการค้นหาสาเหตุของปัญหาโดยอาศัยสถานการณ์และข้อมูลที่มีอยู่" แต่ผม/ฉันคิดว่าแทบไม่มีนักพัฒนาคนไหนที่ต้องผ่านกระบวนการอนุมาน 4 ขั้นตามที่บทความกล่าวไว้ทุกครั้งที่ดีบัก หากมีประสบการณ์และความรู้อยู่พอสมควร ก็คงมีบางกรณีที่ตัดสินใจข้ามขั้นด้วยวิจารณญาณของตัวเองได้ ส่วน log และข้อมูลที่คุณกล่าวถึงนั้น ผม/ฉันคิดว่าหากมีประสบการณ์หรือความรู้ สิ่งเหล่านี้จะทำหน้าที่ช่วยกระตุ้นให้นึกออก และหากยังไม่มีประสบการณ์หรือความรู้ ก็จะช่วยสนับสนุนการอนุมานได้เช่นกัน ดังนั้นแม้เพื่อ intuition ตามที่บทความกล่าวถึง สิ่งเหล่านี้ก็เป็นข้อมูลสำคัญที่ขาดไม่ได้
ผม/ฉันคิดว่าคำว่า intuition ที่ใช้ในบทความนี้ อาจเป็นคำที่คลุมเครืออยู่ในตัว บางทีโครงสร้างหรือการปูเรื่องของบทความอาจยังไม่ดีพอที่จะถ่ายทอดความคิดของผม/ฉัน ก่อนอื่นผม/ฉันตั้งใจจะแก้ไขส่วนที่ยังไม่ชัดเจน แต่สำหรับว่าจะควรเปลี่ยนคำว่า intuition หรือไม่ ตอนนี้ก็ยังตัดสินใจได้ไม่ค่อยชัด เพราะตั้งแต่เริ่มเขียน ผม/ฉันก็มองว่าคำว่า intuition เป็นแกนสำคัญ และยังนึกคำอื่นที่จะใช้แทนไม่ออก หากคุณมีความเห็นที่ดี รบกวนช่วยแนะนำด้วยนะครับ/ค่ะ :)
หากเพิ่มคำอธิบายพื้นฐานในบทนำว่าการดีบักต้องอาศัยทั้งสัญชาตญาณและการอนุมาน และเพิ่มเนื้อหาในบทหลักเกี่ยวกับวิธีค้นหาปัญหาและความเชื่อมโยงของสัญชาตญาณ/การอนุมาน ก็จะช่วยให้บทความมีความสมบูรณ์ยิ่งขึ้น
ก่อนแก้ไข
หลังแก้ไข
บทนำ
บทหลัก (ขั้นตอนการดีบัก)