ในยุคนี้ที่การใช้งาน AI ที่มีสุดฉลาด ความสามารถเหนือคำบรรยายที่ปฏิวัติทุก ๆ วงการ รวมไปถึงวงการการเขียนโค้ดของชาวเดฟอย่างพวกเราด้วย ซึ่ง AI ที่ช่วยเขียนโค้ดก็จะมีตั้งแต่ GitHub Copilot หรือจะไปถามจากกลุ่ม ChatGPT หรือ Gemini ก็ได้เหมือนกัน เครื่องมือให้ใช้ในปัจจุบันมีเยอะมาก แต่หากเราไม่มีพื้นฐานการเขียนโปรแกรมที่ดีมา อยากได้อะไร ก็สั่งหรือเจนเอา AI ก็จะเขียนโค้ดมาเรื่อย ๆ ไม่ตรงใจก็สั่งใหม่ไปเรื่อย ๆ การทำแบบนี้ มักจะทำให้เกิดปัญหาแบบมีมด้านล่างนี้ ซึ่งไม่เกินจริงเลยแม้แต่นิดเดียว
ขอบคุณภาพจาก https://www.codeitbro.in/programming-memes/chatgpt-is-actually-a-problem-for-developers/
หากเรามีพื้นฐานที่ดี เราอาจจะใช้เวลาเยอะหน่อยในช่วงแรก สำหรับการคิด วางแผน ออกแบบและลงมือเขียนโค้ดไปเรื่อย ๆ ตามแนวทางที่เราได้ออกแบบไว้ ในระหว่างทางก็จะมีการปรับแก้ ทำความเข้าใจไปเรื่อย ๆ แต่หากเราเจนโค้ดมาโดยที่ไม่มีความรู้เลย มันอาจจะได้โค้ดมาไว รันได้ หรือรันไม่ได้ก็แล้วแต่ แต่หากเราต้องแก้ไขด้วยตัวเอง แต่พื้นฐานไม่แน่นเราก็จะต้องเสียเวลามาเก็บพื้นฐานทีหลัง และอาจจะต้องรื้อทั้งโปรเจกต์เขียนใหม่อยู่ดี นั่นเลยเป็นที่มาของบทความนี้ เราจะมาดูกันว่าแล้วเจ้า “พื้นฐานการเขียนโปรแกรมที่ชาวโปรแกรมเมอร์ต้องรู้” มันมีอะไรบ้าง ไปดูกันเลย!
การแก้ปัญหา Problem Solving
ก่อนที่เราจะไปเริ่มเขียนโค้ด เราควรเรียนรู้วิธีการคิด การวิเคราะห์ปัญหาก่อน เพราะโค้ดที่เราจะเขียนมาเป็นโปรแกรม เราก็เขียนมันมาเพื่อแก้ไขปัญหานี่แหละ หากเรามีกระบวนการคิดสำหรับการแก้ปัญหาที่ดีได้ เราก็จะสามารถพัฒนาโปรแกรมที่มีประสิทธิภาพออกมาได้ ไม่ว่าจะเขียนโค้ดเอง หรือเขียน Prompt ให้ AI พื้นฐานในส่วนนี้เป็นสิ่งสำคัญมาก ๆ
ภาษาที่ใช้ในการเขียนโปรแกรม
จะให้ AI เขียนโค้ดให้ เราก็ต้องเข้าใจโค้ดก่อนมั้้ย? แน่นอนว่าเราควรจะต้องเรียนรู้ภาษาที่ใช้เขียนโปรแกรมด้วย จะได้รู้ว่าเราจะสั่งให้คอมพิวเตอร์ทำอะไร โค้ดแต่ละบรรทัดมันทำงานอะไร แก้ปัญหาตามที่เราได้ออกแบบไว้มั้ย และสำหรับการเลือกภาษาที่จะเรียนรู้นั้นขึ้นอยู่กับหลายปัจจัยได้เลย ถ้าแบบง่าย ๆ เรียนรู้ไว ๆ ก็จะมี Python, C#, Java, JavaScript และ Ruby เป็นต้น
เรามีคอร์สเรียนฟรี JavaScript ฟรีมาเรียนกันได้ที่ : https://school.borntodev.com/course/introduction-to-javascript
การเข้าใจโครงสร้างของข้อมูล
พอเราเริ่มเข้าใจการเขียนโปรแกรมแล้ว เราก็จะต้องมาทำความเข้าใจกับโครงสร้างข้อมูล เป็นอีกหนึ่งพื้นฐานหนึ่งวิชาที่เด็กไอที เด็กสายคอมต้องผ่านมา เพราะมันเป็นพื้นฐานที่สำคัญที่ช่วยให้เรารู้ว่าจะจัดการกับข้อมูลและเก็บข้อมูลยังไง เราจะต้องเข้าใจการทำงานของพวก array, link list, stack, queue เป็นต้น เอาไว้เวลาเราเจอปัญหาที่ซับซ้อน ความรู้เหล่านี้จะจำเป็นมาก ๆ ตอนที่เราพัฒนาโปรแกรม
อัลกอริทึม
รู้ Data Structure แล้วต้องรู้ Algorithm มันเป็นของคู่กัน เพราะการเข้าใจอัลกอริทึมมันคือวิธีการหรือกระบวนการที่เราจะใช้ในการแก้ไขปัญหาอย่างเป็นระบบ หากยิ่งเรามีพื้นฐานเรื่องอัลกอริทึมแน่ ๆ มันก็ยิ่งช่วยให้เรารู้ว่าทางไหน หรือวิธีการแก้ปัญหาแบบไหนมันมีประสิทธิภาพที่สุด
การออกแบบ Software Design
เมื่อเราเรียนรู้พื้นฐานทั้งการเขียนโปรแกรมและจัดการข้อมูลแล้ว เราควรรู้วิธีการออกแบบซอฟต์แวร์ด้วย เพราะมันเป็นขั้นตอนที่สำคัญมากในการพัฒนาโปรแกรม มันจะช่วยให้เราสามารถวางโครงสร้างและแนวทางของซอฟต์แวร์ได้อย่างมีประสิทธิภาพ โดยเราต้องพิจารณาทั้งในเรื่องของการแยกแยะฟังก์ชันการทำงาน การจัดการความซับซ้อนของระบบ และการออกแบบโมดูลต่าง ๆ ที่จะทำให้ทั้งเราและทีม สามารถพัฒนาและบำรุงรักษาโปรแกรมที่เขียนมาได้ง่าย นอกจากจะมีเรื่องการออกแบบการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Design) หรือเชิงฟังก์ชันที่ชาวเดฟจำเป็นต้องรู้จักและนำไปใช้ในการพัฒนาระบบให้มีโครงสร้างที่ดีและชัดเจนมากยิ่งขึ้น
การทดสอบ และ Debugging
เมื่อเราพัฒนาโปรแกรมเสร็จแล้ว สิ่งที่ขาดไม่ได้คือการทดสอบ (Testing) เพื่อให้แน่ใจว่าโปรแกรมทำงานได้ตามที่คาดหวัง การทดสอบนี้สามารถทำได้หลายรูปแบบ เช่น Unit Test, Integration Test, และ System Test การเขียนเทสเป็นการตรวจสอบว่าแต่ละฟังก์ชันทำงานถูกต้องในทุกกรณีที่เป็นไปได้ รวมถึงการ Debugging ที่เป็นการตรวจหาข้อผิดพลาด (bug) และแก้ไขให้โปรแกรมทำงานได้สมบูรณ์ การเข้าใจและใช้เครื่องมือที่ช่วยในการ Debug เช่น Debugger ใน IDE ก็เป็นอีกหนึ่งทักษะที่สำคัญที่โปรแกรมเมอร์ทุกคนควรมี
ความเข้าใจใน OS
นอกจากเรื่องของการเขียนโปรแกรมแล้วเรายังต้องเข้าใจเรื่องการทำงานของ OS ด้วย เพราะโปรแกรมที่เราเขียนมันจะต้องทำงานกับตัวที่ใช้จัดการ Hardware ในเครื่องเรา ไม่ว่าจะเป็น CPU Memory หรือ Storage ต่าง ๆ เราจะต้องรู้ว่าการจัดการไฟล์ จัดการเธรด เค้าทำยังไง? การเข้าใจเรื่องของ OS มันจะช่วยให้เราสามารถใช้ทรัพยากรของระบบได้อย่างเต็มที่
การจัดการหน่วยความจำ การเพิ่มประสิทธิภาพ
สุดท้ายที่ขาดไม่ได้เลยคือ “การจัดการหน่วยความจำ” เพราะอย่างหากเราเรียนรู้เรื่องการเขียนโปรแกรม และ Data Structure เราจะเข้าใจว่าสิ่งที่เก็บอยู่ในตัวแปร มันมีการใช้งาน memory และถ้าหากเราจัดการหน่วยความจำเหล่านี้ไม่ดี เขียนโค้ดที่ไม่ได้ประสิทธิภาพมาอาจจะเกิดปัญหาที่เรียกว่า Memory Leak หรือการทำงานของหน่วยความจำรั่วไหล หรือ ถูกใช้งานจนเต็มทำให้โปรแกรมไม่สามารถทำงานต่อได้ ดังนั้นการเข้าใจการใช้หน่วยความจำ อย่างเรื่อง Stack และ Heap การทำงานของ Garbage Collection หรือการจัดการหน่วยความจำด้วยตัวเอง จะทำให้เราสามารถลดเวลาในการประมวลผล การจัดการ I/O หรือการลดความซับซ้อนของอัลกอริทึมได้
และสำหรับใครที่อยากเรียนเขียนโปรแกรมตั้งแต่พื้นฐาน แบบเก็บทุกเม็ด ตั้งแต่เริ่มต้น จนถึงการใช้เครื่องมือจริง ๆ ที่ใช้งานในสาย Web Development ไม่ว่าจะเป็น Front-end หรือ Back-end แบบไม่ต้องเสียเวลาลองผิดลองถูกด้วยตัวเอง เรามีหลักสูตร Road to Front-end / Road to Back-end Developer ที่จะพาคุณเรียนรู้ตั้งแต่การเขียนโค้ดขั้นพื้นฐาน ไปจนถึงการทำ Lab และโปรเจกต์จริง ช่วยให้คุณพัฒนาโปรแกรมอย่างมีประสิทธิภาพ ครบจบในที่เดียวที่ BorntoDev!
Road to Front-end Bootcamp : https://www.borntodev.com/road-to-front-end-developer-bootcamp/
Road to Back-End Bootcamp : https://www.borntodev.com/road-to-back-enddeveloper-bootcamp/