จากบทความเรื่อง 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