How to learn almost anything

Register for the event: https://eventpop.me/s/learn

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

1. Black Box Learning

 
เราเชื่อว่าเราไม่ต้องแน่น fundamentals ตั้งแต่วันแรกเพื่อที่จะสร้างอะไร แต่เราจะเก่งได้ถ้าเราตั้งเป้าหมายว่าเราอยากสร้างอะไร แล้วทำความเข้าใจมันไปทีละขึ้น
 
มี 2 โปรเจคตัวอย่างที่เราคงทำไม่ได้ ถ้าไม่ได้ใช้วิธี black-box คือโปรเจค number 60 ของพี่พิเชษฐ ที่ถอดองค์ประกอบนาฎศิลป์ขึ้นมาสร้างท่ารำใหม่ๆ กับโปรเจค MESSE ที่สร้าง DNA storage payload ส่งขึ้นยาน Blue Origin
 
ในสองโปรเจคนี้ เราได้โจทย์ให้เขียน webapp ที่สร้างท่ารำใหม่ๆ บนโลกสามมิติ กับการเขียน microcontroller ที่ไว้ถ่ายภาพการทดลองบนอวกาศ
 
โปรเจคสนุกๆ ที่เราทำส่วนมาก มันจะมีส่วนที่เราไม่รู้ประมาณ 20% อยู่แล้ว เช่นโปรเจคนี้เราก็ไม่เคยเล่นกับ quaternion, differential calculus หรือไม่เคยเขียน RTOS ให้มัน fault-tolerant เพื่อทำงานบนอวกาศได้
 
วิธีของเราคือ เราตั้งเป้าหมายก่อนว่าเราจะสร้างอะไร ตอนนี้เราไม่รู้อะไร แล้วค่อยๆ แกะให้มันลึกขึ้นทีละขั้น เช่นเราก็เปิด quaternions interactive guide ของ 3b1b เพื่อให้ get intuition ก่อน เราจะพยายามเข้าใจก่อนว่ามันคืออะไร มันสำคัญยังไง และ interface ของมันคืออะไร
 
เราใช้สิ่งที่เรารู้อยู่แล้ว 80% ช่วยให้เราเข้าใจเรื่องนั้นได้ เราเขียนโค้ดได้อยู่แล้ว เราก็สร้าง prototype ลองเล่นกับข้อมูล quaternion หรือลองเขียน naive version ของโค้ด microcontroller มาก่อน
 
พอเราเรียนอะไรแบบ black-box เรารู้สึกว่าทุกอย่างมันน่าตื่นเต้น น่าสนุกสำหรับเราไปหมด พอเรา get intuition ทำให้เราอยากลงลึก ลงทฤษฎี ลง proof ความรู้สึกต่างกับการเรียนในโรงเรียน ที่เราไม่ได้สร้าง associations หรือ intuition ว่าสิ่งนี้สำคัญยังไง น่าสนใจยังไง ส่วนมากเรียนมาแล้วก็ลืม
 

2. Connecting the dots

เราไม่มองความรู้ต่างๆ ว่ามันเป็น "วิชา" ที่แยกออกจากกันอย่างชัดเจน วิชาเป็นแค่ "เลนส์" ที่เราศึกษาส่วนเล็กๆ ของธรรมชาติ ทำให้เราพยายามหาความเชื่อมโยงระหว่างศาสตร์ต่างๆ ว่ามันผสมผสานกันยังไง
 
ถ้ายกตัวอย่างสองโปรเจคข้างบน คำถามที่เราถามมักจะครอบคลุมหลายศาสตร์ ไม่ได้คิดแค่ element ของศาสตร์เดียว เช่นองค์ประกอบท่ารำเกิดขึ้นมาจากการผสมผสานกันของการเขียนโปรแกรม นาฎศิลป์ คณิตศาสตร์ และฟิสิกส์ หรือ payload ที่ส่งขึ้นเกิดจากศิลปศาสตร์ ชีววิทยา และวิศวะกรรมคอมพิวเตอร์
 
เวลาที่เราออกแบบอะไร เราไม่ได้คิดแค่ในมุม technology ว่าเราจะสร้างมันขึ้นมาได้ยังไง เชิงโค้ด เชิงโมเลกุล แต่มันมักจะมีมุม human และ aesthetic ว่าเราต้องการจะสื่อสารอะไรออกไป คนจะรับสารและเข้าใจสิ่งนี้ได้ยังไงบ้าง เวลาเราทำ product กับคนวงต่างๆ
 
ในงานของ Creatorsgarten ที่เราจัดในปีนี้ เราก็ชวนตั้งคำถามถึง intersection ของงานต่างๆ อย่าง Sci-ย-ศาสตร์ ที่พูดถึงไสยศาสตร์ในสัปดาห์วิทยาศาสตร์ เช่น ตำแหน่งของประตูอุโบสถ มีความสอดคล้องกับดาราศาสตร์ยังไง ไปจนถึงการสร้างกุมารทองโดยใช้ brain stimulation และ generative AI
 
