หลังจากที่อ่านเรื่องของ 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 ครับ