The future of programming — Bret Victor

ทำไมผมถึงชอบเขียนโปรแกรม?

มันก็เหมือนถามว่าทำไมแฮรี่พอตเตอร์ชอบใช้เวทย์มนตร์นั่นแหละ

Krist Wongsuphasawat
1 min readSep 30, 2013

--

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

ผมเริ่มเขียนโปรแกรมครั้งแรกเมื่อตอนม.ต้น เริ่มจากภาษา html ซึ่งใช้เขียนเว็บ(จนถึงทุกวันนี้ก็ยังใช้กันอยู่) ที่ทำก็แค่เปิด notepad หน้าเปล่าๆ แล้วพิมพ์ตัวหนังสือก๊อกแก๊ก

Hello, world!

พอ save ไฟล์ แล้วเปิดใน Internet Explorer (สมัยนั้น IE นี่หล่อมาก) ก็จะเห็นคำว่า Hello, world! บนหน้าจอ

(ในใจ) “อู้ว แค่นี้ก็มีตัวหนังสือขึ้นแล้ว”

พอครูสอนให้แก้เป็น

<b>Hello, world!</b>

(ในใจ) “เฮ้ย Hello, world! มันกลายเป็นตัวหนาจริงด้วย”

คำถามที่ตามมาทันทีก็คือ แล้วทำให้เอียงยังไง, ขีดเส้นใต้ล่ะ, เปลี่ยนสีล่ะ?

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

https://twitter.com/kristw/status/384587402783641600

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

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

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

  1. ได้นอนดูทีวีระหว่างคอมนั่งส่งอีเมล์ให้
  2. รู้ละว่าจะเขียนโปรแกรมแบบนี้ได้ยังไงเผื่อต้องทำอะไรคล้ายๆกันในอนาคต
  3. สะใจ

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

How I sent my wedding invitation programmatically using Sikuli.

--

--

Krist Wongsuphasawat

Data Experience @airbnb / Prev: Turn data into pixels @twitter • Invent new vis @UofMaryland HCIL PhD • From @Thailand • http://kristw.yellowpigz.com