การตั้งคำถามในการเขียนโปรแกรม

2 วิธีการตั้งคำถาม ในการเขียนโปรแกรมที่ดี

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

การตั้งคำถามในการเขียนโปรแกรม

การตั้งคำถามในการเขียนโปรแกรม

เอาล่ะครับสำหรับการถาม-ตอบ คำถามนั้นอาจจะคิดว่าทำไมมันต้องสำคัญขนาดนั้น จนต้องมาเขียนเป็นเรื่องเป็นราว ต้องเขียนสอนให้ถามเนี้ยนะ !!? ใช่ครับหลายคนนั้นอาจจะคิดว่าการถาม-ตอบ เป็นอะไรที่ทุกคนก็ใช้ในชีวิตประจำวัน เราถามเพื่อน ถามอาจารย์ หรือแม้แต่ถามคนที่ไม่เคยรู้จักหน้าค่าตากันมาก่อน ครับผมกำลังจะเจาะประเด็นไปที่ internet เป็นสำคัญ การใช้ webboard ในการสอบถามนั้นมีมานานมากแล้ว และคิดว่าเด็กรุ่นใหม่ๆนั้นหลายคนก็จะชินกับการใช้ เทคโนโลยีเหล่านี้ไม่ว่าจะเป็น Chat , Webboard , Email , Twitter , Facebook , ฯลฯ

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

กลุ่มมีปัญหาประเภทที่ 1

การถาม

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

  • พี่คะ คอมหนูไม่รู้เป็นอะไร ( ช่วงของแบไต๋ เฮ้ยที่ไหนเล่า ! ) อยู่ดีไม่ได้ทำอะไรมันก็เสียค่ะ
  • พี่คะทำไมคลิกแล้วหน้าเด้งไปหน้าอื่น หนูอยากได้ที่มันไม่เปลี่ยนหน้าอ่ะค่ะ
  • พี่คะหนูลบตรงนี้ได้ แต่อีกส่วนหนึ่งลบไม่ได้ ?

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

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

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

ตัวอย่าง

  • ตัวอย่างที่ 1 คำถามอ่านแล้วงง จริงๆแล้วควรจะถามประมาณนี้
    “อยากให้ช่วยเรื่องคำสั่ง sql ที่จะไม่หยิบข้อมูลซ้ำซ้อนกันออกมาจากการ join”
    ( อันนี้เกี่ยวกับเรื่องการ join แต่เจ้าของกระทู้ไม่ทราบว่าจะเรียกว่าอะไร ให้เดาคงไม่ได้อ่านหนังสือซักเล่มเกี่ยวกับด้านนี้จึง ไม่ทราบแม้แต่คำตอบที่คนตอบบอก ว่ามันใช้ได้ไหม และ select * เนี้ยปกติเขาไม่ใช่กันนะ เพราะเราควรจะหยิบข้อมูลที่จำเป็นต่อการใช้จริงๆก็พอ )
  • ตัวอย่างที่ 2 ตัวอย่างนี้อาจจะแยกได้ 2 กรณีคือ เป็น user มาถามเฉยๆ หรือ เป็น programmer มาถาม ถ้าเป็นกรณีแรกคือ user มาถามก็ยังน่าให้อภัย เพราะคงไม่รู้จริงๆ แต่ ! ถ้าเป็นกรณีหลังนั้น ก็น่าจะโดนแนะนำ เพราะการที่บอกว่าอัพรูปไม่ขึ้น แล้วก็ไม่อธิบายว่าคุณใช้โปรแกรมอะไร หมายถึง เขียนเองหรือเปล่า ? หรือใช้ CMS แล้วระบบหลังบ้านมันเจ๊ง ถ้าเจ๊งต้องบอกด้วยว่าไปทำอะไรกับมันถึงได้เจ๊ง ไปแก้ไขอะไร และยิ่งมีรูปประกอบด้วยจะดีมาก ไม่ต้องใหญ่เอาแค่ที่มันแสดงที่โชว์ข้อผิดพลาด ( Error ) ก็พอ

