โปรแกรมเมอร์จำเป็นต้องจำโค้ดหรือ syntax ทั้งหมดหรือไม่ ?

   By: Withoutcoffee Icantbedev

   อัปเดตล่าสุด Aug. 14, 2023

โปรแกรมเมอร์จำเป็นต้องจำโค้ดหรือ syntax ทั้งหมดหรือไม่ ?

บทความนี้จะเปลี่ยน Mindset ในการเรียนเรียน coding หรือ programming ของคุณไปตลอดกาล จริงหรือเปล่า ? ต้องลองอ่านครับ 


Programmer ต้องจำโค้ดหรือไม่ ?

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

คำตอบคือ แน่นอนอยู่แล้วครับเราไม่ปฏิเสธว่าการเรียนรู้ Syntax คือสิ่งที่ต้องเรียนรู้ในการเรียนโปรแกรมมิ่งภาษาใหม่ แต่คำถามคือ เราจำเป็นต้องเรียนรู้ทั้งหมดหรือให้เยอะที่สุด มากเท่าที่จะทำได้เลยหรือเปล่า มีความจำเป็นต้องทำแบบนั้นจริง ๆ หรือ ?ในบทความนี้ผมจะนำข้อมูลจากหลายแหล่งมาอ้างอิงและทำการวิเคราะห์


Coding เน้นทักษะการแก้ไขปัญหา (Problem Solving Skill)

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

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

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


Programmers เก่ง ๆ ยังขาด Stack Overflow, ChatGPT ไม่ได้

ลองดูคำพูดของซีเนียร์โปรแกรมเมอร์ท่านหนึ่งด้านล่าง ชื่อคุณ Umer Mansoor

“I wrote 255 lines of code that included a working server and a client. I queried google 23 times mostly landing on StackOverflow, Netty 4 website, GitHub, and JavaDocs. If you do the math, that averages out to 1 query every 10 lines of code! I had no idea”

“ผมเขียนโค้ด 255 บรรทัดโดยมีการทำงานร่วมกันทั้งฝั่ง Server และ Client ผมเปิดกูเกิ้ล 23 ครั้ง ส่วนใหญ่จะเป็น stackoverflow และยังมีเว็บไซต์ที่เกี่ยวข้องอื่น ๆ เช่น GitHub และ ก็ JavaDocs ที่คุณต้องใช้คณิตศาสตร์ในการหาค่าเฉลี่ย 1 การ Query ทุก ๆ 10 บรรทัดของโค้ด ซึ่งผมก็ไม่รู้ว่าจะทำยังไง ถ้าไม่ Google !!”


ใช้ Google ให้ชำนาญ

ทำไมถึงบอกแบบนี้ ก็เป็นผลจากเรามีสกิล Problem Solving ที่ดีครับ เราจะพยายามหาหนทางแก้ปัญหาให้ได้ในที่สุด ซึ่งสกิลการใช้ Google สำหรับผมสามารถพูดได้เต็มปากเลยว่า มันเป็นหนึ่งในสกิลที่สำคัญมาก ๆ สำหรับโปรแกรมเมอร์ หรือไม่ว่าจะเป็นในแทบจะทุกสายอาชีพ แต่ก่อนที่จะใช้สกิลนี้ได้อย่างเต็มที่แน่นอนว่าสิ่งหนึ่งที่เราต้องรู้ก็คือ Keyword แต่เราจะรุ้ Keyword ได้อย่างไร ? 

ใช่ครับเราต้องมองภาพรวมให้ออก ในสิ่งที่เรากำลังจะแก้ปัญหาให้ออก รวมทั้งการมีทักษะภาษาอังกฤษที่ดีในระดับหนึ่งสามารถที่จะแปลงคำในหัวเราไปเป็นภาษาอังกฤษได้ อย่างเช่น สมมติว่ากำลังติดปัญหาไม่สามารถเข้าถึงข้อมูลใน Dictionary ของไพธอน ได้ เราจะสามารถค้นหาได้อย่างไร ? ถ้าคนที่ภาษาไม่แข็งก็อาจจะพิมพ์ภาษาไทย “วิธีการเข้าถึงข้อมูลใน Dictionary”


ภาษาโปรแกรมมิ่งมีแนวคิดคล้ายคลึงกันเกือบทุกภาษา

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

ดังนั้นเราจะจำให้สิ้นเปลืองหน่วยความจำในสมองเราทำไมในตอนนั้น เพราะพื้นที่ความจำในสมองเราก็ไม่ได้ unlimited  แค่จำแนวคิด ลอจิก การแก้ปัญหาต่าง ๆ ก็น่าจะเพียงพอแล้วหรือเปล่า ? เพราะว่า concept (แนวคิด) ของแต่ละภาษาแทบไม่หนีกันสักเท่าไหร่


ความเห็นของสุดยอดโปรแกรมเมอร์

ทีนี้เมื่ออ่านมาถึงตรงนี้แล้ว เราลองมาฟังความคิดเห็นของโปรแกรมเมอร์หลาย ๆ คนดูครับว่าเขาคิดยังไง โดยข้อมูลเหล่านี้มาจาก Twitter ของเหล่าซีเนียร์โปรแกรมเมอร์เหล่านี้

