Programmer Tips ที่คุณต้องอ่าน ถ้าต้องการเป็นโปรแกรมเมอร์ที่ดีขึ้น

   By: DH Team

   อัปเดตล่าสุด Jan. 30, 2024

Programmer Tips ที่คุณต้องอ่าน ถ้าต้องการเป็นโปรแกรมเมอร์ที่ดีขึ้น

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


1. ใช้ Google เยี่ยงเซียน

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


2. เขียนคอมเมนต์

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


3. อย่าเขียนคอมเมนต์ถ้าโค้ดสื่อความหมาย

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


4. อ่าน Docs ให้ช่ำชอง

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


5. หา Mentor

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


6. เป็น Mentor

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


7. ตั้งชื่อตัวแปรให้สื่อความหมาย

ตัวแปรและฟังก์ชันควรสื่อความหมายในตัวมันเองได้ หลาย ๆ คนมักจะมักง่ายหรือตั้งชื่อตัวแปร (Python) เช่น 

a = 10
b = 20
c = a + b

อะไรทำนองนี้ไม่ควรตั้งชื่อตัวแปรแบบนี้ ควรตั้งให้สื่อความหมาย

เช่น 

val1 = 10
val2 = 20
total_val = val1 + val2

เป็นต้น


8. ลบโค้ดที่ไม่ได้ใช้

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


9. เรียน Data Structures & Algorithms

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


10. กล้าที่จะถาม

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

11. อย่ายอมแพ้

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

12 เข้าใจ Requirements ให้แจ่มแจ้งก่อนลงมือเขียนโค้ด

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

13 เปิดใจเรียนรู้ ไม่ยึดติด

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


14 อย่าจับฉ่ายเรียนหรือทำทุกอย่าง แต่ไม่เก่งสักอย่าง

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


15 หนึ่งในการเรียนรู้ที่มีประสิทธิภาพที่สุดคือการสอนคนอื่น

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


16 เริ่มต้นด้วย Why? ก่อน How? เสมอ

เราต้องรู้ว่าเรากำลังจะทำสิ่งเหล่านี้หรือเขียนโค้ดส่วนนี้ไปทำไป (why?) แทนที่จะเริ่มต้นด้วยการที่จะทำมันอย่างไร (how?) คือถ้า how แล้ว ค่อย why นั้นบรรลัยมานักต่อนัก lol


17 เข้าใจ Fundamentals (พื้นฐาน, หลักการ) จะดีที่สุด

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


18 อย่าก็อปปี้โค้ดมาใช้โดยที่ไม่เข้าใจโค้ดส่วนนั้น

หลาย ๆ คนคงเคยก็อปปี้โค้ดจากแหล่งต่าง ๆ เช่น Stackoverflow มาใช้ในโปรเจคท์ แต่ก็มีหลายคนที่ก็อปมาแล้วโค้ดทำงานได้ แต่ไม่รู้ว่าจริง ๆ แล้วโค้ดส่วนนี้มันทำหน้าที่อะไรกันแน่ จะทำให้เกิดปัญหาตามมาในภายหลังได้


19 ถามคำถามที่เป็นประโยชน์และดูชาญฉลาด

ยกตัวอย่างเช่น "programming คืออะไรครับ/คะ?" 

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


20 คิดแทน user

ทำไมถึงบอกแบบนี้ ? ก็เพราะว่าบางที่ requirements หรือสิ่งที่ user ขอมาอาจจะไม่เป็นแบบที่เขาคิดไว้ก็เป็นได้ ถ้าเราสามารถแนะนำได้ว่าจริง ๆ แล้ว use cases จริงมันควรเป็นแบบนั้นแบบนี้ก็ควรแนะนำให้ user ให้เข้าใจแต่แรก เพราะว่าบางที user อาจไม่ได้มีประสบการณ์ด้านนี้มาก่อน ดังนั้นเราสามารถคิดแทนได้ แต่ก็ควรอยู่ในขอบเขตที่ user ต้องการ


21 เขียนโค้ด 3 ครั้ง

วิธีการที่ว่านี้เป็นที่นิยมและถูกใช้อย่างแพร่หลาย ฝรั่งจะเรียกว่า "Coding 3 times" ซึ่งแบ่งออกได้ดังนี้คือ

  • ครั้งที่ 1 - เป็นการ proof concept ว่าโปรเจคท์หรือฟีเจอร์นี้มันเป็นไปได้นะ
  • ครั้งที่ 2 - เป็นการเขียนโค้ดเพื่อให้สามารถทำงานได้จริง
  • ครั้งที่ 3 - เป็นการเขียนโค้ดเพื่อให้เกิดความถูกต้องในทางที่ควรจะเป็น

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


22 ภาษาอังกฤษจะทำให้คุณนำหน้าคนอื่น 1 ก้าว

