เราเรียนเขียนโค้ดไปทำไม

เมื่อเพื่อนอยากทำแอพการศึกษา
เมื่อคืนก่อนเพื่อนสมัยมัธยมคนหนึ่งก็ติดต่อมาปรึกษา อยากทำโซเชียลมีเดียเพื่อการแนะแนวการศึกษา ฟังแล้วก็มีความคล้ายกับโปรเจค Lightstone ที่เราเคยคิดจะทำเมื่อนานมาแล้ว(เทแล้ว) ก็บอกไปว่าตอนนี้คืองานล้นมือมาก แต่เราสามารถสร้าง community ไปก่อนพลางๆ ได้ แล้วเมื่อแพลทฟอร์มเราพร้อม การจะย้ายคนเข้ามาเพื่อความสะดวกในการถาม-ตอบ หรือการค้นหาอาจจะเป็นหนทางที่ดีกว่า นายเพื่อนคนนี้จึงเริ่มทำการรวบรวมข้อมูลของสาขาวิชาต่างๆ จึงเกิดคำถามกับผมว่า เราเรียนเขียนโค้ดไปทำไม ถ้ามีน้องๆมาขอคำปรึกษาหรือแรงบันดาลใจ จะตอบเค้าไปว่าอย่างไร ตอนนั้นเราก็ตอบไปสั้นๆ แต่ก็คิดได้ว่า มาเขียนยาวๆแบบมีรายละเอียดไว้ตรงนี้ดีกว่า
เรียนเขียนโค้ดไปทำไม
ตอบแบบสั้นๆเลยก็คือ รวยครับ เนื้อหอมสุดๆ แต่ถ้าพูดถึงว่าคนที่ไม่ได้อยากเป็นโปรแกรมเมอร์ หรือเรียนแล้วไม่เข้าใจ ก็จะคิดแค่ว่าไม่เเห็นจำเป้นเลย แต่ว่าการเข้าใจวิธีคิดแบบคอมพิวเตอร์ต่างหาก คือใจความสำคัญของวิชานี้ คอมพิวเตอร์ไม่มีหัวใจ ไม่มีอารมณ์ใดๆ คุณสั่งมันทำงานยังไงมันก็ทำงานได้อย่างนั้น ถ้ามันจะไม่ดีก็อยู่ที่คนสั่งล้วนๆครับ ซึ่งถ้าหากคุณเข้าใจมันแล้ว คุณจะใช้งานมันได้อย่างมีประสิทธิภาพมากขึ้น ส่วนตัวผมคิดว่าในอนาคตอันใกล้นี้ ความสามารถการเขียนโค้ดก็จะเป็นสิ่งที่ทุกคนรู้และทำได้โดยพื้นฐาน เหมือนกับการใช้เตาอบไมโครเวฟหรือการใช้หม้อหุงข้าว ส่งผลให้แอพพลิเคชันต่างๆสามารถรับอินพุทหลากหลายได้มากขึ้น ซึ่งเราที่เข้าใจสิ่งนี้ก็จะไม่ตกยุคและสามารถใช้เครื่องมือใหม่ๆเหล่านั้นทุ่นแรงได้มหาศาล
หัวใจของการคิดแบบคอมพิวเตอร์
สิ่งที่เราควรจะได้จากวิชานี้ก็คือ การคิดอย่างเป็นระบบลำดับขั้นตอน เพื่อใช้สิ่งที่มีอยู่แล้วมาประกอบกันให้ทำงานได้อย่างที่เราต้องการ ยกตัวอย่างเช่น ทำ A ก่อนจึงจะได้ X ที่พร้อมจะเอาไปใส่ B จากนั้นทำอีก Y รอบ จนกว่าจะได้ C เป็นต้น
การทำงานตามลำดับ การตัดสินใจจากเงื่อนไข การทำซ้ำ เพียงแค่เราคิดล่วงหน้า และวางแผนได้ ก็ถือว่าเราประสบความสำเร็จกับการเรียนวิชานี้แล้ว โรงเรียนหรือครูเองก็ควรจะใช้สิ่งนี้ในการตัดสินเกรดเหมือนกัน ส่วนคำสั่งโปรแกรมอะไรพวกนั้น ผมคิดว่ามันเป็นวิธีที่จะสื่อสารให้เราเข้าใจเรื่องพวกนี้จากการลงมือทำได้ดีที่สุดแล้ว
เมื่อความสามารถของมนุษย์มากขึ้น อินเตอร์เฟสก็ลดลง
ผมจะยกตัวอย่างการพัฒนาที่ผ่านมา ของสาขาวิชาชีพต่างๆ เพื่อให้เห็นภาพมากขึ้น ซึ่งส่วนใหญ่คือการ preset กระบวนการใดๆไว้ เพื่อใช้ภายหลังแบบง่ายๆ มีเซนเซอร์ตรวจสอบเงื่อนไข และทำซ้ำจนเกิดผลลัพธ์ที่ต้องการ
- การแต่งภาพ: ปรับความสว่างให้ได้ค่าเฉลี่ยของ Histogram เป็นทรงนี้ จากนั้นค่อยลงเอฟเฟกต์เล่นสีต่อไป บันทึกการทำงานแบบนี้ไว้ จากนั้น apply กับรูปที่เหลือทั้งหมด
- การทำอาหาร: ตั้งค่าเตา ไฟ 220 องศา 15 นาที, จากนั้นหมุนกลับด้าน แล้วลดไฟเหลือ 180 องศา ทำต่อไปอีกสิบนาที
- การเล่นเกม: ปล่อยบอท ให้ต่อสู้ และเติมเลือดเมื่อเลิอดเหลือน้อย
- การคำนวณ: เอาคอลัมน์ A บวกกับคอลัมน์ B แล้วเทียบการค่าเฉลี่ย ใน excel
- การตลาด: อ่านคอมเมนต์ ค้นหาคำและจัดกลุ่ม
จะเห็นว่าจากอุปกรณ์ใดๆ เราไม่ร้้ไม่เข้าใจการเขียนโปรแกรมก็สามารถใช้งานได้ แต่ถ้าหากเรามีสิ่งนี้เสริมติดตัวไปด้วย เราจะทำได้ถูกต้องมากขึ้น เร็วมากขึ้น และแน่นอน มันจะให้ผลลัพธ์ที่ดีกว่า สบายกว่า
อยากเป็นโปรแกรมเมอร์ แต่ได้เกรดน้อยจัง ทำไงดี
วิชานี้ต้องฝึกฝนอย่างเดียวครับ เหมือนคณิตศาสตร์ หาโจทย์หลากหลายมาทำ ทุกการผิดพลาดคือการเรียนรู้ครับ มีมุกเกี่ยวกับโปรแกรมเมอร์บอกว่า ใช้เวลาหนึ่งวันเพื่อแก้ error หนึ่งจุด และสร้าง error ใหม่อีก 99 จุด ส่วนคำแนะนำอื่นๆ วันหลังจะเขียนเพิ่มอีกบทความละกัน ว่าถ้าอยากเป็นโปรแกรมเมอร์ควรจะทำอะไรบ้าง ขอบคุณที่สละเวลาอ่านครับ