Tim Dierks

“Hello, my name is Tim. I'm a lead at Google with over 30 years coding experience and I need to look up how to get length of a python string.”

“สวัสดี ผมชื่อทิม เป็นหัวหน้าทีม(coding) ที่ Google ด้วยประสบการณ์ด้านการเขียนโค้ดของผมที่มากกว่า 30 ปี แต่ผมก็ยังคงต้องค้นหาวิธีการหาค่าความยาวของไพธอนสตริงอยู่เลย”


Localghost

“Hello, my name is JP. I put Node.js in a commercial flight airplane. I still don't know the difference between .substr() and .substring().”

“สวัสดีครับ ผมชื่อ JP ผมใช้ Node.js ในการสร้างโปรเจคท์ที่สำคัญมาก ๆ แต่ผมก็ยังคงไม่ทราบความแตกต่างระหว่าง substr() และ .substring()”


Jon f Handcock

“Hello my name is Jon, I'm the Android lead at Phunware. I can't read an input stream without copying and pasting code from stack overflow”

“สวัสดี ผมจอร์น เป็นหัวหน้าพัฒนาแอนดรอยด์ที่ Phunware ผมไม่สามารถเขียนโค้ดอ่านอินพุตที่รับเข้ามา โดยไร้ซึ่งการก็อปวาง ๆ จากเว็บ stackoverflow ได้เลย”

ดูเอาล่ะกันครับ ขนาดหัวหน้า Senior Dev ยังต้องก็อปโค้ดจาก stackoverflow อยู่เลย 

Dominik Kundel

“Moin! My name is Dominik. I'm writing JS for 6 years and I still have to look up how to do AJAX requests without fetch or jQuery”

“สวัสดี ผมชื่อโดมินิค เขียน JavaScript มาเป็นเวลาติดต่อกันกว่า 6 ปีแล้ว และผมยังคงต้องค้นหาวิธีการเรียกใช้ AJAX โดยไม่ต้องทำการเรียกใช้การ fetch หรือ แบบ jQuery”


EricaJoy

“Hello, my name is Erica. If I told you what things I still have to Google, you'd try to use it as "evidence" that I'm not a "real" engineer”

สวัสดี ฉันชื่อ Erica ถ้าฉันจะบอกว่าสิ่งที่ฉันทำอยู่ ฉันยังคงต้องค้นหาใน Google อยู่เสมอ ซึ่งคุณอาจจะใช้มันเป็นหลักฐานยืนยันได้เลยว่าฉันไม่ใช่วิศวกรซอฟท์แวร์ตัวจริง


สิ่งเหล่านี้จากซีเนียร์โปรแกรมเมอร์ระดับบิ๊ก ๆ เหล่านี้ คงทำให้หลายคนมีพลังฮึดขึ้นมาในตอนนี้ แม้แต่ระดับนี้ยังไม่อายที่จะบอกว่า ยังคงต้องใช้ Google ในการค้นหาข้อมูล Syntax คำสั่งอะไรต่าง ๆ อยู่เลย ซึ่งมันไม่แปลกครับ ใครมันจะไปจำได้ทุกคำสั่ง ทุก Syntax

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


สรุปของผู้เขียนบทความ (ต้นฉบับ)

มาถึงข้อสรุปของผู้เขียนบทความ ซึ่งผมชอบสิ่งที่เขาสรุปมาไว้ ทำให้ได้มุมมองที่ดียิ่งขึ้น โดยเขาบอกว่า

“I may not need to spend months before I am able to work on it. I may only need a few hours to read its documentation and then learn more as needed along the journey without the need to memorize everything”

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

“You do not expect to have all green lights on when you start your journey to your destination”

คุณไม่จำเป็นต้องรอให้พร้อมทุกอย่าง ก่อนที่คุณจะเริ่มก้าวไปสู่ความสำเร็จหรือจุดหมายปลายทาง 

ปัจจุบันนี้ มีภาษาโปรแกรมมิ่งหรือเฟรมเวิร์คใหม่ ๆ ออกมามากมาย เปลี่ยนแปลง ๆ ไปทุก ๆ ปี ดังนั้นการพยายามที่จะจำ syntax นั้นทั้งยากและก็ไม่มีความจำเป็น เรียนรู้วิธีการแก้ปัญหา และแก้ปัญหาอย่างชาญฉลาดต่างหากคือหัวใจหลัก


สรุป

ส่วนอันนี้คือข้อสรุปของผม (ผู้เขียนและเรียบเรียงบทความนี้) แบบกระชับสุด ๆ ครับ

"Don’t try to remember every syntax. Try to be a good problem solver instead."

หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยนะครับ


แหล่งอ้างอิงเพิ่มเติม

  • If You Want to Be a Senior Developer, Stop Focusing on Syntax
  • https://medium.com/better-programming/if-you-want-to-be-a-senior-developer-stop-focusing-on-syntax-d77b081cb10b


เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน

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