จริง ๆ แล้วคงอาจไม่ต้องมี discussion อะไรแบบนี้เกี่ยวกับภาษาอังกฤษ เพราะว่ามันคือ standard ไปแล้วสำหรับวงการนี้  เรียกได้ว่าเป็น a must (ต้องรู้) ข้อมูลบนโลกส่วนใหญ่ล้วนเป็นภาษาอังกฤษ ภาษาไทยเป็นเพียงแค่แหล่งข้อมูลอันน้อยนิด เมื่อเทียบกับข้อมูลมากมายมหาศาลบนโลกอินเทอร์เน็ต นั้่นหมายความว่า ถ้าเราสามารถเข้าถึงและทำความเข้าใจกับข้อมูลมากมายมหาศาลเหล่านั้น มันจะทำให้เราอยากเรียนอะไรก็ได้เรียน อยากค้นหาและทำความเข้าใจกับอะไรก็ทำได้เว้ยยยย มันง่ายและสะดวกไปหมด


23 เรียนรู้จากประสบการณ์ของคนอื่น

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


24 แวดล้อมไปด้วยคนเก่ง ๆ 

เคยได้ยินภาษิตไหมครับว่า "คบคนเช่นใด ย่อมเป็นเช่นนั้น" แน่นอนว่าถ้าคุณแวดล้อมไปด้วยคนเก่ง ๆ mindset ดี ๆ ไม่ช้าก็เร็วคุณก็จะเก่งและดีตามไปด้วย


25 Bookmark เรื่องที่สนใจและควรรู้

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


26 หัดใช้คีย์ลัดต่าง ๆ 

ส่วนนี้คือการสร้างความ productiveให้กับตัวคุณเอง คุณต้องหัดใช้คีย์ลัดต่าง ๆ สำหรับเครื่องมือเขียนโค้ดที่ใช้ เช่น คุณกำลังใช้ Visual Studio Code ก็ต้องทำความเข้าใจการใช้คีย์ลัดต่าง ๆ เพื่อให้การทำงานได้รวดเร็วมากยิ่งขึ้น แทนที่จะกดปุ่ม 10 สเต็ปถึงจะได้ผลลัพธ์ที่ต้องการ แต่ใช้คีย์ลัดเพียงแค่ 2 ครั้งก็สามารถทำได้เทียบเท่ากับการทำก่อนหน้า !!


27 อย่าพี่ง Best Practice ถ้ายังไม่รู้ Bad Practice

ถ้าเรายังไม่เคยได้แตะ bad practice เราจะไม่เข้าใจ best practice อย่างลึกซึ้งที่ควรจะเป็น ตัวอย่างเช่น Docker ถ้าเราไม่เคย deploy งานแบบเก่าก่อนที่ไม่ได้มี containerization อย่าง Docker มาช่วยเราจะไม่เข้าใจ paintpoint ที่จะนำ Docker มาใช้อย่างถ่องแท้ ดังนั้นอย่ากลัวที่จะ bad พิสูจน์และทำให้เห็นก่อนว่า Why แทนที่จะเป็น How


28 ใช้ภาษาหรือคำให้ถูกต้อง

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


29 อย่าเอาแต่ดู tutorials ให้ลงมือเขียนโค้ดเลย

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


30 ทำ To Do List 

การทำ to do list เป็นสิ่งที่จะช่วยให้เรารู้ทิศทางและเป้าหมายในแต่ละวันอย่างชัดเจน ทำให้ทราบว่า วันนี้ พรุ่งนี้ หรือมะรืน หรืออาจจะระยะยาวกว่านั้นตามแต่สถานการณ์ของแต่ละคน


31 Work/Life Balance 

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


32 อย่าหยุดเรียนรู้

เทคโนโลยีในสายงานโปรแกรมมิ่งนั้นมีอะไรใหม่ ๆ ออกมาในทุกวัน ดังนั้นจึงอย่าหยุดเรียนรู้ อย่ายึดติดกับเทคโนโลยีเดิม ๆ


สุดท้าย 10x productive ด้วย ChatGPT

คงไม่มีโปรแกรมเมอร์คนไหนที่ไม่รู้จัก ChatGPT ในตอนนี้ ถ้าคุณสามารถใช้มันให้เป็นแล้วล่ะก็ ผมบอกได้เลยว่ามันสามารถสร้าง productivity ให้เพื่อน ๆ ได้เป็น 10 เท่าตัว ตอนนี้หลาย ๆ โซลูชั่นเราสามารถใช้เจ้า ChatGPT ช่วยได้ดีมาก ๆ เลย แต่ไม่ใช่ว่าจะ copy มาทั้งหมดนะ เพื่อน ๆ ต้องเข้าใจ fundamentals (หลักการ) ของสิ่งที่กำลังทำ เพราะมันจะนำมาซึ่ง Prompts ที่เราสามารถบอกเจ้า ChatGPT ได้แม่นยำและตรงประเด็นมากยิ่งขึ้น


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


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


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

คอร์สเรียนเขียนโปรแกรม