พี่ครับผมจะเริ่มเขียนโปรแกรมยังไงดี ?

ผมคิดว่าหลายคนที่เป็นโปรแกรมเมอร์ต้องเจอคำถามนี้บ่อยมากๆครับ ผมเลยคิดว่าน่าจะเขียนบทคามเกี่ยวกับเรื่องให้เป็นแนวทางและไม่ต้องเขียนตอบให้เสียเวลา โดยถ้าตกหล่นอะไร สามารถแนะนำเพิ่มเติมได้นะครับ โดยบทความนี้จะเป็นการแนะนำมือใหม่หรือใครที่กำลังจะเปลี่ยนสายงานเพื่อมาลองทำอาชีพด้านนี้ว่าต้องเตรียมตัวอะไรบ้างครับ

เลือกว่าจะเขียนโปรแกรมสำหรับอะไร

สิ่งแรกที่คุณต้องเตรียมตัวเตรียมใจคือ การเลือกว่าจะเขียนโปรแกรมสำหรับเรื่องอะไร เช่น คุณอยากเรียนเว็บ หรือว่าคุณอยากเขียนโปรแกรมเพื่อควบคุมอุปกรณ์บางอย่าง หรือว่าเขียนมาเพื่อให้โปรแกรมทำเรื่องบางอย่างให้บนระบบปฎิบัติการ window หรือว่า mac หรือจะเขียนเป็น app บนมือถือ หรือเขียนควบคุม network จะสังเกตุว่าว่ามันเยอะมากๆ เพราะฉะนั้นเวลาคุณถามในกลุ่มคนส่วนใหญ่จึงตอบยากว่า จะแนะนำคุณให้เขียนอะไร เพราะถ้าตัวคุณเองยังไม่รู้ใครจะช่วยได้ละครับ

เพราะฉะนั้นคุณควรจะรู้ก่อนว่าสิ่งที่คุณต้องการเขียนโปรแกรมนั้นเพื่อทำงานเกี่ยวกับด้านไหน คนในวงการนั้นๆจะได้ช่วยตอบให้ถูกต้องครับ

ไม่รู้จะเลือกเรียนอะไรอยากเรียนเพื่อหางานทำเอาล่ะงั้นดูสถิติกันว่าภาษาไหนมาแรงเป็นที่ต้องการของตลาด

อ้างอิง: https://becominghuman.ai/top-20-most-popular-programming-languages-for-2021-and-beyond-735ee8370c61
อ้างอิง: https://towardsdatascience.com/top-10-in-demand-programming-languages-to-learn-in-2020-4462eb7d8d3e

ผมเอามาให้ดูคราวๆ ที่เหลือต้องไปอ่านเองอีกหน่อยในแหล่งที่อ้างอิงนะครับ ถ้าตลาดงานในไทยผมคิดว่าอย่างแรกที่คุณควรเรียนเลยคือ javascript ครับแล้วก็พวก node, react, vui, html, css ไม่ก็ไป Python ครับถ้ายังนึกไม่ออกอีกลองดู link ด้านล่างครับ

เลือกสายที่จะเรียนแล้ว … ไงต่อ ?

ขั้นตอนต่อไปคือ หาวิธีเรียนรู้ที่เหมาะกับตัวเอง สำหรับผมแล้วผมแนะนำให้เรียนจากพวก คอร์ส online จะไทยหรืออังกฤษแล้วแต่คุณสะดวกกับงบประมาณเลย ถามว่าทำไม ? ถึงเรียนพวกคอร์ส online ด้วย ในเมื่อหลายๆคนชอบบอกว่า หาอ่านฟรีในเน็ตสิ หาใน youtube ก็ได้ เหตุผลว่าทำไมถึงให้เรียนพวกคอร์สเสียเงินตามนี้เลยครับ

  • มีการเรียงลำดับการเรียนรู้ที่ดี คือเวลาคุณหาอ่านใน internet นั้นพวกความรู้จะเป็นแนวๆคำตอบมากกว่าสอนว่าทำไมต้องเขียนแบบนั้น ทำไมต้องทำแบบนี้ หรือคุณอาจจะไม่ได้รู้พื้นฐานเลย แต่ถ้าคุณหาอ่านพวกของฟรี มันก็มีของดีแหละ แต่ต้องอ่านเยอะหน่อย แต่ถ้าคุณเรียนกับพวกคอร์สแล้วเขาจะมีจัดลำดับความรู้ว่าคุณต้องรู้อะไร ก่อน หลัง ทำให้คุณเข้าใจได้ง่ายขึ้น
  • ราคาไม่แพงแล้ว คอร์สเสียเงินปัจจุบันนั้นมีราคาที่ไม่แพงแล้วครับ ถ้าของภาษาอังกฤษนั้นก็ราคาตก 300 – 500 บาท สอนค่อนข้างละเอียด แต่ถ้าคุณไม่ถนัดของไทยนั้นก็ไม่แพงมากครับประมาณ 1,000 – 2,000 บาท ซึ่งหลังจากคุณเรียนจบก็พอจะทำงานพื้นฐานได้บ้างแล้ว
  • คนสอนเต็มใจที่จะตอบ คือการที่คุณไปอ่านบทความฟรี บางครั้งคุณอยากจะถามอะไรบางอย่าง แต่บางทีคนตอบนั้นก็ต้องหาเวลาว่างมาตอบคุณ แต่ถ้าคุณลงเรียนพวกคอร์สส่วนใหญ่แล้วผู้สอนจะรีบตอบและช่วยเหลือผู้ เพราะคุณจ่ายเงินมาเรียนการตอบมันต่างกันจริงๆ อันนี้เจอกับตัว

