มีคำถามว่า

เราจะฝึกแก้ไขปัญหาต่าง ๆ ในเชิงการเขียนโปรแกรมอย่างไรดี ?
มีขั้นตอนอย่างไรบ้าง ?
ต้องทำอะไรบ้าง ?

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

ก่อนอื่นสำหรับการแก้ไขปัญหานั้น คือ การเข้าใจปัญหาก่อน

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

ถ้าเราเข้าใจปัญหาแล้ว วิธีการแก้ไขจะตามมาเอง

เมื่อเข้าใจปัญหาแล้ว ให้เริ่มด้วยการแก้ไขปัญหาแบบ manual หรือคิดบนกระดาษนั่นเอง

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

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

เมื่อทุกอย่างเริ่มเข้าที่เข้าทางก็เริ่มเขียน code สิ

หรือบางคนอาจจะเขียนพวก pseudo code ก่อนก็ได้
เนื่องจากเราอาจจะไม่ต้องมาเน้นในเรื่อง syntax ของภาษา
แต่ไปเน้นที่ logic และขั้นตอนการทำงานแทน
จากนั้นก็แปลงไปเป็น code จริง ๆ
แน่นอนว่า ในขั้นตอนนี้เราจะเน้นไปที่ syntax ของภาษานั้น ๆ อย่างเดียว
ว่าจะเขียน code อย่างไรในภาษาโปรแกรมที่เราเลือกมาแล้ว

เมื่อเขียน code เพื่อแก้ไขปัญหาของเราได้แล้ว

ก็อย่าลืมปรับปรุง code ให้มันดีขึ้นด้วย หรือ Clean Code นั่นเอง
ทั้งเข้าใจได้ง่าย
ทั้งงอ่านง่าย
ทั้งทดสอบได้ง่าย
ทั้งทำงานครอบคลุมในแต่ละกรณี

จากนั้นก็เริ่มเข้าสู่การ review

ทั้ง review จากคนเขียน
ทั้ง review จากเพื่อน
ทั้ง review จากทีม

สุดท้ายคงหนีไม่พ้นคือ การฝึก ฝึกและฝึก นะครับ

ฝึกแก้ไขปัญหาจากที่ได้บ้าง ?
ยกตัวอย่างเช่น

ขอให้สนุกกับการ coding ครับ

ปล. ให้สังเกตุว่า ในแต่ละขั้นตอนเราจะเน้นที่เรื่องเดียวเท่านั้น