ทำไมเราต้องคิดก่อนโค้ด?
เพราะ “โปรแกรมทำงานได้” กับ “โปรแกรมแก้ปัญหาได้” อาจเป็นคนละเรื่องกัน
สมมติเราจะทำระบบเรียกคิวให้ร้านอาหาร แล้วเริ่มเขียนทันทีว่า “ใครมาก่อน ได้โต๊ะก่อน”
ฟังดูตรงไปตรงมา แต่ถ้าคิวแรกมา 6 คน และตอนนี้ว่างแค่โต๊ะ 2 ที่นั่งล่ะ?
เราจะปล่อยโต๊ะว่างไว้รอ หรือเรียกคิวถัดไปที่มา 2 คนก่อน? ถ้าเรียกข้าม คนกลุ่มใหญ่จะต้องรอนานแค่ไหน?
เรื่องนี้ไม่ได้ติดที่เขียน Python หรือ C++ ไม่เป็น แต่ติดที่เรายังไม่ได้ตกลงว่า “ระบบควรตัดสินใจอย่างไร”
คอมพิวเตอร์ทำตามกติกาที่เราเขียนได้รวดเร็ว แต่ไม่ได้รับประกันว่ากติกานั้นจะเหมาะกับปัญหา
ก่อนเริ่มโค้ด ลองตอบให้ได้ 4 ข้อนี้
1. ต้องการแก้ปัญหาอะไร?
อยากเรียกตามลำดับอย่างเคร่งครัด ลดเวลารอ หรือใช้โต๊ะให้คุ้ม? เป้าหมายต่างกัน กติกาก็อาจต่างกัน
2. ต้องรู้อะไรบ้าง?
แค่หมายเลขคิวอาจไม่พอ ต้องรู้จำนวนคน ขนาดโต๊ะ และสถานะโต๊ะด้วย
3. จะใช้กติกาอะไร?
เรียกตามคิวเสมอ หรือข้ามได้เมื่อโต๊ะไม่พอดี แล้วป้องกันบางกลุ่มถูกข้ามซ้ำ ๆ อย่างไร?
4. จะรู้ได้อย่างไรว่าทำถูก?
ลองไล่สถานการณ์บนกระดาษก่อน เช่น โต๊ะเต็มพอดี ลูกค้ายกเลิกคิว หรือมีโต๊ะเล็กว่างแต่คิวแรกเป็นกลุ่มใหญ่ แล้วดูว่าผลตรงกับกติกาที่ตกลงไหม
คิดก่อนโค้ดไม่ได้หมายถึงต้องคิดให้ครบทุกอย่างแล้วค่อยเริ่ม แต่ให้ชัดพอว่าจะลองอะไร จากนั้นทำรุ่นเล็ก ทดสอบ และปรับจากสิ่งที่พบ
โค้ดช่วยให้เราทำตามวิธีที่เลือกได้เร็วขึ้น ส่วนการคิดช่วยให้เราเลือกวิธีที่ควรทำ
ก่อนถามว่า “จะเขียนยังไง?” ลองถามว่า “เรากำลังแก้ปัญหาอะไร และคำตอบที่ดีหน้าตาเป็นแบบไหน?”
คุณเคยทำงานเสร็จแล้ว แต่เพิ่งรู้ว่าคนใช้งานต้องการอีกอย่างไหมครับ?
ครูโจ๊ก ณัฐพล บัวอุไร
#คิดก่อนโค้ด #คิดแบบคอมพิวเตอร์ #แก้ปัญหา #Programming