การเรียนรู้เบื้องต้นผมแนะนำว่าคุณต้องหาการเรียนรู้ที่เหมาะกับคุณเองด้วย เพราะอย่างผมเองนั้นก็ชอบอ่านหนังสือ เพราะยุคของผมนั้นไม่มี internet ที่เร็วเท่ากับปัจจุบัน การอ่านหนังสือก็จะมีส่ิงที่แย่ตรงที่ว่าเนื้อหาจะเก่ากว่าสิ่งที่เราใช้งานปัจจุบัน เช่น ตอนนั้นเรียนภาษาหนึ่ง version 3 แต่ปัจจุบันอาจจะ version 7 แล้วอย่างนี้ครับ นี่เป็นเหตุผลหนึ่งที่ไม่ค่อยมีหนังสือสอนเขียนโปรแกรมในไทย เพราะกว่าจะเขียนเสร็จปรากฎว่าภาษานั้นๆอาจจะออกเวอร์ชั่นใหม่แล้วครับ

แต่ข้อดีของหนังสือคือไม่ต้องใช้ internet สามารถเปิดดูเมื่อไหร่ก็ได้ แต่อาจจะหนักหน่อย ครับอาจจะหาอ่านแบบ pdf ก็ได้ถ้าสะดวกซื้อแบบ digital

เรามาดูว่าเว็บที่เป็นพวก vdo course online มีเว็บไหนบ้างๅๅ

  • https://www.udemy.com/ เว็บที่ผมซื้อคอร์สค่อนข้างบ่อยเลยก็ของ udemy เนี้ยแหละครับ มีทั้งคอร์สฟรีและเสียเงิน
  • https://zinglecode.com/ สอนความรู้ฟรีของคนไทย ภาษาไทยนะครับ แต่ถ้าคุณอยากจะทำพวก workshop ( workshop คืออะไรไปอ่านที่หัวข้อ ฝึก ฝึก ฝึก ครับ ) ก็จะเสียเงินเล็กน้อยผมว่าโอเคเลยครับ
  • https://www.appzstory.dev/ อันนี้เป็นสอนภาษาไทยมีทั้งฟรี และก็เสียเงินราคาอาจจะค่อนข้างสูงหน่อยสำหรับคนเริ่มต้น แต่สิ่งที่เขาสอนผมไล่ดูแล้วก็ครบและทางผู้สอนเองก็ตอบคำถามอยู่เรื่อยๆ

หรือถ้าคุณชอบแนวๆเขียนโปรแกรมแบบ online ได้เห็นผลลัพธ์ก่อนก็ลองที่บทความนี้ได้นะครับ

https://devahoy.com/blog/2016/05/10-webs-to-learn-programming-with-game/

แล้วของ Free ไม่มีเลยหรอ ? มีครับเว็บนี้ก็เป็นอีก 1 ช่องทางครับ ( ขายของกันหน่อย ) หากเริ่มเขียนสอนทำเว็บอยู่คุณสามารถเริ่มเรียนรู้ได้จาก link ด้านล่างเลยครับ

ไปเรียนรู้กันครับเลย

สำหรับเว็บให้สอนฟรีแบบค่อยๆอ่านและไล่เป็นบทความผมแนะนำเว็บ

