หลังจากที่อ่านเรื่องของ Web Developer Roadmap 2018 แล้ว
ซึ่งแนะนำเฉพาะส่วนของ Web Developer เท่านั้น
แต่น่าจะมีส่วนของ Backend Developer บ้างนะ
จึงทำการสรุปสิ่งที่น่าจะต้องรู้ไว้นิดหน่อย
ซึ่งคิดว่าเป็นความรู้พื้นฐานแบบติดดินที่ควรรู้ไว้บ้าง
1. เลือกภาษาโปรแกรมสักอย่าง เพื่อเรียนรู้และฝึก ฝึก ฝึก
คำถามแรก จะเลือกภาษาโปรแกรมอะไรดี ? คำตอบคือ ดูความต้องการของตลาดสิ ดูแนวโน้มความนิยมของภาษาต่าง ๆ สิ เท่าที่เห็นจะมี เช่น Node.JS, Java, Python, PHP, C#, Go จากนั้นก็ลงมือทำ ฝึก ฝึก ฝึก เพื่อทำให้เข้าใจแนวคิดพื้นฐานของภาษานั้น เขียนให้เป็น เขียนให้ถูกและดี ที่สำคัญแนะนำให้สร้างระบบเล็ก ๆ ขึ้นมาด้วย เพื่อทำให้เข้าใจมากยิ่งขึ้น2. เรียนรู้พวก Package Management Tool และฝึก ฝึก ฝึก
เป็นสิ่งที่สำคัญมาก ๆ สำหรับการจัดการ library/dependency ต่าง ๆ ที่นำมาใช้ในระบบ ซึ่งแต่ละภาษาก็ใช้เครื่องมือที่แตกต่างกัน คงไม่มีใครที่ยัง copy library/dependency กันนะ !! ยกตัวอย่างเช่น- Java ใช้ Apache Maven และ Gradle
- Python ใช้ PIP
- Node.JS ใช้ NPM และ Yarn
- PHP ใช้ composer
3. เรียนรู้พวกการทดสอบในรูปแบบต่าง ๆ และฝึก ฝึก ฝึก
เนื่องจากการทดสอบแบบอัตโนมัติเป็นสิ่งที่สำคัญมาก ๆ ถ้าเรียนรู้อะไรใหม่ ๆ ควรเรียนรู้มันไปด้วย ทั้งการเขียน Unit test ทั้งการเขียน Integration test ทั้งการเขียน API test ทั้งการเขียน Component test ทั้งการเขียน End-to-End test รวมไปถึงแนวคิดเรื่อของ Test double เช่น Stub และ Mock อีกด้วย จากนั้นก็ลงมือเขียน ฝึก ฝึก ฝึก4. เรียนรู้เรื่องของ RESTful API และฝึก ฝึก ฝึก
เพื่อให้เข้าใจพื้นฐานว่า REST เป็นอย่างไร เนื่องจากระบบ Backend ในปัจจุบันมักจะสร้างตามแนวคิดนี้ รวมทั้งเรื่องรูปแบบข้อมูลที่รับส่งไปมาด้วยทั้ง JSON และ XML ยังไม่พอนะ เรื่องของ Authentication และ Authorization ก็ขาดไม่ได้เลย ต้องทำความเข้าใจเกี่ยวกับวิธีต่าง ๆ ดังนี้ ว่ามีความเหมือนหรือต่าง รวมถึงข้อดีข้อเสียด้วย- Basic Authentication
- Token/Ticket Authentication
- OAuth (Open Authentication Standard)
- JWT (JSON Web Token)
5. เรียนรู้เกี่ยวกับ Database ทั้ง RDBMS และ NoSQL และฝึก ฝึก ฝึก
การจัดเก็บข้อมูลเป็นสิ่งที่สำคัญมาก ๆ ต่อระบบ ดังนั้นต้องศึกษา เพื่อรู็และเข้าใจว่า ที่จัดเก็บข้อมูลมีกี่แบบ แต่ละแบบมีข้อดีข้อเสียอย่างไรบ้าง แต่ละแบบต้องทำการออกแบบอย่างไร ต้องจัดการ transaction อย่างไร ต้องจัดการ index อย่างไร ต้องทำการ normalization อย่างไร เพื่อเลือกใช้ให้ตรงกับความต้องการของแต่ละงานได้ ไม่ใช่ใช้แต่ RDBMS อย่างเดียวกับทุก ๆ งาน ส่วนการเลือกก็ค่อย ๆ เลือกทีละตัว จากความนิยมเช่น- RDBMS อาจจะเลือก MySQL หรือ PosgreSQL
- Document Database อาจจะเลือก MongoDB
- Key-Value Database อาจจะเลือก Redis
- Graph Database อาจจะเลือก Neo4J
6. เรียนรู้เกี่ยวกับการทำ Caching และฝึก ฝึก ฝึก
เป็นอีกสิ่งที่ชาว Backend developer ต้องรู้และเข้าใจ ว่าการทำ caching คืออะไร มีประโยชน์อย่างไร ทำตรงไหนได้บ้าง ทำอย่างไรทั้ง software และ hardware รวมถึงแต่ละแบบมีข้อดีข้อเสียอย่างไรบ้าง7. เรียนรู้ Web Server และ Application Server ที่ใช้งาน
เนื่องจากเราต้องทำการติดตั้งระบบของ Backend บน Web Server และแน่นอนว่ามีให้เลือกหลายตัว ดังนั้นเราควรต้องรู้และเข้าใจว่า Web Server แต่ละตัวมีขีดจำกัดและข้อจำกัดอย่างไร รวมไปถึงการ tunning ค่า configuration ต่าง ๆ ให้เหมาะกับงาน8. เรื่องของ Container
น่าจะเป็นสิ่งที่ขาดไม่ได้เลยสำหรับนักพัฒนา ซึ่งต้องรู้และเข้าใจ ตลอกจนใช้งานเป็น ทั้ง Docker และ Kubernetes เพื่อช่วยทำให้ขั้นตอนในการพัฒนาและติดตั้งระบบงานมีประสิทธิภาพยิ่งขึ้น ถ้าใครยังไม่รู้ ขอบอกเลยว่าเริ่มทันทีนะยังมีเรื่องอื่น ๆ อีกมากมายให้ศึกษาทั้ง
เรื่อง standard ของแต่ละภาษา เรื่องการจัดการ security เรื่องจาก Messaging Serverวันนี้ Backend Developer เรียนรู้อะไรกันอยู่บ้าง มีอะไรบ้างที่ยังไม่รู้ ไม่เข้าใจ จงเรียนรู้กันได้แล้วนะ และจงเรียนรู้กันต่อไปขอให้สนุกกับการ coding ครับ