อยากเป็นโปรแกรมเมอร์เว็บ เริ่มต้นอย่างไร เส้นทางจริงจากคนสอน
ผมสอนวิชาเขียนโปรแกรมและเขียนเว็บมาหลายรุ่น และเห็นรูปแบบหนึ่งซ้ำทุกปี คือคนที่เริ่มเร็วที่สุดมักไม่ใช่คนที่ไปได้ไกลที่สุด ส่วนคนที่ค่อย ๆ ทำความเข้าใจพื้นฐานให้แน่นก่อน มักแซงในปีที่สอง
บทความนี้ไม่ใช่รายการคอร์สที่ต้องเรียน แต่เป็นลำดับที่ผมเห็นว่าได้ผลจริง พร้อมเรื่องที่มักไม่มีใครบอก
ลำดับที่ควรเรียน
ขั้นที่ 1 HTML และ CSS
ใช้เวลาประมาณ 1–2 เดือนถ้าฝึกสม่ำเสมอ เป้าหมายไม่ใช่ท่องแท็กให้ครบ แต่คือทำหน้าเว็บที่ใช้ได้จริงบนทั้งมือถือและคอมพิวเตอร์
ส่วนที่ยากที่สุดของขั้นนี้คือ CSS โดยเฉพาะการจัดวาง ให้ฝึก Flexbox กับ Grid ให้คล่อง เพราะเป็นสิ่งที่ใช้ทุกวันในงานจริง
ขั้นที่ 2 JavaScript พื้นฐาน
ตรงนี้คือจุดที่คนถอดใจมากที่สุด เพราะเริ่มมีตรรกะการเขียนโปรแกรมจริง ๆ เข้ามา สิ่งที่ต้องแน่นคือ
- ตัวแปรและชนิดข้อมูล
- เงื่อนไขและการวนซ้ำ
- ฟังก์ชัน และการส่งค่ากลับ
- อาเรย์กับอ็อบเจกต์ และการวนอ่านข้อมูลในนั้น
- การจัดการ DOM คือการสั่งให้หน้าเว็บเปลี่ยนแปลง
อย่าเพิ่งไปแตะเฟรมเวิร์กใด ๆ ในขั้นนี้ ถ้าข้ามไปเรียนเครื่องมือสำเร็จรูปตอนที่ยังไม่แน่น พอเจอปัญหาจริงจะแก้ไม่ได้ เพราะไม่รู้ว่าเครื่องมือทำอะไรให้อยู่เบื้องหลัง
ขั้นที่ 3 ฝั่งเซิร์ฟเวอร์และฐานข้อมูล
เลือกภาษาหนึ่งภาษา จะเป็น PHP, Python หรือ JavaScript ฝั่งเซิร์ฟเวอร์ก็ได้ แล้วเรียนคู่กับฐานข้อมูล SQL
สิ่งที่ต้องทำให้ได้คือระบบ เพิ่ม อ่าน แก้ไข ลบ ข้อมูล ถ้าทำสี่อย่างนี้ได้เอง แปลว่าเข้าใจการทำงานของเว็บทั้งวงจรแล้ว
ขั้นที่ 4 ความปลอดภัยและการนำขึ้นออนไลน์
ขั้นนี้แยกคนที่ทำเว็บเป็นงานอดิเรกออกจากคนที่ทำเป็นอาชีพ อย่างน้อยต้องรู้จัก
- การโจมตีแบบ SQL Injection และวิธีป้องกันด้วยการใช้คำสั่งแบบมีพารามิเตอร์
- การโจมตีแบบ XSS และเหตุผลที่ต้องแปลงอักขระพิเศษก่อนแสดงผล
- การเก็บรหัสผ่านด้วยการเข้ารหัสทางเดียว ไม่ใช่เก็บเป็นข้อความ
แนวทางมาตรฐานที่ทั้งโลกใช้อ้างอิงคือ OWASP Top 10 ซึ่งรวบรวมช่องโหว่ที่พบบ่อยที่สุดไว้ ควรอ่านผ่านตาอย่างน้อยหนึ่งรอบ
สิ่งที่ยังไม่ต้องรีบเรียน
เวลามีจำกัด การรู้ว่าอะไร "ยังไม่ต้อง" สำคัญพอกับการรู้ว่าต้องเรียนอะไร
| เรื่อง | ควรเรียนเมื่อไหร่ |
|---|---|
| เฟรมเวิร์กฝั่งหน้าเว็บ | เมื่อ JavaScript พื้นฐานแน่นแล้ว |
| TypeScript | เมื่อเขียน JavaScript จนเริ่มรู้สึกว่าโปรเจกต์ใหญ่เกินคุม |
| Docker และงานระบบ | เมื่อเริ่มทำงานเป็นทีมหรือดูแลเซิร์ฟเวอร์เอง |
| อัลกอริทึมขั้นสูง | เมื่อเตรียมสอบสัมภาษณ์บริษัทใหญ่ |
โปรเจกต์แบบไหนที่ใช้สมัครงานได้จริง
โปรเจกต์ที่ทำตามคลิปสอนแบบทำตามทุกขั้นตอน แทบไม่มีน้ำหนักเลยในสายตาคนสัมภาษณ์ เพราะเขาเห็นโปรเจกต์เดียวกันจากผู้สมัครสิบคน
สิ่งที่มีน้ำหนักคือ
- ระบบที่แก้ปัญหาจริงของใครสักคน เช่น ระบบเช็คชื่อให้ครูที่โรงเรียน ระบบจดออเดอร์ให้ร้านที่บ้าน ขนาดเล็กได้ แต่ต้องมีคนใช้จริง
- เล่าได้ว่าตัดสินใจอะไรและทำไม ทำไมเลือกเก็บข้อมูลแบบนี้ ทำไมทำหน้านี้แบบนี้
- เล่าได้ว่าติดปัญหาอะไรและแก้อย่างไร ส่วนนี้คนสัมภาษณ์สนใจมากที่สุด เพราะสะท้อนวิธีคิดเวลาเจอของจริง
ความจริงที่คนไม่ค่อยพูด
ส่วนที่ยากที่สุดของอาชีพนี้ไม่ใช่ภาษาโปรแกรม
ภาษาเรียนได้ในไม่กี่เดือน แต่สิ่งที่ใช้เวลาเป็นปีคือ
- การอ่านโค้ดคนอื่น งานจริงส่วนใหญ่คือแก้ของที่มีอยู่แล้ว ไม่ใช่เขียนใหม่จากศูนย์
- การแยกแยะว่าปัญหาอยู่ตรงไหน เมื่อระบบพัง สิ่งที่ยากคือหาสาเหตุ ไม่ใช่การแก้
- การคุยกับคนที่ไม่ใช่โปรแกรมเมอร์ ลูกค้าบอกสิ่งที่เขาอยากได้ ไม่ใช่สิ่งที่เขาต้องการจริง หน้าที่เราคือหาให้เจอว่าปัญหาที่แท้จริงคืออะไร
ข้อสุดท้ายนี้แหละที่แยกคนที่เขียนโค้ดเป็น ออกจากคนที่ทำงานเป็น
สรุป
เรียงลำดับ HTML → CSS → JavaScript → ฝั่งเซิร์ฟเวอร์และฐานข้อมูล → ความปลอดภัย อย่าข้ามขั้น และอย่ารีบไปเรียนเครื่องมือใหม่ ๆ ก่อนที่พื้นฐานจะแน่น
ที่สำคัญที่สุดคือลงมือทำโปรเจกต์ที่มีคนใช้จริง แม้จะเล็กแค่ไหนก็ตาม เพราะการแก้ปัญหาที่เกิดจากผู้ใช้จริง สอนได้มากกว่าบทเรียนสิบบท