Polyglot Programming the good and the bad

08-Sep-17

คัมภีร์เทพ IT


        อาจมีคนไอทีหลายท่านที่อาจไม่คุ้นเคยกับคำนี้มาก่อน โดย Polyglot Programmer หมายถึง คนที่สามารถเขียนโปรแกรม Computer ได้ดี แถมยังสามารถเขียนได้ดีอีกหลายภาษา Programming ด้วย มันน่าจะรู้สึกดีถ้าคุณรู้เทคโนโลยีที่หลากหลาย เพราะมันจะง่ายสำหรับคุณ ที่จะเลือกใช้เครื่องมือที่ดี(ที่สุด) ให้เหมาะกับงานตั้งแต่เริ่มต้น Coding เลย แต่จะว่าไปแล้ว การที่รู้ทั้งเครื่องมือที่ดี และเทคโนโลยีหลายอย่าง มันก็เหมือน “ดาบ 2 คม”  ได้เช่นกัน ซึ่งคุณ Rajat Saxena (Full Stack, Android Developer, YouTuber) ผู้เขียนบทความนี้ ได้บอกถึง ข้อดี และ ข้อเสีย ให้แล้วว่ามีอะไรบ้าง
 

ข้อดี

  1. สามารถทำอะไรได้หลายๆ อย่าง
    หลายเทคโนโลยีแต่ละอย่างก็เป็นที่นิยมด้วยเหตุผลบางอย่าง Polyglot Programmer สามารถนำแนวคิดและวิธีการบางอย่างไปใช้เพื่อแก้ปัญหาบางประเภทได้อย่างมีประสิทธิภาพ ซึ่งทำให้สามารถใช้ประโยชน์จากสิ่งเหล่านั้นบน Platform ที่แตกต่างกันได้อย่างไม่ยากนัก เช่น เมื่อเร็ว ๆ นี้ผมใช้ React style ในการ Coding ใน Android นั่นคือ  Function หนึ่งที่มีหน้าที่รองรับการเปลี่ยน UI ของ App ทั้งหมด และสถานะของ App นั้นเป็น Object ซึ่งสิ่งนี้ทำให้ Workflow ของผมดีขึ้นมาก อีกทั้งยังช่วยลดเวลาในการ แก้ bug ใน App ได้อีกด้วย

     
  2. ไม่ต้องใส่ใจกับเครื่องมือที่ไร้ประสิทธิภาพ
    หากคุณรู้จัก jQuery เป็นอย่างดีว่ามันสุดยอดแค่ไหน แล้วคุณก็สามารถใช้ทำ DOM-FU ได้ แต่น่าเศร้าที่มันไม่ใช่เครื่องมือที่มีประสิทธิภาพในการเขียน SPAs (Single Page Applications) ซึ่งที่จริงคุณก็สามารถใช้ jQuery ได้กรณีที่คุณรู้จักแค่ jQuery อย่างเดียว อีกทั้งคุณจำเป็นต้องรีบทำให้เสร็จ แต่ถ้าคุณรู้ React หรือ Angular แล้ว ชีวิตคุณจะง่ายขึ้น เพราะมันเหมาะกับงานลักษณะนี้มากกว่า jQuery

     
  3. พลังของ Mix & Match
    ถ้าคุณรู้ทั้ง Bash scripting และ Python แล้ว คุณจะสามารถเปลี่ยนจาก Bash script ไปใช้ Python ได้ ซึ่ง ที่จริงแล้วการเขียน script ในแต่ละภาษา Programming มันก็สามารถทำงานได้เหมือนๆ กัน หรือคล้ายๆ กัน แต่บางภาษา ก็สามารถเขียนได้ง่ายๆ เพียงแค่ 1 บรรทัด แต่บางภาษาอาจเขียนได้ยากกว่าหรือต้องใช้ความพยายามเยอะกว่า เป็นต้น ดังนั้น การที่คนรู้หลายๆ อย่าง เขาจะสามารถหยิบโน่นหยิบนี่ มาประยุกต์ใช้ในงานได้อย่างสะดวกกว่า คนที่รู้แค่อย่างเดียวหรือรู้น้อยกว่า

     
  4. การทำซ้ำ สามารถทำได้รวดเร็วขึ้น
    Domain-Specific Language (DSLs) ช่วยเพิ่มความเร็วให้คุณ ในการ release code ใหม่ และลดเวลาในการพัฒนา Product จนออกสู่ตลาด จะว่าไปแล้วผมก็สนับสนุน DSLs อย่างมาก ผมเลยบันทึกวิดีโอเกี่ยวกับเรื่องนี้ไว้
    https://www.youtube.com/watch?v=Fc8DGU7B9bY 

