Screen Shot 2558-02-07 at 11.25.03 AM

เรื่องที่ 29 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Don’t Just Learn the Language, Understand its Culture

จากหนังสือ The Pragmatic Programmer ได้แนะนำและสนับสนุน
ให้ developer ทำการเรียนรู้ภาษาโปรแกรมใหม่ ในทุกๆ ปี
ซึ่งถ้าได้ลองศึกษา และ ทำตาม จะพบว่า

อย่าเพียงแค่ศึกษาเรื่อง syntax ของตัวภาษาเท่านั้น
แต่ต้องเข้าใจธรรมชาติ และ เป้าหมายของตัวภาษาด้วยเช่นกัน

ตัวอย่างเช่น
ถ้าคนเริ่มเขียนภาษา Java ก็มักจะบ่นว่า
ทำไมต้องเขียน public static void main(String[] args) {} ด้วยล่ะ ?
มันยามมากเลยนะ เขียนยากมากๆ
แต่ให้ศึกษาก่อนไหมว่า ทำไมต้อง static ด้วยล่ะ ? เพื่ออะไร ?

หรือในการศึกษาพวกภาษา functional
มันยากมากๆ สำหรับการศึกษาและใช้งาน Lambda expression
แต่มันไม่มีอะไรยาก เพียงแค่คุณใช้มันไปเรื่อยๆ เท่านั้นเอง

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

ตัวอย่างเช่น การใช้ Generic ใน Java นั้นจะใช้งานได้ดี
ถ้ารู้จักหรือเขียน .Net มาก่อน

รวมทั้งในแต่ละภาษามันจะทำให้คุณ
เข้าใจในเรื่อง Design pattern มากยิ่งขึ้น
เนื่องจากแต่ละภาษาก็จะมีแนวทางที่แตกต่างกัน
ซึ่งเป็นการเปิดโลกในการเขียนโปรแกรมอย่างมาก

แต่สิ่งที่ควรระวังก็คือ
คุณอาจจะนำหลากหลายภาษาไปใช้พัฒนาระบบงานหนึ่ง
เช่นมีทั้ง Java, Python, Erlang เป็น
ลองคิดดูว่า ระบบงานที่คุณทำมันจะมั่วขนาดไหน ?
แต่ถ้าทีมพัฒนา และ ทีม maintain รู้และเข้าใจ ก็ไม่มีปัญหาอะไร
เนื่องจากแต่ละภาษาก็ถูกสร้างขึ้นมาเพื่อจุดประสงค์ที่เฉพาะเจาะจงเช่นกัน

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

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