เริ่มต้นเป็นนักพัฒนาโปรแกรมยังไง?

Icegotcha's avatar
เริ่มต้นเป็นนักพัฒนาโปรแกรมยังไง?

Contents

Introduction

จุดเริ่มต้นของบทความนี้มาจาก 2 เหตุผล

  1. เมื่อต้นเดือนกรกฎาคมที่ผ่านมา ไอซ์ ผู้เขียนได้ร่วมพูดในงานปฐมนิเทศนักศึกษาปี 2567 มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือที่ไอซ์เรียนจบมา หลังจบงานก็รู้สึกว่ายังไม่ครบตามที่ตั้งใจจะพูดเลย
  2. ได้เจอคำถามของน้อง ๆ ที่กำลังจะเข้าสู่วงการนักพัฒนาโปรแกรมตามโซเซียลต่าง ๆ มากมาย ทำนองตามชื่อหัวข้อเลย “เริ่มต้นเป็นนักพัฒนาโปรแกรมยังไง?”

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

เกริ่นจบแล้วมาเริ่มกันเลย เริ่มที่คำถามแรก

นักพัฒนาโปรแกรมคือใครกันนะ?

คำนี้แปลได้ตรงตัวเลย ก็คือ คนที่สร้างโปรแกรมขึ้นมา นั่นเอง

อ๊ะ สั้นไป ขอขยายความอีกนิด

นักพัฒนาโปรแกรม ก็คือ คนที่ทำหน้าที่วิเคราะห์และแก้ปัญหาที่ได้ ทำออกมาในรูปแบบของโปรแกรมให้คนที่เจอปัญหาใช้ ในที่นี้จะเรียก ผู้ใช้โปรแกรม (User)

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

เมื่อเสร็จแล้ว นักพัฒนาจะทำอีกหนึ่งหน้าที่ ก็คือ ปรับปรุงโปรแกรมนั้นให้ทำงานดีขึ้นต่อไป การพัฒนานั้นทำหลายอย่าง ไม่ว่าจะเป็นลบจุดที่ทำงานผิดพลาดอย่างที่เรียกกันว่า “แก้บั๊ค” (Fixing bugs) อัปเดทการทำงานของโปรแกรมให้มีประสิทธิภาพ รวมไปถึงการเพิ่มความปลอดภัยให้มากขึ้น

แล้วถ้าอยากเป็นจะเริ่มยังไงดีนะ?

ก่อนอื่นเลย เราต้องตอบตัวเองให้ได้ว่า “อยากเป็นเพราะอะไร?” หรือไม่ก็ “อยากลองทำอะไรเป็นอย่างแรก?”

เพราะอาชีพนักพัฒนาโปรแกรม ไม่ได้มีตำแหน่งเดียว มีหลายตำแหน่งแยกย่อยลงไปอีก เช่น

  • Web developer - นักพัฒนาเว็บไซต์ มีทั้ง Frontend, Backend, และ Full Stack
  • Game developer - นักพัฒนาเกม
  • IoT Developer - นักพัฒนาซอฟต์แวร์ที่ทำงานร่วมกับอุปกรณ์ต่าง ๆ นอกเหนือจากคอมพิวเตอร์
  • Data scientist - นักวิเคราะห์ข้อมูล ใช้เทคนิคทางสถิติเพื่อสร้างแบบจำลอง และระบบช่วยวิเคราะห์และตัดสินใจในเชิงธุรกิจ
  • Al Engineer - นักพัฒนาและออกระบบปัญญาประดิษฐ์ (Artificial Intelligence)
  • Network Administrator - ผู้ที่ทำและดูแลระบบเครือข่ายคอมพิวเตอร์ในองค์กรให้มีประสิทธิภาพ

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

ในบทความนี้จะเน้นไปด้าน Software และ Web ตามที่ผู้เขียนคุ้นเคย เส้นทางนี้หลายคนที่เริ่มเป็นนักพัฒนาโปรแกรมจะมาเส้นทางนี้ก่อนเพราะเริ่มต้นได้ง่าย และสามารถเข้าใจแนวคิดของการเขียนโปรแกรมได้เร็ว ถ้าใครไม่รู้จะไปสายไหน สามารถเริ่มเส้นทางนี้ก่อนได้

เริ่มเขียนโปรแกรมแรก

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

