Tutorial

Programming 101 - How to learn new technology lightning fast

By Arnon Puitrakul - 09 ตุลาคม 2017

Programming 101 - How to learn new technology lightning fast

เรื่องของเทคโนโลยีจัดว่าเป็นเรื่องที่มาไวและไปไวกว่า มาเร็วเคลมเร็วของประกันซะอีก ดูอย่างเรื่องของ Framework ที่ปัจจุบันผุดขึ้นยังกะดอกเห็ด

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

Start with WHY

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

ทำไมเขาถึงเขียนขึ้นมา ?

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

การลงมือทำคือวิธีที่ดีที่สุด

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

เชื่อว่าใครที่เขียน React ทุกคนต้องรู้จักสิ่งที่เรียกว่า create-react-app แน่นอน สำหรับใครที่ไม่รู้จัก มันคือ Boilerplate สำหรับการสร้าง Web App ผ่าน React แรก ๆ ที่ผมหัดใช้ก็ใช้ผ่านเจ้า Boilerplate นี่แหละ แต่พอเขียน ๆ ไปกลับรู้สึกว่าตัวเองไม่เข้าใจเลยว่า ทำไมมันถึงต้องเขียนแบบนั้น ทำไมต้องทำแบบนี้ จนวันนึงก็ตัดสินใจลองเริ่มตั้งแต่ต้นเลย เริ่มตั้งแต่ Webpack ไปยัน React เองทั้งหมดเลย มันช่วยอยู่นะ จากที่เป็นนกแก้วนกขุนทองเขียนตาม Document ไป กลับเข้าใจเลยว่า แต่ละบรรทัดมันมายังไง และมันทำอะไร

พื้นฐานต้องมา !

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

คุณเข้าใจมันจริง ๆ รึเปล่า

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

สรุป

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

Read Next...

โหลด CSV วิธีไหนเร็วที่สุด ?

โหลด CSV วิธีไหนเร็วที่สุด ?

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

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ตั้งแต่ใช้ Obsidian เป็น App จด Note หลัก ชอบวิธีการจัดการมาก ๆ เมื่อใช้งานร่วมกับ Plugin ต่าง ๆ ยิ่งทำให้การใช้งานยืดหยุ่นมากกว่าเดิมอีกเยอะมาก ๆ ติดอยู่เรื่องเดียวคือ การใช้งานในหลาย ๆ อุปกรณ์ แต่เราเจอ Plugin ตัวนึงที่น่าสนใจมาก ๆ คือ LiveSync วันนี้เราจะมาเล่าวิธีการติดตั้ง และใช้งานมันกัน...

การสร้าง SSD Storage Pool บน Synology DSM

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน...

Multiprogramming, Multiprocessing และ Multithreading

Multiprogramming, Multiprocessing และ Multithreading

หลังจากที่เรามาเล่าเรื่อง malloc() มีคนอยากให้มาเล่าเรื่อง pthread เพื่อให้สามารถยัด Content ที่ละเอียด และเข้าใจง่ายในเวลาที่ไม่นานเกินไป เลยจะมาเล่าพื้นฐานที่สำคัญของคำ 3 คำคือ Multiprogramming, Multitasking, Multiprocessing และ Multithreading...