Tino Thamjarat

March 14, 2021

โตแล้วเป็นโปรแกรมเมอร์ได้ แต่เป็นโปรแกรมเมอร์แล้วจะโตไปเป็นอะไร?

เป็นโปรแกรมเมอร์เพราะชอบเขียนโค้ดแต่พอเราโหดมากๆ ดันให้เราไปบริหารคนเฉยเลย การเลื่อนตำแหน่งไปเป็น manager คือจุดสูงสุดของการเป็นโปรแกรมเมอร์...จริงหรือ

สายอาชีพ software engineer ในบริษัทหลายๆแห่งมีเส้นทางการเติบโตที่ค่อนข้างสั้น เริ่มต้นจากเด็กจบใหม่เข้ามาเป็น junior ขยับขึ้นเป็น mid-level และเป็น senior ตามลำดับ โดยส่วนมากหลังจากระดับ senior แล้ว ขั้นถัดไปคือการขึ้นเป็น team lead หรือ manager

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

หลังจากนี้เราขอเรียกตำแหน่งงานที่ไม่ได้อยู่ใน management track รวมๆว่า individual contributor (IC)

เป็น manager น่าจะสร้าง impact ได้มากกว่าไม่ใช่หรอ?

น่าเสียดายที่มันไม่ง่ายขนาดนั้นเพราะการเป็น manager มีโฟกัสในการทำงานไม่เหมือนช่วงก่อนหน้าที่ยังเป็น IC ถึงแม้ว่าจะเป็น engineering manager แต่เนื้องานที่ทำก็ต่างกันอยู่ดี 

แล้ว Engineering Manager ทำอะไรบ้าง?

งานของ engineering manager จะเกี่ยวข้องกับการวางแผน การ sync กับทีมต่างๆที่ต้องใช้ resource ร่วมกับเรา delegate งานต่างๆให้คนในทีมทำแทน รวมถึงการคุยตัวต่อตัว (one-on-one meeting) กับคนในทีมบ่อยๆเพื่ออัพเดตเรื่องต่างๆที่อาจมีผลกระทบกับโปรเจคที่ทำอยู่ คอย unblock ทีมเวลาเจอปัญหา

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

อ่าว?! แล้วถัดจาก senior ถ้าไม่ไปเป็น lead / manager แล้วจะให้ทำอะไรต่อ?

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

พนักงานที่อยู่มานานเหล่านี้มี context มากพอที่จะร่วมงานกับหลากหลายทีมที่กำลังแก้ปัญหาคนละอย่างให้กับองค์กรและสามารถ contribute ให้กับทุกทีมเหล่านั้นได้อย่างมีประสิทธิภาพ ร่วมออกแบบ architecture ของ software หรือ infrastructure ที่ต้องใช้รองรับการทำงานของ service จากหลากหลายทีมในองค์กร เขียนโค้ด เปิด pull request ให้กับหลายๆทีม หรือ แม้กระทั่ง review โค้ดที่อยู่ใน repository ที่เก่าแก่ที่สุดของบริษัทที่ไม่มีคนแตะมาเป็นปีๆ

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

หน้าที่ที่ได้กล่าวมาข้างต้นเป็น job description คร่าวๆของ IC track ที่สูงกว่า senior แต่ไม่ใช่ manager  ตำแหน่งนี้หลายๆที่ เรียกว่า Staff Engineer

บริษัทที่ผมทำงานอยู่อย่าง Unity ที่ Helsinki มี Staff Engineer เพียงแค่ 3 คนเท่านั้น ซึ่งแต่ละคนจะมี domain ในบริษัทเป็นของตัวเอง เช่น data science, infrastructure หรือ code architecture ในภาษาต่างๆที่บริษัทใช้ และยังมีตำแหน่งต่อจากนี้อีกคือ Principal Engineer ซึ่งเป็นจุดเกือบสูงสุดของ IC track และที่ Unity Helsinki มีเพียงคนเดียวเท่านั้น หน้าที่กับ impact ก็จะมากขึ้นไปอีก เช่น ดูแลหลาย domain ในบริษัทและยังมีหน้าที่ร่วมร่าง roadmap และให้คำปรึกษากับองค์กรในภาพใหญ่ว่า technology ที่ใช้ควรจะไปในทิศทางไหน ซึ่งถ้าเทียบกับฝั่ง manager แล้ว ตำแหน่งนี้มีระดับเดียวกับ director หรือ senior director เลยทีเดียว แต่งานในแต่ละวันก็ยังข้องเกี่ยวกับการเขียนโค้ดและออกแบบ software อยู่ค่อนข้างมาก ซึ่งทั้งสองตำแหน่งนี้ก็ไม่ได้มี "ลูกทีม" ที่ต้องดูแลฟูมฟักแต่อย่างใด

และ ณ จุดสูงสุดของงานสาย IC ที่หลายๆบริษัทใหญ่เริ่มมีมาให้เห็นนั่นก็คือระดับ Fellow ซึ่งทั้ง Apple, Microsoft, Google และ Unity ก็มีตำแหน่งนี้เช่นกัน Fellow เป็นตำแหน่งที่เรียกได้ว่าต้องเป็น world leading expert ใน field ของตัวเองและสร้างนวัตกรรมใหม่ๆให้กับบริษัทมาเป็นเวลาหลายปี

ตัวอย่างเช่น Sanjay Ghemawat, Google's Senior Fellow หนึ่งในผลงานอันโด่งดังของเขา คือ Tensorflow ซึ่งเป็น library ที่คนทำ machine learning ทุกคนในยุคนี้ต้องใช้ จะเห็นได้ว่าโปรเจคที่ IC ระดับนี้พัฒนาขึ้นมาสามารถสร้าง impact หรือกระทั่งกลายเป็น standard ใหม่ของสายงานได้เลย

กลับมาที่ประเทศไทย ผมคิดว่าสายงานโปรแกรมเมอร์ยังค่อนข้างยึดติดกับภาพเก่าๆ ที่หลังจากเป็น senior แล้วต้องไปเป็น manager ไปบริหารคน ถ้าไม่อยากบริหารคนก็ต้องติดอยู่ที่ระดับ senior ต่อไป ผมอยากให้บริษัทในไทยเพิ่มโอกาสในการเติบโตให้ IC ที่เป็น expert ในสิ่งที่เขาทำ ได้ใช้ความรู้ความสามารถของเขาสร้าง impact ที่มากขึ้นให้กับองค์กร

ทุกคนมีความสามารถและความชอบแตกต่างกัน การมีตัวเลือกให้คนกลุ่มที่ถนัดในงานสาย individual contributor ที่รักในการเขียนโค้ด ชอบสร้าง software มากกว่าการบริหารคน อาจจะเป็นการแก้ไขปัญหาที่ถูกต้องสำหรับบริษัทที่สูญเสียพนักงานมากประสบการณ์ไปเพราะขาดพื้นที่ให้ specialist ได้แสดงฝีมือ