ข้อเสีย

  1. ทางเลือกที่หลากหลาย ก็อาจทำให้คุณปวดหัวได้
    ยิ่งคุณรู้เทคโนโลยีหลายอย่างก็ยิ่งทำให้คุณสับสนมากขึ้น อย่างเมื่อเร็วๆ นี้ ผมอยู่ในสถานการณ์ที่ต้องเลือกระหว่าง Laravel หรือ Express.js ซึ่งที่จริงแล้วผม "มีความรู้พอๆ กัน" ทั้งสองอย่าง แต่ก็ไม่ได้อยู่ในระดับเชี่ยวชาญเลยทั้งคู่ ซึ่งผมมีความคิดเข้ามาในหัวตีกันไปตีกันมา ว่า “Laravel มีทุกอย่างที่ผมต้องการ! แต่จะว่าไป Node ก็เร็วกว่า ผมต้องการ Server ที่รวดเร็ว(ที่สุด) สำหรับ App. Chat ของผม แต่ด้วย PHP7 และเทคโนโลยีอย่าง HHVM ก็ทำให้ PHP ถูกอ้างว่าเร็วกว่า และอีกจิปาถะ แค่คิดก็ทำผมปวดหัวแล้ว L

     
  2. เป็นการยากที่จะติดตามเทคโนโลยีทั้งหมด
    การไม่รู้ ถือเป็นความสุขอย่างหนึ่ง" ซึ่งผมเห็นด้วยเป็นที่สุด เมื่อคุณกำลังสนใจหรือตามเทคโนโลยีที่คุณคุ้นเคย คุณจะค้นรู้สึกว่าคุณกำลังวิ่งไปในทุกทิศทางแต่สุดท้ายก็ไม่รู้ว่าจะไปที่ไหนดี เวลาคุณทราบว่ามีพวก version ใหม่ออกมา สมมติเป็น Laravel แล้วมีการเลิกใช้งานบางอย่างไป อาจทำให้คุณคิดว่าความรู้ของคุณกำลังจะล้าสมัยแล้ว และเมื่อคุณอยู่ห่างจากเทคโนโลยีที่คุณสนใจไปสัก 1-2 เดือน ก็จะมีคนมาแนะนำและบอกว่ามี Feature ไหนที่จะเลิกใช้งานหรือใช้แล้วไม่ work บ้าง แน่นอนว่ามันจะทำให้คุณหัวเสียอย่างมาก

     
  3. คุณจะไม่เชี่ยวชาญ แต่จะอยู่ในระดับแค่ทำได้
    คุณคงเคยรู้สึกว่าเทคโนโลยีหลายๆ อย่างมาไวไปไว ทั้งที่คุณไม่ทันได้เรียนรู้ “Best practice” ของแต่ละเทคโนโลยีอย่างเต็มที่เลย คุณพยายามที่จะทำงานทุกอย่างให้สำเร็จเพื่อให้ Product ของคุณออกสู่ตลาดให้ได้เป็นหลัก ถึงแม้คุณอาจรู้วิธีออกแบบ Website, Mobile App. และ/หรือ back-end APIs แต่ก็ยังมีมุมมองอีกหลายเรื่องทั้ง Performance, Best-practices และ Security ที่คุณยังไม่เคยรู้ลึกในระดับที่เรียกว่าเชี่ยวชาญเลย เพราะคุณมัวยุ่งอยู่กับการติดตามเทคโนโลยีต่างๆ เยอะไปหมดจนไม่ได้โฟกัสอันใดอันหนึ่ง

     
  4. บริษัท(ส่วนใหญ่)ไม่ค่อยสนใจคนที่ไม่รู้ลึกรู้จริง
    คุณจะมี Portfolio เพื่อรองรับว่าคุณมีทักษะ Android Development จริง แต่หากคุณยังไม่ทราบเกี่ยวกับ folder structure ของ Android project แล้ว (เหตุการณ์นี้เกิดกับผมเอง ในช่วงปี 2016) มันก็เป็นการพิสูจน์ให้เห็นว่า ที่จริงแล้วคุณไม่ได้เชี่ยวชาญหรือรู้จริงในเรื่องนั้นเลย

    ผู้สัมภาษณ์: "คุณไม่มีความรู้เรื่อง folder structure ของ Android projectเลย?"

    ฉัน: "แต่ผมสามารถ code Java, XML และ Gradle .... ",

    ผู้สัมภาษณ์: "ผมต้องขอโทษด้วย ผมคงไม่จ้างคุณครับ!"

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

 

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

ที่มา: hackernoon.com

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

 

เพิ่มเพื่อน

 

 

 

บทความที่เกี่ยวข้อง