#1 tech recruiter in thailand

แก้ปัญหาอย่างไร ให้เหมือนอย่าง Programmer

See the original English version of this article here

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

เหตุใดเรื่องนี้ จึงสำคัญ

การแก้ปัญหา ถือเป็นทักษะสำคัญที่ใช้ได้ทุกเรื่อง ทุกคนล้วนเจอปัญหามากมายทั้งใหญ่และเล็ก ถ้าคุณเคย ลองแก้ปัญหา แต่ถ้ามันไม่ Work ก็ลองวิธีอื่น แล้วถ้ามันยังไม่ Work(อีก) คุณก็กลับไปหาวิธีใหม่ แบบนี้วนไปเรื่อยๆ ล่ะก็ นี่คือวิธีแก้ปัญหาที่ไม่มีประสิทธิภาพนัก แถมยังเสียเวลาอีกด้วย สำหรับวิธีที่ดีกว่าคือ การมี Framework และ การฝึกฝน

Framework ของการแก้ปัญหา

เพื่อหา Framework ที่ใช่และเหมาะสม Richard Reis (ผู้เขียนบทความนี้) ได้ทำตามคำแนะนำจากหนังสือ The 4-Hour Chef ของ Tim Ferris รวมทั้งได้มีโอกาสสัมภาษณ์คนเก่ง 2 คน คือ C. Jordan Ball (เป็น User ที่ติด Top Rank ใน Coderbyte) และ V. Anton Spraul (ผู้แต่งหนังสือ “Think Like a Programmer: An Introduction to Creative Problem Solving”) ซึ่งเมื่อถามคำถามเดียวกัน ผลปรากฏว่า คำตอบที่ได้มีความคลายคลึงกันด้วย ซึ่งพอจะสรุปประเด็นว่า เมื่อเจอปัญหาใหม่ๆ เราควรทำอย่างไร ได้ดังนี้

1. ทำความเข้าใจ

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

2. วางแผน

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

3. แบ่ง(ปัญหา)เป็นส่วนๆ

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

4. ยังติด(ปัญหา)อยู่?

บางคนอาจคิดในใจว่า วิธีนี้มันใช่เลย แต่ถ้ายังคงติดในปัญหาย่อยๆ อยู่ล่ะ? ให้คุณหายใจลึกๆ ไม่ต้องกังวลเพราะทุกคนก็เจอแบบนั้นทั้งนั้น ความแตกต่างคือ Programmer เก่งๆ หรือคนที่แก้ปัญหาเก่งๆ เขาจะใส่ใจกับ Bug/Error มากกว่าที่จะหงุดหงิด นี่คือ 3 สิ่งที่คุณควรลองทำเมื่อเจอปัญหาต่างๆ

4.1 Debug : ลองนั่งไล่ไปทีละ Step เพื่อหาว่า ข้อผิดพลาดมันอยู่ตรงไหน ซึ่ง Programmer เรียกว่า Debug และ Programmer ทุกคนล้วนเคย Debug Code กันมาแล้วทั้งสิ้น

4.2 Reassess : ลองมองปัญหาที่เจอในมุมมองอื่นๆ หรือมีอะไรที่สามารถนำมาประยุกต์ใช้ได้หรือไม่ บางครั้งเราอาจจะมองข้ามบางอย่างไป ทั้งที่มันจะสามารถช่วยให้เราแก้ปัญหาได้ง่ายและสะดวกขึ้น อย่างเช่น ถ้าคุณอยากได้ผลรวม 1+2+3+4…+n ในขณะที่ถ้าใช้สูตรของ Gauss คือ n(n+1)/2 ก็ได้คำตอบเท่ากัน แล้วคุณจะเลือกวิธีไหนล่ะ

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

4.3 Research : คุณคงเคยใช้ Google กันมาแล้วใช่ไหม ไม่ว่าคุณจะเจอปัญหาอะไร อาจมีใครบางคนที่เคยแก้ปัญหาเหล่านี้ได้ ลองค้นหาคน/ Solution นั้นๆ ให้เจอ คุณสามารถเรียนรู้จาก Solution ของคนอื่นๆ ได้มากมาย แต่ข้อควรระวังคือ อย่าหาทางแก้ปัญหาใหญ่ๆ ในครั้งเดียว อยากให้ลองหา Solution ของปัญหาย่อยๆ เพราะคุณจะได้เรียนรู้มากกว่าแน่นอน

การฝึกฝน

อย่าคิดว่าคุณจะเก่งขึ้นในสัปดาห์เดียว เพราะคุณต้องเจอหลายๆ ปัญหาก่อน ถึงจะสามารถเป็นคนที่แก้ปัญหาได้ดี ไม่น่าเชื่อว่า การเล่นเกม เช่น Chess puzzles, math problems, Sudoku, Go, Monopoly, video-games เป็นต้น ก็ถือเป็นการฝึกฝนการแก้ปัญหาย่อยๆ ได้ แม้แต่คนดังอย่าง Elon Musk หรือ Mark Zuckerberg (รวมทั้งคนอื่นๆ) ล้วนบอกว่า การเล่นเกม ถือเป็นพื้นฐานความสำเร็จในการตั้งบริษัทของพวกเขาแต่อย่าเข้าใจผิดว่าเกม คือคำตอบของทุกอย่าง มันเป็นแค่ส่วนประกอบ อย่าง Richard เองก็ชอบเข้า Coderbyte ทุกวัน เพื่อแก้ปัญหา Coding Challenge

สรุป

ตอนนี้คุณคงเข้าใจแล้วว่า “คิดอย่าง Programmer ” คืออะไร และคงทราบแล้วว่า ทักษะการแก้ปัญหาสำคัญแค่ไหน ดังนั้นคุณลองทำตามวิธีที่แนะนำดู แล้วฝึกฝนมันไปเรื่อยๆ ถ้าคุณก้าวข้ามปัญหา/อุปสรรคต่างๆ ไปได้คุณจะได้ เรียนรู้บางอย่าง, แข็งเกร่ง ฉลาด และ มีมุมมองเพิ่มขึ้น จนเป็น คุณใน Version ที่ดีที่สุด

ISM Technology Recruitment Ltd. (#1 Tech Recruiter in Thailand) เราเชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ เปิดทำการกว่า 25 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย หากคุณเป็นคน IT ที่อยากทำงานท้าทายและร่วมงานกับองค์กรชั้นนำ สามารถฝากประวัติการทำงาน (Resume) ของคุณไว้กับ ISM ได้ที่ https://www.ismtech.net/submit-your-resume แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ากำลังรอคุณอยู่

ที่มา: https://freecodecamp.org/

en