ทางแก้ไข

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

  1. ไปอ่านหนังสือการเขียนโปรแกรมนั้นๆซัก 1 เล่ม เลือกเล่มที่ตัวเองอ่านแล้วเข้าใจมากที่สุด หมายถึงภาษาของคนเขียนที่อธิบาย
  2. พยายามอธิบายให้ละเอียดที่สุดเท่าที่เป็นไปได้ เช่น กำลังจะทำปุ่มที่กดแล้วส่งค่า input ที่มี name=”test” แล้วจะทำการส่งค่าไปหน้า gee.php แต่ลองใช้การรับค่าแบบ $_REQUEST แล้วไม่ได้ต้องทำอย่างไรครับ เป็นต้น
  3. หากมีโค้ดที่เกี่ยวข้องให้แนบใส่มาด้วยเพราะส่วนใหญ่เว็บบอร์ดด้านโปรแกรมมิ่งนั้น จะมีตัวช่วยให้คุณสามารถเขียนโค้ดให้อ่านได้ง่าย ใช้มันเถอะครับ ช่วยได้เยอะทีเดียว แต่ ! ข้อควรระวังคือไม่ต้อง copy มาหมดทั้งแผงเพราะหลายๆคน ( เช่นผม ) ขี้เกียจนั่งอ่านหมด ยกเว้น กรณีที่คุณไม่ทราบจริงๆเลยว่า อันไหนมันถูกมันผิด ( กรณีนี้คือให้เดาคุณไม่อ่านหนังสือมาก่อน เลยไม่ทราบเลยว่าโค้ดตัวไหนอย่างไร )
  4. ใช้ ค้นหา ( search ) ในเว็บซึ่งแนะนำเลยว่าดีมากสำหรับข้อนี้ แล้วทำไมเอามาไว้ข้อ 4 ก็เพิ่งจะคิดออกอ่ะ ฮ่าๆ แต่ว่าสำคัญจริงๆ การที่คุณค้นหาก่อนอาจจะเจอคำตอบโดยที่คุณไม่ต้องมานั่งสร้างคำถามใหม่ เสียเวลาอีกมากมาย พยายามหา keyword ที่จะค้นหาให้ได้ ( จริงๆเรื่อง keyword ก็สำคัญนะบ้างทีมันคิดไม่ออกว่าคำนี้ภาษาอังกฤษหมายถึงอะไร ไว้จะมาเขียนให้เป็นบทความหนึ่งนะจ๊ะ )

การตอบ

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

กลุ่มมีปัญหาประเภทที่ 2

การถาม

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

ทางแก้ไข (และนิสัย)

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

การตอบ

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

แถม

  • ไม่รู้ทำไมเกือบทุกบอร์ดต้องคิดว่าการที่เป็นผู้หญิงถามจะได้รับคำตอบเร็วกว่าเป็นผู้ชาย สำหรับผมให้สิทธิ์เท่าเทียมกันนะ :D
  • คนที่มีจิตใจดีจริงๆก็มีอยู่นะ ถึงจะไม่มากก็เถอะ ที่จะสนองความต้องการของไอ้บุคคลประเภทที่ 2 เนี้ย
  • ผมสิงในบอร์ดหลักๆก็ www.thaicreate.com , www.mindphp.com ถ้าเจอผมทักทายกันได้นะ แต่ผมตอบค่อยข้างจะแนวเป็นสอนให้คิดไม่ได้บอกคำตอบเลย

อย่าลืมฝึกฝนตัวเองเยอะนะครับถ้าคิดไม่ออกว่าจะฝึกยังไงให้หาคำตอบเองลองอ่านที่บทความนี้ต่อได้เลยครับ

6 วิธีพัฒนาตัวเองสามารถใช้ได้กับทุกเรื่อง

Loading

เป็นโปรแกรมเมอร์ที่ตามหาคุณค่าของชีวิตและความฝันในวัยเด็ก ชอบเล่นเกม เรียนรู้ทุกอย่าง ชอบเจอคนใหม่ๆ งานสังคมทุกชนิด ออกกำลังกายในวันว่าง อ่านหนังสือ มีเว็บรีวิวหนังสือด้วย www.readraide.in.th