ทำไมควรเรียนรู้ภาษา JavaScript ?
Table of contents
Intro
JavaScript (JS) คือภาษาคอมพิวเตอร์ชนิดหนึ่ง (ไม่ขอเล่าความเป็นมาละกันจะยาวไป) ที่มีอัตราเติบโตสูงมาก ๆ อ้างอิงข้อมูลจาก Stackoverflow (เว็บไซต์อารมณ์คล้าย ๆ Pantip ของชาวโปรแกรมเมอร์) ได้ทำแบบสำรวจทุกปีไว้ (ล่าสุด 2019) สถิติเทคโนโลยียอดนิยม เป็นอัน 1 (ที่มา https://insights.stackoverflow.com/survey/2019#most-popular-technologies)
Most Popular Technologies (Programming Script 2019)
(ที่มา https://insights.stackoverflow.com/survey/2019#most-popular-technologies)
ทำไมควรเรียน JavaScript ?
ทีนี้มาดูปัจจัย 6 ข้อที่ผมพยายามสรุปว่า ทำไมควรเรียน JavaScript ?
1. ง่ายต่อการเริ่มต้น (แค่คุณมี Web Browser คุณก็เขียน JS ได้แล้ว)
ข้อนี้ไม่ได้จะอวยนะครับ แต่คือภาษาอื่น ๆ ส่วนใหญ่ ต้องลงตัวแปลภาษา (Compiler) ตั้งค่า Env (Environment) ก่อนถึงจะเขียนและแสดงผลออกได้ แต่สำหรับภาษา JS คุณสามารถฝึกเขียนได้ผ่านหน้า Console ของ Dev-Tools ของ Web Browser ได้เลย อีกทั้งภาษา JS นั้นเป็นภาษาระดับสูง (หมายถึงมีความใกล้เคียงภาษามนุษย์) ทำให้ง่ายต่อการศึกษา
2. เป็นภาษาอันดับ 1
ถ้าลองหาข้อมูลดูจากชุมชน Stackoverflow หรือชุมชนแหล่งเก็บโค้ดบน Github จะพบว่า Top Language คือ JS โดยผมจะอ้างอิงเชื่อข้อมูลจากแหล่งเหล่านี้มากที่สุด เพราะเป็นแหล่งที่น่าเชื่อถือและใกล้ชิดกับ Developer มากที่สุด และก็รู้ ๆ กันอยู่แล้ว แหล่งอ้างอิง
- https://insights.stackoverflow.com/survey/2019#most-popular-technologies จากชุมชน Stackoverflow
- https://githut.info/ รวบรวมข้อมูลสถิติจาก Github
- https://madnight.github.io/githut/ รวบรวมข้อมูลสถิติจาก Github
- https://www.jetbrains.com/lp/devecosystem-2019/ จาก Research ของ JetBrains ผู้สร้าง IDE ดัง
3. คุ้มเพราะเป็นภาษาเดียวที่ทำได้ (เกือบ) ทุกอย่าง (และดี)
เป็นภาษาเดียวที่ทำได้หลายอย่าง แสดงว่ามันคุ้มต่อการเรียนรู้และศึกษา (มีบางภาษาอื่น ๆ ที่ทำได้หลายอย่างเหมือนกันก็จริงนะครับ แต่จะดีหรือเป็นที่นิยมไหมก็อีกเรื่อง) แล้วทำได้หลายอย่างนั้นมีอะไรบ้างมาดูกัน
- Mobile App: ใช้ React Native
- Web App Frontend: ใช้ React, Vue.js, Angular
- Web App Backtend: ใช้ Node.js
- Desktop App: ใช้ Electron.js
- IoT: Cylon.js, Favor, IoT.js, Noduino
4. เขียนภาษาเดียว และเงินเดือนเฉลี่ยสูง จำนวนความต้องการสูง
ถ้าสมมุติหาโปรแกรมเมอร์เข้าทีม และ Stack ที่ใช้ทั้งหมดเป็น JS มันก็ช่วยลดความหลากหลายของเทคโนโลยีได้ อีกทั้งถ้าลองสืนค้นข้อมูลการรับสมัครงาน (https://th.indeed.com/) ที่เกี่ยวกับภาษา JS จะพบว่าเงินเดือนเฉลี่ยและมีจำนวนความต้องการสูง
5. ฟรีและชุมชุนใหญ่ (มาก ๆ)
เป็นภาษาที่ใช้งานได้ฟรี และเครื่องมือที่ใช้ร่วมหลายตัวก็ฟรีและดี โดยเรื่องสำคัญคือมีชุมชุนที่ใหญ่มาก เรื่องชุมชนมีความสำคัญอย่างไร ? มีความสำคัญอยู่ตรงที่ว่าถ้าหากระหว่างโค้ดแล้วมีปัญหา เราสามารถสืบค้นหรือสอบถามได้ง่าย เพราะมีผู้ใช้งานเยอะนั่นเอง และการมี NPM (เป็น Package manager ของ JS) นั่นทำให้มี Packages Modules จากนักพัฒนาทั่วโลกเยอะมาก เป็นข้อดีที่ช่วยเราได้เยอะเพราะฟังก์ชันบางอย่างเราไม่ต้องสร้างเองก็ได้ สามารถใช้จาก Package อื่น ๆ จากชุมชนได้เลย
6. เป็นภาษาที่มีประสิทธิภาพสูง
ภาษา JS เป็นภาษาที่มีประสิทธิภาพการทำงานดี (ไม่ถึงกับสูงมาก) มีภาษาอื่น ๆ เช่น Go ที่มีประสิทธิภาพสูงกว่า แต่ได้รับความนิยมน้อยกว่า จากที่ได้รวบรวมข้อมูลมาสรุปได้ว่า เป็นเพราะไม่จบในภาษาเดียวและมีชุมชนที่น้อยกว่า โดยประสิทธิภาพของ JS เป็นรอง Go ไม่ได้ทิ้งห่างมาก อีกทั้งยังมีบริษัทระดับโลกก็เลือกใช้สามารถดูได้ที่ https://stackshare.io/stacks
แหล่งศึกษาเรียนรู้ภาษา JS
ผมใช้แหล่งเนื้อหาเหล่านี้เพื่อเรียนรู้ภาษา JS (เพิ่งเรียนเสร็จเลยอยากรวบรวมเนื้อหาไว้ให้ผู้สนใจศึกษา) จะพยายามอัปเดตเนื้อหาเรื่อย ๆ (อันที่จริงผมเขียน JS มานานแล้ว พอมีพื้นฐานมาบ้างสมัยเขียน jQuery) แต่ตอนนี้ JS เปลี่ยนไปมากตั้งแต่เป็น JS ES5/6 ผมเลยจึงต้องเริ่มศึกษาใหม่
ผมรู้สึกว่าการศึกษาพื้นฐานให้แน่นจะดีกว่า ไปศึกษาที่ตัว Tools ก่อนครับ เช่น ผมไปศึกษา React (เป็น Library Framework สำหรับช่วยเขียน JS ตัวหนึ่ง) แต่สุดท้ายต้องกลับมาทบทวน JS ES6 ใหม่ เพราะบางทีก็ติด บางทีก็งง
แหล่งเนื้อหาจะเป็น รายชื่อคอร์ส และลิงก์ต่าง ๆ ที่ผมได้อ่านศึกษานะครับ ลิสไว้ให้เผื่อใครอยากเรียนรู้ครับ 😊 เมื่อเรียนจบแล้วค่อยมาเลือกว่าอยากเรียนรู้ Framework ตัวไหนสำหรับช่วยเขียน โดยตอนนี้มี 3 ตัวที่นิยมคือ React, Vue.js, Angular สามารถหาคอร์สเรียน หาอ่านบทความเปรียบเทียบตามเว็บแหล่งต่าง ๆ ได้ครับ หรือดู Roadmap จากที่นี่ก็ได้ https://roadmap.sh/frontend
-
(Eng) https://javascript.info/
- ระดับ: เริ่มต้น - สูง
- ความง่ายต่อการศึกษา: 85%
- รีวิว: เหมาะกับคนที่มีเวลาศึกษา รายละเอียดครบถ้วน (สอน Code quality ด้วย) มีปุ่มให้กด Edit/Preview Code สำหรับใครอยากศึกษา JS เบื้องต้นอ่านแค่ Part 1 ก็ได้ เอาไว้อ้างอิงได้ หรือจะอ่านให้จบทุก Part ที่เว็บเดียวก็ได้
-
(Eng) https://flaviocopes.com/tags/js/
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 25%
- รีวิว: เหมาะสำหรับผู้ที่มีความรู้อยู่แล้ว เป็นเว็บแนว Blog เอาไว้อ่านเก็บสกิล เวลาว่าง ๆ นอกจากนี้เว็บนี้ยังมี Tags อื่น ๆ ที่น่าสนใจให้อ่านด้วย (เว็บนี้มี E-book พวก JavaScript Vue.js Node.js Express.js React แจกฟรีด้วยนะ)
-
(Thai) https://github.com/mbeaudru/modern-js-cheatsheet/blob/master/translations/th-TH.md
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 35%
- รีวิว: เหมาะสำหรับผู้ที่มีความรู้และเข้าใจมาในระดับนึง บทความออกแนว Cheatsheet (ทำเป็นสรุปเนื้อหา) เนื้อหาครอบคุมถึง ES6 เลย ใครที่มีความรู้อยู่แล้วได้อ่านบทความนี้ก็เพียงพอได้เหมือนกัน อ่านสนุกและสามารถศึกษาโดยใช้เวลาไม่นาน (ไม่น่าเกิน 3 ชม.)
-
(Thai) https://phyblas.hinaboshi.com/saraban/javascript
- ระดับ: เริ่มต้น - สูง
- ความง่ายต่อการศึกษา: 95%
- รีวิว: เป็นเว็บบทความแนว Blog จะมีเนื้อหาสอนอธิบายจากง่ายไปยาก มีการแสดงตัวอย่างในรูปแบบต่าง ๆ ให้แสดงดู (ที่ดัดแปลงหลายแบบ) ส่วนตัวชอบเว็บนี้เพราะอ่านเพลิน (ยกตัวอย่างการเขียนโค้ดร่วมกับการ์ตูนโปรเกม่อน 55+ ชอบ ๆ) ส่วนรายละเอียดก็จัดเต็มเจาะลึกทุกรายละเอียด อ่านเว็บนี้เว็บเดียวก็เพียงพอเหมือนกัน
-
(Thai) https://fb.com/groups/ThaiPGAssociateSociety/permalink/950988315112438/
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 45%
- รีวิว: สรุปพื้นฐาน JS (Thai) อ่านเล่นเพลิน ๆ แต่ควรมีความรู้พื้นฐานก่อนนะครับ
-
(Video Eng) เน้นฟรี 😅
- ระดับ: เริ่มต้น - สูง
- ความง่ายต่อการศึกษา: 70%
- รีวิว: หากไม่ชอบอ่าน ก็แนะนำคอร์สเรียนแบบ Video (แนะนำของต่างประเทศเพราะเนื้อหาแน่นและครบกว่าของคอร์สไทย) ส่วนตัวผมชอบดู Video แบบ Crash course นะครับ คือไม่ยาวมาก แต่เนื้อหาครบเพราะต้องการเรียนเอา Concept เฉย ๆ
- https://www.youtube.com/watch?v=hdI2bqOjy3c
- https://www.youtube.com/watch?v=W6NZfCO5SIk
- https://www.youtube.com/watch?v=PkZNo7MFNFg
- https://www.youtube.com/watch?v=TlB_eWDSMt4
- https://www.youtube.com/watch?v=0ik6X4DJKCc
- https://www.youtube.com/watch?v=fBNz5xF-Kx4
- https://www.youtube.com/watch?v=2qDywOS7VAc
-
(Thai) ความรู้เกี่ยวกับ Promise และ Async/Await
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 35%
- รีวิว: JS นั้นทำงานเป็นแบบ Asynchronous เป็นเสน่ห์ (เหมือนจะดี 😅) ของตัวภาษา เรื่องนี้ต้องเขียน JS มาสักพักก่อนถึงจะเข้าใจ ดังนั้นเนื้อหาเหล่านี้จะอธิบายถึงจัดการเรื่อง Asynchronous ที่รวบรวมไว้ให้ศึกษา
-
(รวม) ความรู้สำหรับอ่านเล่น
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 40%
- รีวิว: เนื้อหาอ่านเล่นเพิ่มสกิล (เดี๋ยวจะอัพเดทเรื่อย ๆ)
- Object-oriented Programming in JavaScript https://www.youtube.com/watch?v=e--K9kCz-v0
- Functional programming in Javascript https://dev.to/damxipo/functional-programming-in-javascript-442p
- สอน Functional Programming แบบละเอียด https://medium.com/p/881efd04d1b3
- Node.js Best Practices https://github.com/goldbergyoni/nodebestpractices
- The Best Node.js Boilerplate to Speed Up Your Project Development https://medium.com/p/a9eca7b07f90
- จัดการ Array แบบง่ายๆ ด้วย Map, Filter, Reduce และผองเพื่อน https://medium.com/p/bfc84e59ebae
-
(React) ความรู้เกี่ยวกับ React
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 35%
- รีวิว: เอกสารเกี่ยวกับ React (ควรเรียน JS ก่อน) (จะอัพเดทเรื่อย ๆ)
- List of top 500 ReactJS Interview Questions & Answers https://github.com/sudheerj/reactjs-interview-questions
-
(Vue.js) ความรู้เกี่ยวกับ Vue.js
- ระดับ: กลาง - สูง
- ความง่ายต่อการศึกษา: 35%
- รีวิว: เอกสารเกี่ยวกับ Vue.js (ควรเรียน JS ก่อน) (จะอัพเดทเรื่อย ๆ)
- 10 สิ่งที่คนเริ่มต้นใช้ Vue.js ควรรู้ https://medium.com/p/ae2968e1156e