#1 tech recruiter in thailand

แก่แต่เก๋า Senior dev มอง Junior Dev ออกได้ยังไง

See the original English version of this article here

บทความนี้เขียนโดยคุณ Scott Shipp (Software Engineer) ซึ่งได้บอกเรื่องราวเกี่ยวกับความแตกต่างของการเขียน Code ของ Senior Dev และ Junior Dev ไว้อย่างน่าสนใจ ซึ่งทีมงานได้สรุปไว้ให้แล้วดังนี้

มีคำคมหนึ่งของ Brian Goetz (ผู้แต่งหนังสือเรื่อง Java Concurrency in Practice) ซึ่ง Scott ชื่นชอบมากเป็นพิเศษ ซึ่งคำคมนี้ปรากฏในบทสัมภาษณ์ในหัวข้อ “Write Dumb Code” ที่ทาง Oracle เป็นผู้เผยแพร่ โดยครั้งนั้น Brian Goetz ถูกถามเกี่ยวกับวิธีการเขียน Code ที่ดีมีประสิทธิภาพ และนี่คือสิ่งที่ Brian Goetz ตอบ:

“บ่อยครั้งที่วิธีการเขียน Code อย่างรวดเร็วใน Java Applications คือ การเขียน Dumb Code ซึ่งเป็นการเขียน Code แบบเข้าใจได้ง่าย และเป็นไปตามหลักการของ Object-Oriented”

นอกจากนี้ Scott Shipp ได้อธิบายว่า การพยายาม Optimize Code และการพยายามทำให้ดูฉลาดในการเขียน Code นั้น อาจเป็นความผิดพลาดของ Programmer และมักจะเกิดกับ Programmer มือใหม่

วิธีการ Code ของ Senior Dev

อาจมีบางคนที่เคยเป็นเหมือน Scott คือ ตอนที่ยังเป็น Junior Developer แล้วเห็น Code ของ Senior Dev ณ ตอนนั้นเคยคิดว่า “Code แบบนี้เราก็เขียนได้นะ” “แต่ทำไมเราไม่ได้ขึ้นเป็น Senior ล่ะ” แต่ความจริงแล้วเขาพยายามเขียน Code แบบนี้มานานแล้ว แต่ก็ยังไม่สามารถทำได้เลย ทั้งที่มันเป็นพื้นฐานที่ง่าย ตรงไปตรงมา หลังจากนั้น เขาก็เรียนรู้ “ชื่อ” ของหลักการ (Principles) ทั้งหมดที่จะช่วยให้เข้าใจได้มากขึ้น เช่น YAGNI, Single Responsibility Principle, DRY, Single Level of Abstraction Principle, low coupling เป็นต้น และในที่สุดเขาก็ได้เป็น “Senior Dev” จริงๆ แต่ตัวเขาเองกลับรู้สึกไม่ชอบคำว่า “Senior Dev” เลยเพราะมันมักถูกใช้ในการอวดอ้างว่าเป็น “Software Engineer” และบทเรียนสำคัญที่เขาได้เรียนรู้คือ การเขียน Code ให้เข้าใจง่ายและไม่ซับซ้อนนั้น เป็นเรื่องที่ยากและต้องอาศัยความพยายาม

วิธีสังเกตว่าใครเป็น Junior Dev

ในหนังสือ “Refactoring: Improving the Design of Existing Code” ของ Kent Beck ได้เขียนไว้ตอนหนึ่งว่า:

“ คนที่ไม่เก่งก็สามารถเขียน Code ให้คอมพิวเตอร์เข้าใจได้ ดังนั้น โปรแกรมเมอร์ที่ดี ก็ควรเขียน Code ให้มนุษย์ทั่วไปเข้าใจได้ เช่นกัน ”

คุณจะสามารถมองออกได้ว่าใครเป็น Junior Dev โดยถ้าคุณไปอ่าน Code ของพวกเขา แล้วเห็นว่า พยายามโชว์ความสามารถจากการเขียน Code ในบรรทัดเดียว หรือไม่ก็พยายามใช้ Feature ของภาษาเต็มไปหมด จนรู้สึกเหมือนกับว่า Code มันกำลังพยายามจะบอกคนอ่าน Code ว่า “”มองมาที่ฉันสิ! คนที่สร้างฉันมาเขารู้ภาษานี้จริงๆนะ! เขามีความรู้ด้านเทคนิคที่ซับซ้อนมากเลยนะ!”

Code เป็นสื่อกลางในการติดต่อสื่อสารระหว่างมนุษย์ และบอกกับคอมพิวเตอร์ว่า จะให้ทำอะไร แต่มันก็มีอะไรที่มากกว่านั้น คือ Compiler จะจัดการเรื่อง แปลสิ่งที่ Programmer เขียนลงใน Machine Language โดยบ่อยครั้งที่มีการแปลหลายชั้น เช่น เมื่อ Java ถูก Compile ไปเป็น ByteCode ซึ่งอ่านโดย Java Virtual Machine ในขณะ Run time และในท้ายที่สุดจะแปลไปเป็นเพียงแค่ 0 และ 1 เท่านั้น

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

การเขียน Code ให้อ่านและเข้าใจได้ง่าย เป็นเรื่องที่ยาก Scott เองรู้สึกเหมือนได้เรียนรู้และเข้าใจมันมากขึ้น เขารู้สึกพอใจเมื่อได้รับความคิดเห็นด้านบวก อย่างเช่น “Clean Code!” จากการ Review code ของคนอื่น เขารู้ว่า สิ่งที่ดีที่สุดที่สามารถทำได้สำหรับทีมของเขา และคนที่จะมา Maintain Code ในอนาคต ก็คือ การเขียน Code ให้เข้าใจง่ายๆ นี่แหละ

ISM Technology Recruitment Ltd. (#1 Tech Recruiter in Thailand) บริษัทเราเชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ เปิดทำการกว่า 25 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย หากคุณเป็นคน IT ที่อยากทำงานที่ท้าทายและร่วมงานกับองค์กรชั้นนำ ฝากประวัติการทำงาน (Resume) ของคุณไว้กับ ISM ได้ที่ https://www.ismtech.net/submit-your-resume แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ามากมายกำลังรอคุณอยู่

Source: https://hackernoon.com/

en