https://www.w3schools.com/

โดยเว็บนี้น่าจะเป็นอาจารย์ของใครหลายๆคนนะครับ ลองเข้าไปดูหัวข้อภาษาที่อยากเรียนนะครับ ส่วนใหญ่จะเป็นสายด้านเว็บครับ

ผมถ้าเป็นช่อง youtube ที่ผมติดตามอยู่ก็มีตามนี้เลยครับ แต่ส่วนใหญ่จะเป็นเกี่ยวกับด้านทำเว็บนะครับ ก็ใช่อ่ะสิผมเป็น web developer นะ

การเรียนรู้อีกแบบที่ค่อนข้างดีและได้เรียนรู้พวกทำ workshop ไปในตัวคือการเรียนแบบสอนสดครับ แต่ข้อเสียคืออาจจะราคาสูงหน่อย แต่คุณจะได้คุยกับผู้สอนโดยตรง ซึ่งจะได้ผลลัพธ์ค่อนข้างดีกว่า ข้อเสียของ vdo คือคุณอาจจะเรียนไม่หมดเพราะมันเยอะจริงๆ ผมมีคอร์สซื้อไว้เยอะมากและเรียนไม่หมด แต่การเรียนแบบสอนสดคุณจะมีสมาธิเพราะว่าผู้สอนก็จะตั้งใจสอนคุณและมีการถามตอบแบบสดๆทำให้คุณต้องตั้งใจเรียน ณ ตอนนั้นนี่คิดสิ่งที่ต่างกับการเรียนผ่าน vdo ครับ

ฝึก ฝึก ฝึก

การเขียนเป็นโปรแกรมเป็นทักษะ และทักษะจะเก่งต้องฝึกฝนครับ เพราะฉะนั้นหลังจากเรียนรู้แล้วว่ามันทำงานอย่างไร เขียนยังไง ก็หาตัวอย่างใน internet หรือหนังสือเอาที่คุณสะดวกเลย ฝึกทำโจทย์ครับ โดยสกิลที่ต้องพัฒนาตรงนี้คือการ ฝึกคิด สังเกตุ และสงสัยครับ

แต่เป็นในกรณีตัวอย่างจากผมเอง แต่ก่อนผมฝึกเขียน PHP ก็ซื้อหนังสือมา 2 เล่ม เล่มแรกคือเป็นหนังสือสำหรับอธิบาย ถ้าปัจจุบันมันก็คือเว็บ php.net นั่นเอง ไว้อ้างอิงว่า function เขียนยังไง if then else คืออะไร ส่วนอีกเล่มเป็นแนวที่ผมเรียกว่า workshop ครับคือ มีโจทย์ให้แล้วเขียนขึ้นมา เช่นเป็นโจทย์ วิธีทำ login page วิธีทำ calendar วิธีทำ webboard หรือตอบกระทู้ คุณจะยังไม่ได้เก่งขึ้นทันทีแต่คุณจะเริ่มเชื่อมโยงได้ว่า สิ่งที่คุณเรียนรู้นั้นมันเอาไปทำยังไงในงานจริงๆ ส่งค่ายังไง ทำหน้าตายังไง

ถ้าไม่รู้จะหาโจทย์แบบไหน ลองเว็บด้านล่างนี้ครับ

  • https://www.codewars.com เว็บนี้รวมหลายภาษามีทั้งยากและง่าย มีโจทย์ให้เราได้ฝึกคิดและสามารถกด test online ได้เลยเราจะรู้ว่าการเขียนของเรายากหรือง่าย ถูกต้องไหม ถ้าผ่านหมดเขาจะเปิดเผยวิธีที่คนอื่นทำว่า เขาเขียนได้สั้นและเข้าใจง่ายแค่ไหน
  • https://mademindday.com/curated-learn-code-online/ บทความเว็บนี้รวมทุกอย่างที่เกี่ยวกับ code ถ้าสนใจลองไปเลือกๆดูครับ

ผมว่าสองเว็บข้างบนคุณสามารถทำโจทย์ได้เยอะแหละครับ ไม่อย่างนั้นก็ลองหาสิ่งที่อยากทำแล้วค่อยๆ ทำขึ้นมา เช่น คุณอาจจะอยากทำโปรแกรมแชท คุณต้องลองทำให้สามารถพิมพ์ค่าในช่องความได้ก่อน แล้วลองส่งค่าไปเก็บในฐานข้อมูล แบบนี้ครับค่อยๆทำค่อยๆคิดครับ