แต่ถ้าโปรแกรมที่ทำง่ายสุด ใช้เวลาหลักนาทีเสร็จ ก็มี 1 โปรแกรม คือ

Hello World!

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

ภาษาโปรแกรมคืออะไร?

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

ในปัจจุบันมีหลายร้อยภาษา ตรงนี้จะขอยกเฉพาะภาษาที่เป็นที่นิยมในตลาดแรงงาน และเป็นภาษาที่ไอซ์เคยเรียนตั้งแต่เริ่มต้น

JavaScript

เป็นตัวเลือกแรก ๆ ที่นักพัฒนาเลือกใช้ โดยเฉพาะนักพัฒนาเว็บ เพราะเป็นภาษาหลักใช้ในการพัฒนาเว็บไซต์ มันคือภาษาที่ช่วยทำให้เว็บไซต์มีฟังก์ชัน มีความเคลื่อนไหว และมีชีวิตชีวาโดยทำงานคู่กับ HTML และ CSS ในปัจจุบันมันทำได้ตั้งแต่หน้าบ้าน (Frontend — หน้าเว็บที่เราเปิดใน Web Browser) ยันหลังบ้าน (Backend — ส่วน Server) และก็มีการดัดแปลงเพื่อทำแอปพลิเคชันที่ทำงานในเดสก์ทอปและมือถือได้ด้วย

Java

เป็นอีกหนึ่งภาษาที่มีความต้องการในตลาดแรงงานสูง โดยเฉพาะในด้านการเงิน และอุตสาหกรรมที่ต้องการแอปพลิเคชันขนาดใหญ่และความน่าเชื่อถือสูง เป็นภาษาที่ไอซ์แนะนำให้เรียนด้วย เพราะเป็นภาษาที่ช่วยฝึกเขียนโปรแกรมแบบมีคุณภาพ มันถูกออกแบบให้เราจัดระเบียบโค้ดให้ดีผ่านแนวคิดการเขียนแบบ OOP (Object-Oriented Programming) ซึ่งจะต้องกำหนดลักษณะข้อมูลที่จะใช้งานในโปรแกรมก่อน

Java เป็นภาษาที่มีการจัดการหน่วยความจำและความปลอดภัยที่ดี อีกทั้งมีเครื่องมือที่ช่วยพัฒนาเยอะมาก และ Community นักพัฒนาภาษานี้มีขนาดใหญ่ด้วย ทำให้เราสามารถขอความช่วยเหลือและเรียนรู้ได้ง่ายขึ้นและรวดเร็ว

Python

เป็นภาษาโปรแกรมที่หลายคนเลือกเรียนเป็นภาษาแรก ๆ เพราะเป็นภาษาที่อ่านแล้วเข้าใจง่าย ทำตามได้ทันที ทำให้เข้าใจแนวคิดของการเขียนโปรแกรมได้เร็ว อีกทั้งยังทำแอปพลิเคชันได้หลากหลาย ไม่ว่าจะเป็นแอปพลิเคชันที่รันในเดสก์ทอป เกม และเว็บไซต์ ไปจนถึงทำ Machine Learning (สาขาหนึ่งของ Artificial Intelligence) ในปัจจุบันภาษานี้เป็นที่นิยมในอุตสาหกรรม Data Science

C / C++

ทั้งสองภาษาเป็นภาษาเก่าแก่ แต่ตอนนี้ยังเป็นที่ต้องการของตลาดอยู่ ภาษาทั้งสองเหมาะกับใช้สำหรับสร้างแอปพลิเคชันที่มีการใช้ทรัพยากร (Resource) ของเครื่องคอมพิวเตอร์ เช่น หน่วยความจำ CPU หนัก ๆ และต้องการความเร็ว และประสิทธิภาพมากที่สุด เช่น ระบบปฎิบัติการ เว็บบราวเซอร์ แอปพลิเคชันที่ทำงานในเดสก์ทอป แม้กระทั่งเกมที่ใช้งานเครื่องหนัก ๆ

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

แล้วเลือกภาษาโปรแกรมยังไง?

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

สำหรับสายเว็บ ก็ต้องสร้างเว็บไซต์ของตัวเองขึ้นมา เว็บไซต์แรกที่หลายคนทำ (รวมถึงไอซ์ด้วย) มักจะเป็น

  • เว็บไซต์แนะนำตัวเอง
  • เว็บไซต์แสดงผลงานของตัวเอง
  • เว็บเขียนเรื่องราวต่าง ๆ เป็นแบบไดอารี่

