Developer Character

วันนี้ ผมได้รับโอกาสให้ไปพูดให้น้องๆนักศึกษาที่มาเยี่ยมชมงานของบริษัท โดยหัวข้อที่ไปพูดคือ Developer Life @ Thomson Reuters

โดยมีเนื้อหาส่วนนึงได้รับความสนใจจากน้องๆเป็นอย่างมาก นั่นก็คือ Developer Character ซึ่งเป็นสิ่งสำคัญมากๆ นอกจากเรื่องความรู้ทางเทคนิค บางทีเวลารับคนเข้าทำงาน ผมให้น้ำหนักกับส่วนนี้มากกว่าส่วนอื่นซะอีก อ่ะ พูดมาเยอะละ มีอะไรบ้างไปดูได้เลยครับ

  1. มีความหลงใหลในการสร้างสิ่งต่างๆด้วยตัวเราเอง - Love in Building Thingsถ้าคุณมีโมเม้นท์ ที่ ว้าวว ตอนที่เราเขียนโปรแกรม Hello world ครั้งแรก ผมว่าเริ่มมาถูกทางละครับ :)
  2. ชอบแก้ปัญหาหรือเผชิญหน้าความท้าทายใหม่ๆอยู่เสมอ - Love solving challengeจริงๆ ผมไม่ชอบการบังคับคนอื่นให้พูดแทนคำว่า "ปัญหา" ด้วยคำว่า "ความท้าทาย" นะ แต่โดยส่วนตัวแล้วผมคิดว่า ปัญหามันเข้ามาทุกวันแหละ จะยาก จะง่าย บางทีก็เป็นบั้กที่แก้ไม่ออก หรืองานที่ต้องเจอกับคนที่รับมือยาก จอมดราม่า :) เป็นต้น แต่ผมจะมองว่า เราหนีปัญหามั้ย เผชิญหน้ากับมันหรือเปล่า ได้ลองเสนอวิธีแก้ไขมั้ย หรือ เลือกไม่ทำอะไรเลย...
  3. เข้าใจพื้นฐานของการเขียนโปรแกรม - Understand fundamental of programmingแน่นอนว่าพื้นฐานเป็นสิ่งสำคัญ ยิ่งยุคนี้ที่มีเครื่องมือ, framework, module ต่างๆให้เราใช้มากมาย แต่ เรื่องพื้นฐานก็สำคัญมาก คำถามข้างล่างเป็นคำถามที่ผมใช้ถามบ่อยๆ แต่มีคนตอบได้น้อยมากๆObject Oriented Programing (OOP) คืออะไร มีไว้ทำไมBig O คืออะไร หรือบอกได้มั้ยว่าเขียนแบบไหนเร็วกว่าแบบไหนลองบอก Datastructure ที่คุณเคยใช้ให้ฟังหน่อย ทำไมถึงใช้ตัวนี้ล่ะ มีข้อดีข้อเสียยังไง
  4. ไม่ค่อยยึดติดกับเครื่องมือเครื่องมือในการเขียนโปรแกรมทุกวันนี้ออกมาไวมาก แล้วก็ไปไวมากเช่นเดียวกัน ในความคิดของผมคือสิ่งที่เราควรจะเน้นคือ requirement มากกว่า ว่า สิ่งที่เรากำลังจะทำคืออะไร เช่น เป็น web หรือ มือถือ ต้องรองรับจำนวนคนเท่าไหร่ etc. แล้วเราค่อยเลือกเครื่องมือที่เหมาะสมมาใช้กับงานเรา แต่ส่วนใหญ่ที่เจอจะเป็นแนวมองว่าเครื่องมือหรือภาษาเป็นแนวศาสนาซะมากกว่า :(
  5. ทำงานเป็น team ได้ดีการทำงานในยุคสมัยนี้ การทำงานเป็น team สำคัญมาก เพราะเราไม่สามารถสร้างอะไรได้สำเร็จด้วยตัวคนเดียวได้ ซึ่งการทำงานเป็นทีมนี้ยังรวมถึงการแสดงความคิดเห็นต่างๆ เพื่อทำให้ทีมดีขึ้นได้ เช่น กล้าที่จะให้ feedback กับ code หรือ architect ที่ไม่ดี เพื่อให้งานของทีมโดยรวมออกมาดีขึ้นด้วย
  6. กล้าที่จะเปลี่ยนแปลงให้ดีขึ้นผมชอบคนที่กล้าเสนอความคิดเห็น หรือคนที่ไม่ชอบทนกับสิ่งเดิมๆแล้วลุกขึ้นมาเปลี่ยนตัวเองหรือคนรอบข้างให้ดีขึ้น บางทีก็เป็นเรื่องง่ายๆก็ได้นะครับ เช่น ใช้ GIT และ Automated Script/Scheduler เพื่อรวมโค้ดและทำ automated deploy

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