อีกงานที่น่าสนใจคือ biological aesthetic of nature ที่เล่าถึงการสร้าง biological circuits ที่ผสมผสานชีววิทยาเข้ากับการพัฒนาซอฟต์แวร์ เป็นการสร้างโปรแกรมแบบใหม่ๆ ที่ใช้ DNA เป็นองค์ประกอบหลัก
 

3. Hacker Culture

เจอปัญหาอะไร สร้างเลย ไม่ต้องรอคนมาแก้ปัญหาให้ สนุกกับการทำความเข้าใจว่าสิ่งหนึ่งสร้างขึ้นมาได้ยังไง แล้วพยายามแกะ แงะ และ "hack" ให้มันทำอย่างอื่นที่เราต้องการได้
 
วัฒนธรรม hacker culture เป็นอะไรที่เราชอบมาก โดยเฉพาะวงการ dev ที่เราชอบเห็นคนเอาเกม DOOM ไปรันบนที่แปลกๆ พวกจอตู้เย็น เครื่องซักผ้า เครื่องตรวจครรภ์ มันเกิดจากการที่เราเข้าใจลึกพอว่าสิ่งนึงทำงานยังไง ไปจนถึง fundamentals ของมัน แล้วเราสามารถ exploit มันได้
 
หลายครั้ง เราชอบมองข้ามปัญหาที่เราเจอ หรืออดทนอยู่กับมันไป แต่การแก้ปัญหาที่เราเจอในชีวิตประจำวัน หรือในวงการที่เราอยู่ เป็นหนึ่งในวิธีที่ทำให้เราเรียนรู้เรื่องต่างๆ ได้เยอะและรวดเร็วมาก
 
วัฒนธรรมการ hack ของ MIT เริ่มจากคู่มือนักเรียนที่พูดถึง MIT hacks ว่าการแฮคคือเรื่องที่สร้างสรรค์ และทำได้ ต้องทำอย่างปลอดภัย ทุกปีก็จะมีเด็ก MIT ขนรถตำรวจขึ้นไปบนดาดฟ้ามหาวิทยาลัยบ้างเอาโดรนมาส่งจดหมายยินดีต้อนรับรุ่นน้องมาก เราว่ามันได้ใช้ความรู้ในแบบที่ playful มากๆ
 
ตอนเราจัด side projects showdown ตอนนั้นเห็น hacker culture ในไทยได้ชัดมาก มีตั้งแต่คนสร้าง AI waifu เพราะเหงาไม่มีแฟน, คนสร้างเกม laser tag มาเล่นเองกับเพื่อน, สร้าง framework ที่เร็วเกือบเท่า Rust ขึ้นมา ทุกคนอยากได้อะไรก็สร้างเอง แล้วมันได้รู้อะไรเยอะมาก
 
อีกงานที่เห็นภาพนี้ได้ชัด ก็หนีไม่พ้น stupid hackathon ที่เพื่อนๆ เราจัดกันมา 7 ปีแล้ว ทุกปีก็จะมีอะไรเจ๋งๆ อย่างแอพเจิมโค้ดให้ศักดิ์สิทธิ์ ภาษาโปรแกรมอุ๋ง แอพวาดวงกลมบนโลโก้เหมือนคิดมาแล้ว ถึงไอเดียจะไร้สาระมาก แต่ในมุมโค้ดมันได้เล่นกับ tech ที่ทำให้เราได้รู้อะไรเยอะขึ้นมาก
 

4. Learning in Public

อย่าเรียนอะไรคนเดียว ออกมาสร้าง ออกมาแชร์เยอะๆ ให้คนอื่นเห็นด้วย
 
เวลาเรานึกถึงการใช้ความคิด เรามักจะนึกถึงรูปปั้น The Thinker ที่ใช้เวลาขบคิดอยู่คนเดียว แต่การทำงานในโลกจริงมันต้อง bounce ideas around มันต้อง remix ideas มากๆ เรามองว่าการ learn in public มันทำให้คนอื่นได้รู้จักเรามากขึ้น ได้เรียนรู้จากสิ่งที่เราสร้างขึ้นมา
 
หลังจากที่เราได้เรียนรู้อะไร ลองเอามาแชร์ดู จะวาดรูปสรุปเนื้อหา จะพูดทอล์คในที่สาธารณะ เอามาแต่งเพลง เขียนบล็อก เขียนบทความ เขียนโปรแกรม ทำ TikTok เราว่ามันทำให้คนอื่นเอาสิ่งที่เราสร้างไปใช้ประโยชน์ต่อได้
 
ใน bangkok open source ที่เราจัดตอนต้นเดือนมีนาคมไป เราชอบที่ทุกคนไม่ได้เก็บโปรเจคตัวเองไว้เป็นความลับ แต่มัน learn in public จริงๆ ทั้งใน Discord ใน GitHub รวมถึงมาแชร์กันเรื่อยๆ พอมันไม่ได้แข่งกัน มันเลยเกิด collaboration ที่คนกล้าเรียนรู้ไปด้วยกัน