ในปัจจุบัน เราจะเห็นว่า มีเครื่องมือที่ช่วยสร้างเว็บมากมายจนเลือกไม่ถูก และก็มี 3 ตัวที่เห็นเด่น ๆ เลยคือ React, Vue, Angular แต่ช่วงเริ่มต้นให้ลองจากภาษาพื้นฐานก่อน คือ HTML, CSS, JavaScript เพื่อให้เข้าใจเรื่องส่วนประกอบของเว็บ ว่าแต่ละส่วนทำหน้าที่อะไรบ้าง และรวมกันเป็นเว็บที่เราเห็นได้ยังไง เมื่อเราลองจนเข้าใจแล้ว ถึงค่อยขยับไปฝึกใช้เครื่องมือเหล่านั้นเพิ่มเติม

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

ไอเดียโปรแกรมและเว็บสำหรับฝึกสร้าง มีคนรวบรวมมาให้แล้ว เราสามารถหาอ่านได้ตามเว็บต่าง ๆ

ขอยกตัวอย่างเว็บดี ๆ ที่หาเจอ

ฝึกแล้วยังไงต่อดี?

ฝึกสร้างโปรแกรมและแก้โจทย์ที่ยากขึ้น

ลองหาโจทย์ที่มีความท้าทายมากขึ้นมาทำเพื่อฝึกฝนฝีมือให้เก่งขึ้น โจทย์สามารถหาได้จาก

  • โปรแกรมเดิม — เพิ่มความสามารถให้กับมันมากขึ้น เช่น ทำเครื่องคิดเลขคิดเลขแบบง่าย ๆ ไปแล้ว ลองเพิ่มให้มันคิดเลขที่ซับซ้อนมากขึ้น มีปุ่มเพิ่มวงเล็บ มีปุ่มคำนวณยกกำลัง ใช้สัญลักษณ์ทางคณิตศาสตร์ หรือแปลงหน่วยต่าง ๆ
  • โปรแกรมใหม่ — จากการค้นในอินเตอร์เน็ต หรือจากการเจอปัญหาในชีวิตจริง เช่น คิดอาหารกลางวันไม่ออก → ทำโปรแกรมช่วยคิดเมนูอาหาร
  • แก้ปัญหาจากโจทย์ — เมื่อเราเขียนโปรแกรมจนคล่องระดับหนึ่งแล้ว เราสามารถหาโจทย์ที่คนคิดขึ้นมาให้เล่นมาทำได้ โจทย์จะมีรายละเอียด เงื่อนไขที่เราต้องทำตาม ลักษณะข้อมูลที่ใช้ และผลลัพธ์ที่ต้องได้ อันนี้แนะนำให้ลองเล่นสักครั้ง เพราะมันช่วยให้เราฝึกคิดแก้ปัญหาอย่างมาก อีกทั้งได้เรียนรู้เรื่อง Algorithm & Data structure ซึ่งเป็นเรื่องสำคัญของการเขียนโปรแกรม เว็บที่รวบรวมโจทย์ลักษณะแบบนี้ก็มีเยอะ ยกตัวอย่างที่หลายคนรู้จักกัน

ฝึกภาษาอังกฤษ

ความรู้ในสายงานนี้ส่วนใหญ่มาจากภาษาอังกฤษ และเมื่อมีข้อมูลใหม่ๆ ภาษานี้จะมาก่อนภาษาอื่นเสมอ ดังนั้นเราควรจะฝึกให้ตัวเองคุ้นชินกับภาษาอังกฤษ โดยเฉพาะในด้านการอ่านและการฟัง มันจะทำให้เราสามารถหาข้อมูลจากที่ไหนก็ได้ ไม่ว่าจะเป็นจากที่เสิร์ชหาในอินเทอร์เน็ต, YouTube, Textbook และแม้กระทั่งเปเปอร์วิจัยที่เกี่ยวกับสายงานนี้ วิธีการเริ่มฝึกง่ายนิดเดียว ฝึกได้ตั้งแต่ตอนนี้เลย คือต้องเห็น และใช้มันบ่อย ๆ อยู่กับมันทุกวันได้ยิ่งดี ไม่ต้องถึงขั้นอยู่ต่างประเทศ ลองอ่าน ดู ฟังบ่อย ๆ เมื่อเวลาผ่านไปก็จะคุ้นชินเอง

