13 คะแนน โดย kciter1 2024-07-29 | 7 ความคิดเห็น | แชร์ทาง WhatsApp
  • การดีบักเป็นทักษะที่แทบจะจำเป็นสำหรับนักพัฒนา
  • การดีบักให้ความสำคัญกับ กรอบความคิดว่าจะเข้าหาอย่างไร
  • การดีบักคือกระบวนการค้นหาสาเหตุของปัญหาโดยอาศัยสถานการณ์และข้อมูลที่มีอยู่
    • ผู้เขียนอธิบายสิ่งนี้ว่าเป็นสัญชาตญาณ
    • สัญชาตญาณคือการเชื่อมโยงความรู้ที่เรามีกับปัญหา
    • ประสบการณ์ทำหน้าที่เป็นทางลัดที่ทำให้ความรู้กลายเป็นสัญชาตญาณ
  • นักพัฒนามักจะจำกัดความเป็นไปได้ให้แคบลงโดยสัญชาตญาณ เพื่อหาสาเหตุของพฤติกรรมที่ไม่คาดคิด
  • ผู้เขียนมองว่าการค่อย ๆ จำกัดขอบเขตลงทีละอย่างโดยยึดหลักการจะมีประสิทธิภาพ
  • แนะนำ 4 ขั้นตอนในการค้นหาปัญหา
    • ขั้นแรก ตั้งข้อสงสัย
      • ทุกอย่างไม่ว่าจะเป็นโค้ด ล็อก ข้อความแสดงข้อผิดพลาด ข้อมูลมอนิเตอร์ริง ข้อกำหนด หรือฮาร์ดแวร์ ล้วนเป็นการรวบรวมข้อมูลเพื่อแก้ปัญหา
      • การทำเช็กลิสต์จะช่วยได้
    • ขั้นที่สอง จัดหมวดหมู่
      • จากข้อมูลที่รวบรวมมา ให้แยกสิ่งที่รู้กับสิ่งที่ยังไม่ค่อยรู้
      • ข้อมูลที่ถูกคัดกรองออกไปทันทีในขั้นตอนรวบรวมข้อมูลนั้น เกิดจาก สัญชาตญาณเล็ก ๆ
      • ผู้เขียนแบ่งเป็น 4 ประเภท ได้แก่ ข้อบกพร่องเชิงตรรกะ ข้อบกพร่องของเทคโนโลยีที่พึ่งพา ข้อบกพร่องของเทคโนโลยีพื้นฐาน และข้อบกพร่องทางกายภาพ
    • ขั้นที่สาม เรียนรู้
      • ให้ค้นหาช่องว่างของความรู้จากข้อมูลที่รวบรวมได้แล้วเรียนรู้เพิ่มเติม
    • ขั้นที่สี่ เชื่อมโยง
      • ให้ตั้งสมมติฐานเกี่ยวกับปัญหาจากข้อมูลแล้วทดลอง
      • หากเกิดมุมมองใหม่ในกระบวนการนี้ ให้ใช้วงจรป้อนกลับโดยย้อนกลับไปทำทั้ง 4 ขั้นตอนอีกครั้ง
  • เนื้อหาที่แนะนำข้างต้นเป็นวิธีที่มีประโยชน์ในการฝึกฝน สัญชาตญาณ ที่กล่าวถึงก่อนหน้า
  • หากคุณยังไม่มีหลักการดีบักของตัวเอง จะใช้บทความนี้เป็นพื้นฐานเพื่อสร้างขึ้นมาก็ได้ หรือจะคิดขึ้นใหม่ก็ได้ และยิ่งดีหากแบ่งปันเคล็ดลับดี ๆ ร่วมกัน

7 ความคิดเห็น

 
cosine20 2024-07-30

ผู้เขียนมองว่าการค่อย ๆ แคบขอบเขตลงทีละอย่างโดยยึดหลักการเป็นวิธีที่มีประสิทธิภาพ

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

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

 
kciter1 2024-07-30

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

 
halfenif 2024-07-30

ผมคิดว่าคนที่ให้เหตุผลเป็นก็เป็นไปได้ ส่วนคนที่ทำไม่ได้ก็คือทำไม่ได้

คงจะเมื่อราว ๆ 30 ปีก่อนล่ะมั้ง

รุ่นพี่มักพูดกันว่า ทำงานสาย IT สักประมาณ 3 ปีแล้ว ความสามารถของทุกคนก็จะเท่า ๆ กันหมด

พอมาคิดดูตอนนี้ ....

 
savvykang 2024-07-29

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

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

 
savvykang 2024-07-30

ขอเสริมหลังจากกลับไปอ่านบทความอีกครั้ง

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

 
kciter1 2024-07-30

สวัสดีครับ/ค่ะ ขอบคุณที่สนใจบทความนี้

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

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

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

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

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

 
savvykang 2024-07-31

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

ก่อนแก้ไข

  1. การดีบักคือกระบวนการค้นหาสาเหตุของปัญหาโดยอาศัยสถานการณ์และข้อมูลที่มีอยู่
  2. การแก้ปัญหาผ่านการดีบักมักมาจากสัญชาตญาณของนักพัฒนา
  3. มีอยู่สี่ขั้นตอนในการค้นหาปัญหา

หลังแก้ไข

บทนำ

  1. การดีบักคือกระบวนการค้นหาสาเหตุของปัญหาโดยอาศัยสถานการณ์และข้อมูลที่มีอยู่
  2. ในการดีบัก จำเป็นต้องมีงานย่อยสองส่วนตามลำดับคือ การรับรู้ปัญหาและการแก้ปัญหา
  3. การรับรู้ปัญหาอาศัยสัญชาตญาณ ส่วนการแก้ปัญหาอาศัยการอนุมาน โดยมีทฤษฎีการประมวลผลแบบคู่ (dual process theory) เป็นทฤษฎีที่รองรับแนวคิดนี้
  4. หากใช้เพียงการอนุมานในกระบวนการรับรู้ปัญหา จะต้องตรวจสอบและยืนยันรายละเอียดทางเทคนิคต่าง ๆ เช่น สภาพการตั้งค่าของระบบทีละอย่าง ทำให้มีข้อจำกัดในการเพิ่มผลิตภาพ ดังนั้นการใช้สัญชาตญาณเป็นตัวช่วยในกระบวนการรับรู้ปัญหาจึงเป็นประโยชน์ต่อกลยุทธ์การดีบัก
  5. เพื่อเพิ่มประสิทธิผลของสัญชาตญาณ การสั่งสมประสบการณ์และความเข้าใจเชิงลึก หรือก็คือฮิวริสติก ไว้เป็นประจำจึงเป็นสิ่งสำคัญ
  6. มีความเป็นไปได้เสมอว่าสัญชาตญาณอาจผิดพลาดหรือไม่เหมาะกับสถานการณ์ และการฝึกหลีกพ้นจากอคติทางการรับรู้ก็สำคัญเช่นกัน

บทหลัก (ขั้นตอนการดีบัก)

  1. การรวบรวมข้อมูล
  2. การจัดหมวดหมู่ - สัญชาตญาณและฮิวริสติกมีบทบาท
  3. การเรียนรู้
  4. การตั้งสมมติฐานและการตรวจสอบ - การอนุมานมีบทบาท