ผมอยากเน้นย้ำตรงจุดนี้ว่า ถ้าคุณเจอเนื้อหาที่เหมาะกับคุณแล้วอย่าหยุดที่จะเรียนเพิ่มเติมครับ เช่น ถ้าคุณเจอหนังสือที่สอนเข้าใจก็ลองซื้อเล่มอื่นมาประกอบเพิ่มเติม เพราะผมเชื่อเหลือเกินว่าหนังสือ 1 เล่มมันบอกไม่หมดหรอกครับ หรือแม้แต่ คอร์สเพียงคอร์สเดียวไม่ได้ช่วยให้คุณกระจ่างในสิ่งนั้นๆ ลองหาอ่านเพิ่มเติมดู ทุกวันนี้ผมก็พยายามอ่านจากหลายๆแหล่งแล้วพบว่า บางครั้งคุณอาจจะเจอวิธีการอธิบายให้เข้าใจได้ง่ายกว่าเดิมหรือได้เรียนรู้เทคนิคบางอย่างที่ไม่มีในสิ่งที่คุณเรียนรู้มาตอนแรกครับ

ภาษาอังกฤษไม่เก่งเรียนได้ไหม … ?

ผมอยากจะบอกตรงนี้เลยว่า ถ้าคุณไม่เก่งแล้วเมื่อไรจะเก่ง ต้องรออะไรไหม หรือไม่มีเวลาเรียนรู้หรือเปล่า ? ถ้าไม่ติดอะไรเลยแล้วคุณรออะไรอยู่ล่ะ ? รอคนมาสอน ? เพราะอ่านไม่รู้เรื่อง ? เพราะตัวเราเองหรือเปล่า ? ไม่ว่าด้วยเหตุผลอะไรแล้วนั้น สิ่งที่ผมอยากจะบอกคือ

ไม่ว่ายังไง คุณก็หนีภาษาอังกฤษไม่พ้นถ้าคุณจะเขียนโปรแกรม

oxygenyoyo

เพราะความรู้ด้านเขียนโปรแกรมเราเรียนรู้จากต่างประเทศ คนไทยไม่ได้เป็นคนสร้างภาษาโปรแกรมเพราะฉะนั้น ไม่มีทางเลยที่คุณจะใช้แค่ภาษาไทยแล้วจะไปได้ไกลในสายงานนี้ ยังไงก็ต้องมีความรู้ไว้บ้าง

ถ้าคุณต้องรอบทความภาษาไทยออกมาแล้วละก็ความรู้ของคุณอาจจะเก่าไปแล้วด้วยซ้ำ กว่าจะมีคนแปล กว่าจะมีคนทำความเข้าใจ เขาก็ฝึกนำหน้าเราไปแล้ว แล้วหลายๆความรู้นั้นยังไม่ได้มีคนแปลออกมาถ้าเขาไม่ได้คิดจะเขียนบอก เพราะฉะนั้นยังไงภาษาอังกฤษก็โครตสำคัญ

นอกจากเรื่องความรู้แล้วนั้นสิ่งสำคัญอีกอย่างที่ทำไมคุณถึงต้องพื้นฐานภาษาอังกฤษนั่นก็คือเรื่อง keyword ในการค้นหา หลายคนนั้นไม่รู้ว่าควรจะค้นหาว่าอะไร คล้ายๆกับการตั้งคำถามว่าเราควรจะถามอะไรยังไง หากคุณพอรู้ภาษาอังกฤษคุณจะหาสามารถใช้คำค้นหาได้ถูกต้องและ ได้พบคำตอบได้เร็วซึ่งอันนี้เป็นสกิลพื้นฐานที่คุณจะก้าวมาเป็นโปรแกรมเมอร์ครับ การหาคำตอบด้วยตัวเองนั้นสำคัญมากครับถึงขนาดสามารถทำได้คุณ ได้งานได้เงินเดือนเพิ่มเลยทีเดียว เชื่อเถอะว่าหลายคนยังคิดคำค้นไม่ค่อยจะถูกเลยครับ เพราะถ้าคุณรู้ว่าคุณต้องการอะไร และคุณรู้ว่าคำนั้นคืออะไร ก็ทำงานได้แล้วครับ