เรียนเรื่องอื่น ๆ ด้วย

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

  • เรื่องที่เกี่ยวข้องกับการทำงานของโปรแกรมบนเครื่องที่มีองค์ประกอบที่แตกต่างกัน ไม่ว่าจะเป็นระบบปฎิบัติการ (OS — หมายถึง Windows, Mac, Linux นี่แหละ) บราวเซอร์ (สำหรับสายเว็บ) ระบบเครือข่าย จนถึง หน่วยความจำ RAM, ROM และ CPU ถ้าเรารู้เรื่องนี้ เราจะสร้างโปรแกรมที่ทำงานได้เร็ว มีประสิทธิภาพ และทำงานในสภาพแวดล้อมของเครื่องที่แตกต่างกันได้โดยไม่พัง
  • การทำงานกับผู้อื่น — เรื่องการเขียนโค้ดให้เป็นไปตาม Standard ที่สากลโลกทำเอาไว้ และทำให้คนอื่นอ่านรู้เรื่องและทำงานต่อจากเราได้ รวมถึงการสื่อสารกับคนอื่น ทั้งโดยการพูด และเขียนเอกสารเพื่ออธิบายการทำงานของโปรแกรมที่เราทำ (เช่น Flowchart, UML เป็นต้น) ถ้าเรารู้เรื่องนี้ เราจะสามารถสร้างโปรแกรมและส่งออกให้ผู้ใช้ตัวจริงใช้งานได้อย่างราบรื่น Note: นักพัฒนาโปรแกรมปกติแล้วไม่ต้องสื่อสารกับคนอื่นมากมายนัก แต่ก็ใช่ว่าเราจะต้องทิ้งทักษะนี้และคุยกับคอมอย่างเดียว การมีทักษะนี้บ้างจะช่วยให้เราได้เปรียบในด้านการทำงานมากขึ้น

คำถามต่อมาคือ แล้วเราจะต้องเรียนรู้เรื่องอะไรบ้าง และเริ่มเรียนยังไง คำตอบคือ มันมีหลายเรื่องมาก เอามาเขียนตรงนี้ได้ไม่หมด

โชคดีของเราที่ตอนนี้มีคนรวบรวมมาให้เราได้อ่านกัน ขอแนะนำตรงนี้เลย

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

Developer Roadmaps - roadmap.sh 🔗

หัวข้อที่แนะนำให้อ่านสำหรับผู้เริ่มต้น

  • Computer Science
  • Data Structure and Algorithm
  • Git and GitHub

ของไทยก็มีเหมือนกัน เป็นของสมาคมโปรแกรมเมอร์ไทย 🔗Thai Programmer Paths 🔗

เรียนภาษาต่อไป

ในการทำงานจริง ๆ บางครั้ง Developer ต้องใช้หลายภาษาโปรแกรมเพื่อแก้ปัญหาที่แตกต่างกัน

ยกตัวอย่าง สายงานพัฒนาเว็บ นักพัฒนาเว็บจะต้องรู้ 3 ตัว คือ HTML, CSS, JavaScript แน่ ๆ เพราะต้องใช้สร้างเว็บ แต่ถ้าต้องทำงาน Backend ด้วย จะต้องรู้ภาษาที่ใช้สร้างโปรแกรมที่ทำงานใน Server อาจจะใช้ JavaScript หรือ Java รวมถึงภาษาที่ใช้จัดการกับฐานข้อมูลสำหรับเก็บข้อมูลต่าง ๆ ที่เกี่ยวข้องกับเว็บนั้น เช่น SQL, DSL, GraphQL

เพราะภาษาโปรแกรมทุกภาษาถูกออกแบบแตกต่างกัน ถึงแม้จะมีบางภาษาที่สามารถเขียนโปรแกรมได้หลากหลาย แต่ก็ใช่ว่าภาษาเดียวจะทำได้ทุกอย่าง และใช้ได้ในทุกสถานการณ์ แต่ละภาษาโปรแกรมถูกออกแบบด้วยวัตถุประสงค์ที่แตกต่างกัน มีจุดแข็งจุดด้อย รูปแบบของภาษาที่ใช้ (เรียกกันว่า Programming Paradigm เช่น Procedural languages, OOP) มีความยากง่ายในการใช้งานที่ต่างกัน ไม่ว่าจะเป็นการติดตั้ง การเขียน การสั่งให้โปรแกรมทำงาน และการดูแลรักษา รวมถึงการใช้ Resource ของเครื่อง

