จากบทความเรื่อง Ten Things A Serious JavaScript Developer Should Learn
ได้สรุป 10 เรื่องที่ JavaScript Developer ควรเรียนรู้
เพื่อช่วยให้เราเป็นนักพัฒนาที่ดีกว่าเดิม
จึงได้ทำการสรุปและแปลในสิ่งที่น่าสนใจไว้นิดหน่อย
น่าจะพอเป็นประโยชน์บ้างนะ

โดยเริ่มต้นมาจากคำถามใน Reddit
“What 10 Things Should a Serious Javascript Developer Know Right Now?”

เรื่องที่ 1 พื้นฐานของภาษา JavaScript (Core language)

ด้วยตัวภาษา JavaScript นั้นไม่ได้ซับซ้อนอะไรมากนัก
ทั้งขนาดและจำนวน standard library ต่าง ๆ
แต่ว่าหลายสิ่งอย่างเกี่ยวกับ JavaScript มันทำให้มีความซับซ้อนมาก
ทั้ง APIs ต่าง ๆ
ทั้ง jQuery
ทั้ง React
ทั้ง TypeScript
ทั้ง ES5/6/7
ทั้ง library ต่าง ๆ จาก NPM

ดังนั้นสิ่งแรกที่ต้องศึกษาและเข้าใจคือ พื้นฐานของ JavaScript นี่เอง
ประกอบไปด้วย

  • if/else
  • การจัดการ error handling ด้วย try/catch/throw
  • การจัดการ array ทั้ง push/map/reduce/filter
  • การจัดการ string ทั้ง replace/slice/split
  • การจัดการข้อมูลในรูปแบบ JSON

รวมไปถึงความสามารถใหม่ ๆ ที่เพิ่มเข้ามา เช่น async-await, Promise และ module เป็นต้น
ช่วยทำให้เราเข้าใจสิ่งต่าง ๆ มากขึ้น
ช่วยทำให้เรียนรู้สิ่งต่าง ๆ ได้รวดเร็วขึ้นอีกด้วย

โดยหนังสือที่แนะนำให้อ่านคือ Eloquent Javascript
และบทความเรื่อง How to follow the JavaScript roadmap ?

เรื่องที่ 2 เข้าใจเรื่อง Async code (Asynchonous)

เป็น code ที่เจอเป็นปกติของระบบที่พัฒนาด้วยภาษา JavaScript
โดยผลการทำงานจะไม่ตอบกลับโดยทันที
ซึ่งจะขัดแย้งกับภาษาอื่น ๆ พอสมควร
สำหรับผู้เริ่มต้นอาจจะทำให้เกิดความเข้าใจผิดได้

สิ่งที่ควรเรียนรู้ประกอบไปด้วย

  • Callback
  • Promise
  • Event loop

จากนั้นลองเขียน code ด้วย standard library เช่น setTimeout และ fetch เป็นต้น
รวมไปถึง feature ใหม่อย่างเช่น async-await และ RxJS

สิ่งที่สำคัญมาก ๆ คือ การลงมือใช้งานและเขียน async code ขึ้นมา
เพื่อเรียนรู้และเข้าใจรูปแบบการทำงานอย่างแท้จริง

เรื่องที่ 3 ต้องใช้เครื่องมือในการพัฒนาให้คล่องแคล่ว

ความสามารถที่สำคัญของ JavaScript developer คือ
สามารถ debug หรือค้นหาต้นเหตุของปัญหา
รวมทั้งการทำความเข้าใจว่า code ของระบบทำงานอย่างไร
โดยที่เครื่องมือต่าง ๆ สำหรับภาษา JavaScript นั้นมีมากมายให้เลือกใช้งาน
ทั้ง browser เช่น Developer Tool ใน Google Chrome
ทั้ง debugger ต่าง ๆ ใน IDE เช่น VSCode, WebStorm และ Atom เป็นต้น

ดังนั้นนักพัฒนาจำเป็นต้องเชี่ยวชาญในเครื่องมือต่าง ๆ เหล่านี้
มิเช่นนั้นงานของคุณจะยากขึ้นอย่างมาก

เรื่องที่ 4 เรียนรู้งานการออกแบบขั้นพื้นฐาน

จะเรียนรู้เพียง JavaScript อย่างเดียวมันคงยังไม่พอ
มันดูจะปิดกั้นเกินไปสักหน่อย
ดังนั้นสิ่งที่ควรศึกษาเพิ่มเติมคือ HTML และ CSS
จากนั้นทำการศึกษาเรื่องอื่น ๆ เพิ่มเติม เช่น

เรื่องที่ 5 เรียนรู้เกี่ยวกับการจัดการข้อมูลผ่านระบบ Network และ HTTP APIs

สิ่งที่นักพัฒนาต้องไม่พลาดหรือขาดไปคือ
ความรู้พื้นฐานเกี่ยวกับระบบ Network
ยิ่งความรู้เรื่อง HTTP protocol น่าจะขาดไม่ได้เลย
ซึ่งสามารถนำมาต่อยอดในเรื่องของ REST APIs และ AJAX ได้อีกด้วย
รวมไปถึงการเรียกใช้งาน APIs ต่าง ๆ ด้วย JavaScript อีกด้วย

เรื่องเหล่านี้ไม่น่าจะต้องมาพูดคุยว่าทำอย่างไรอีกแล้ว
น่าจะมาคุยว่าทำอย่างไรให้ดีมากกว่า

เรื่องที่ 6 ควรจะต้องรู้ว่าจะใช้ framework หรือ โครงสร้างระบบอย่างไร ในแต่ละงาน

การเลือกเครื่องมือ
การเลือก framework
การวางโครงสร้างของระบบ
ให้เหมาะกับขนาดของงาน
เป็นสิ่งที่สำคัญมาก ๆ ทั้งต่อการพัฒนาและดูแลระบบต่อไป

ดังนั้นก่อนจะลงมือทำอะไร หรือ เลือกอะไร
ต้องมีความรู้ความเข้าใจใน architecture โดยรวมทั้งหมดของระบบก่อน
รู้และเข้าใจปัญหาที่ต้องแก้ไข
จากนั้นจึงเลือกสิ่งที่เหมาะสม

มิเช่นนั้นแทนที่จะมาช่วยแก้ไขปัญหา
อาจจะกลับมาเป็นตัวสร้างปัญหาก็เป็นไปได้

ปล. อย่าลืมศึกษาเครื่องมือและ framework ต่าง ๆ ไว้ด้วย
เพื่อทำให้เราเข้าใจว่าแต่ละอย่างถูกสร้างมาเพื่ออะไร และ เหมาะกับงานลักษณะไหน

เรื่องที่ 7 ต้องเรียนรู้สิ่งใหม่ ๆ อยู่อย่างสม่ำเสมอ

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

ดังนั้นการเลือกแหล่งข้อมูลในการเรียนรู้และติดตามข่าวสารก็สำคัญ
ยกตัวอย่างเช่น

ปล. การเรียนรู้ไม่ใช่การนำมาใช้งานนะ !!

ยังมีเรื่องอื่น ๆ อีกนะครับ
สามารถอ่านเพิ่มเติมได้ที่ Ten Things A Serious JavaScript Developer Should Learn