เอาล่ะ !! ฉันจะตั้งใจเริ่มเรียนภาษาอังกฤษแล้ว ฉันต้องทำอย่างไร ? อย่างแรกคือลองหาวิธีเรียนรู้ที่เหมาะกับคุณ ( อีกแล้ว ) ใช่ครับ ยกตัวอย่างของผมตอนนั้นผมก็หาหนังสือที่ถูกใจไล่อ่านๆแล้วก็ทำความเข้าใจก็พอจะรู้ว่าพื้นฐานคืออะไร ตอนนั้นผมเรียนรู้ใหม่ตั้งแต่ abc เลยนะครับ อย่างที่บอกไปหนังสือสอนมีเยอะมาก ลองไปนั่งอ่านในห้างซัก 1 วันหาคนที่อธิบายแล้วคุณเข้าใจได้ง่าย

ไม่ก็หาคอร์สเรียน สอนสด vdo youtube อะไรก็ว่าไป

ถึงเวลาตั้งกระทู้ถามคนอื่นแล้ว

หลายคนอ่านมาถึงตรงนี้ อาจจะงงว่าทำไมฝึกทำตั้งนานเพิ่งจะมาให้เริ่มถาม เหตุผลเพราะว่าปกติในสายงานนี้ต้องหาทางดิ้นรนเองก่อนครับ แล้วค่อยไปถามถ้าติด การถามนั้นต้องไม่ใช่การถามแบบ มันคืออะไร หรือมันทำงานยังไง ส่วนใหญ่คำถามพวกนี้จะไม่ค่อยได้รับคำตอบเพราะคนส่วนใหญ่คิดว่า คุณน่าจะหาคำตอบเองได้ จากการใช้ keyword ที่ถูกต้อง หากคุณยังใช้คำค้นหาไม่ถูก คุณก็จะถามไปเรื่อยๆไม่จบไม่สิ้น

ส่วนใหญ่ที่คนใน community เขาจะช่วยเหลือคือ คุณต้องทำมาแล้ว แล้วติดว่าไม่เข้าใจ แค่จุดนั้น จุดนี้ และคุณต้องอธิบายด้วยว่าคุณไปหาอะไรมาแล้ว หายังไง คนตอบจะได้ทราบว่าคุณหาไม่เจอคำตอบเพราะอะไร ตัวอย่างที่แย่เช่น

ตัวอย่างที่แย่ พี่ครับมันติดอะไรครับ ? แล้วก็แปะรูป error มา

แบบนี้ไม่ควรทำเหตุผลเพราะว่าคุณเอา error ไปค้นหาต่อได้เองอยู่แล้วไม่จำเป็นต้องมาถามเลย แล้วพอคุณเจอ error แบบนี้อีกคุณจะได้รู้ด้วยว่ามันคืออะไร จำไว้ว่ามนุษย์เรียนรู้จากความเจ็บปวด ถ้าคุณจำไม่ได้คุณเจอมันบ่อยๆคุณจะจำได้เองครับ ไปดูตัวอย่างดีๆกันบ้างครับ

ตัวอย่างที่ดี

พี่ครับผมลองทำหน้า login มาแล้วส่งค่าไปหลังบ้านแล้ว ผมลอง print ค่าก่อนจะส่งให้หลังบ้านมันออกครับ แต่พอไปเช็คค่าที่หลังบ้าน print ค่าไม่ออกครับ พร้อมกับแปะโค้ดหน้าบ้านและหลังบ้านให้ดู

คืออย่างน้อยคนมาอ่านจะได้เข้าใจว่าคุณกำลังจะทำอะไร แล้วทำไปถึงไหน แล้วจุดที่ติดมันคืออะไร มีที่ให้เขาได้ช่วยเหลือครับ

ใครอยากเรียนรู้ว่าเวลาถามคำถามควรจะถามอะไรยังไง ผมแนะนำบทความของพี่เนยครับเขียนค่อนข้างดีและละเอียดมาก แนะนำให้อ่านกัน

คำตอบที่ใช่เกิดจากคำถามที่ถูกต้อง “ศาสตร์ของการถาม” ถามอย่างไรให้ได้คำตอบ?

สรุป

ถ้าคุณอยากเริ่มเรียนรู้สกิลการเขียนโปรแกรมก็เริ่มทำตามนี้ครับ

  • เลือกภาษาที่อยากจะเรียน
  • ฝึกฝนมันให้เชี่ยวชาญ
  • ฝึกภาษาอังกฤษ
  • พยายามหาคำตอบและตั้งคำถามให้ดี