ยกตัวอย่าง

  • Java มีจุดแข็งคือ ภาษามีโครงสร้างแข็งแรง ทำงานเร็วและปลอดภัย มี Library และ Resource ตัวช่วยเยอะ แต่ข้อเสียคือ อาจจะเกิด Overhead (ใช้ Resource เช่น เวลา หน่วยความจำ หรือพลังประมวลผล เยอะเกินไป) ใช้เวลาออกแบบและเขียนโปรแกรมค่อนข้างมาก เหมาะกับ การเขียนโปรแกรมขนาดไม่เล็ก และต้องการเสถียรภาพและความปลอดภัยสูง
  • Python มีจุดแข็งคือ ภาษาอ่านง่าย เขียนได้ค่อนข้างอิสระ และเร็ว อีกทั้งยังมี Library และ Resource ตัวช่วยเยอะ แต่ข้อเสียคือ มีการประมวลผลคำสั่งช้า ใช้หน่วยความจำเวลาโปรแกรมทำงานมาก นิยมใช้ทำพวก Automation (Script ตัวช่วยทำงานซ้ำซากแทนเรา) และงานด้าน Data Science และ Data Visualization (มี Library ที่ถูกออกแบบมาทำงานด้านนี้โดยเฉพาะ เช่น Pandas, NumPy, and TensorFlow, Jupyter)

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

เรื่องที่ควรคิดถึง และควรทำ

  • อย่าข้ามเรื่องพื้นฐาน — การเรียนรู้ทุกเรื่อง มันมีบันไดที่เราต้องก้าวทีละขั้น โดยเฉพาะสายงานนี้ การเข้าใจเรื่องพื้นฐาน เช่น การทำงานของเครื่องคอมพิวเตอร์, ระบบปฎิบัติกาาร (OS), ลอจิคเกต (Logic gate), เลขไบนารี (Binary), ภาษาโปรแกรม เช่น JavaScript ที่เป็นตัวภาษาล้วน ๆ ไม่มีพวก React, Vue, Angular จะทำให้เราสามารถเรียนรู้เรื่องที่ซับซ้อนขึ้น และถ้าเกิดปัญหา เราสามารถวิเคราะห์ปัญหาได้รวดเร็ว ไม่ต้องนั่งงมระดมสมองหรือเสิร์ชหาไปมาให้เสียเวลา ถ้าเราข้ามเรื่องพวกนี้ไป เราก็ยังขึ้นขั้นต่อไปได้ แต่จะเข้าใจได้แค่บางส่วน และเชื่อมโยงสิ่งที่เรียนเข้าด้วยกันได้ยาก ทำให้เราเข้าใจไม่ต่อเนื่อง จำได้ไม่ได้บ้าง ต้องหันกลับมาอ่านที่เคยเรียนอยู่เรื่อย เพราะฉะนั้นเราเรียนรู้เรื่องไหนแล้วรู้สึกความเข้าใจมันขาด ๆ หาย ๆ ก็ลองหาดูว่ามีเรื่องที่ต้องรู้ก่อนหรือเปล่า?

  • เรียนรู้ด้วยความเข้าใจ ไม่ใช่ท่องจำ — เพราะนักพัฒนาจะต้องแก้ปัญหาไม่ซ้ำแต่ละวัน ความเข้าใจจะทำให้เราสามารถรับมือกับปัญหามากมายได้อย่างแม่นยำและรวดเร็ว ถ้าเราอยากเรียนด้วยความเข้าใจ ตัองเริ่มจากความอยากรู้อยากเห็น ฝึกตั้งคำถาม หาคำตอบ และพิสูจน์ด้วยการลองทำ เช่น

    • ฉันจะแก้ปัญหานี้ยังไง
    • ฉันจะเขียนออกมาเป็นโปรแกรมยังไง
    • คำสั่งนี้มันคืออะไร ทำไมต้องใช้คำสั่งนี้
  • ฝึกทักษะการแก้ปัญหา (Problem Solving Skills) — ทักษะนี้มีส่วนทำให้เราสามารถสร้างโปรแกรมได้ เพราะในการทำงานจริง ๆ เราเจอปัญหาในรูปแบบหลากหลายและได้จากหลายที่ และไม่ได้เจอในรูปแบบที่มีข้อมูลละเอียดดีพร้อมเสมอ เราต้องตามเก็บและกะเทาะจนเห็นว่าปัญหาคืออะไรและจะแก้ยังไง วิธีการฝึกคือ จะต้องฝึกเขียนบ่อย ๆ โดยตั้งโจทย์เอง เจอในชีวิตประจำวัน เจอในที่ทำงาน พยายามตั้งคำถามและหาคำตอบออกมาให้ได้

    1. ปัญหาคืออะไร
    2. ผลลัพธ์ที่อยากได้คืออะไร
    3. ข้อมูลที่ต้องรู้มีอะไรบ้าง
    4. ทำยังไงให้ปัญหาหมดไป และได้ผลลัพธ์ตามที่ต้องการ
  • ฝึกการหาคำตอบ

    • Search หาข้อมูลด้วย Search Engine เช่น Google — ลองดูบทความนี้ Google Search Tips Every Developer Should Know 🔗
    • การตั้งคำถามกับคนอื่น — ลองดูบทความนี้ NuuNeoI - คำตอบที่ใช่เกิดจากคำถามที่ถูกต้อง “ศาสตร์ของการถาม” ถามอย่างไรให้ได้คำตอบ? 🔗
    • วิธีการใช้ AI เช่น ChatGPT ช่วยหาคำตอบ — เชื่อว่าหลายคนใช้อยู่ มันมีศาสตร์ที่เรียกว่า Prompt Engineering เราสามารถเรียนรู้เพื่อใช้ประโยชน์ได้ แต่ขอบอกตรงนี้ว่าให้ระวังด้วย เพราะคำตอบที่ได้มาจาก AI ไม่ได้ถูก 100% เพราะธรรมชาติของมันคือพยายามสร้างคำที่ดูถูกต้องที่สุดในทางสถิติ หากจะใช้มัน เราต้องมีความเข้าใจเรื่องที่เกี่ยวข้องและเช็คคำตอบของมันได้ ก่อนเอาไปใช้งานจริง เราอาจจะต้องเช็คคำตอบด้วยวิธีอื่นอีกที
  • สรุปทุกอย่างที่เรียนรู้ตามความเข้าใจของตัวเอง

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

  • ขอบคุณและดีใจกับตัวเองทุกครั้งที่ทำสำเร็จ

    • จดลงไปสักที่ อาจจะเป็นสมุด ไอแพด หรือว่าบล็อก (Blog) ของเราก็ได้
  • จำความผิดพลาดไว้เป็นบทเรียน

    • จดลงไปสักที่ก็ได้ (อันนี้แนะนำ) เหมือนกับข้อข้างบน
  • อย่ากดดันตัวเองมากไป — รู้ว่าจุดไหนควรพักก่อน ความเครียดเป็นสิ่งที่หลีกเลี่ยงไม่ได้ที่จะเจอ แต่เราสามารถจัดการมันได้ก่อนที่จะทำเราเศร้า

  • เรียนเป็นคอร์ส — เรียนที่มีคนรวบรวมบทเรียนที่ต้องเรียนมาให้จะช่วยให้เราเก่งเร็วขึ้น บางคอร์สเราจะได้ใบ Certificate ประดับ Portfolio ด้วย

  • เรียนรู้นอกสถานที่บ้าง โดยการเข้าร่วม Comunity พบปะผู้คนในวงการบ่อย ๆ — อันนี้ผู้เขียนแนะนำให้ทำ เพราะมันได้ทั้งความรู้ ประสบการณ์ที่แปลกใหม่ พบปะผู้คน และโอกาสใหม่ ๆ

แหล่งที่แนะนำให้ศึกษาเพิ่มเติม

  • javascript.info 🔗
  • learnpython.org 🔗
  • w3schools.com 🔗 — เว็บหากินของชาวนักพัฒนา โดยเฉพาะสายเว็บ
  • baeldung.com 🔗 — เว็บสอนทุกอย่างเกี่ยวกับภาษา Java
  • refactoring.guru 🔗 — เว็บสอนหลักการเขียนโค้ดที่ดี และ Design Patterns (รูปแบบและวิธีการเขียนโปรแกรม)
  • visualgo.net 🔗 — เว็บสอน Algorithms และ Data Pattern (รูปแบบการเก็บข้อมูล) ด้วย Animation

ส่งท้าย

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