Screenshot from level.fyi

เมื่อวานก่อนคุยกับเพื่อนเรื่อง Terminal job level ใน FAANG กับเรื่อง Staff Engineer ไม่ค่อยได้เขียนโค้ด เลยเอามาแชร์กันครับ

FAANG เป็นชื่อย่อของบริษัทไอทีในอเมริกา ได้แก่ Facebook, Amazon, Apple, Netflix, และ Google เป็นบริษัทที่ทุกคนรู้จัก และเหล่าคนที่ทำงานด้านเทคก็(มักจะ)อยากมีชื่อบริษัทเหล่านี้ติดใน Resume กัน

โดยแต่ละบริษัทก็จะมี Job level ในองค์กรที่ต่างกัน ถ้าเราเอามาเทียบกับความเข้าใจทั่วไป ก็จะแบ่งเป็นระดับ Junior, Mid-level, Senior, Staff, Principal, Distinguished, Fellow

ระดับที่เรารู้จักกันส่วนใหญ่คือสามระดับแรก หลังจากนั้นก็จะเป็นระดับ Staff ซึ่งจะเป็นระดับที่เนื้องานต่างจากสามระดับแรกมาก

ในสองระดับแรก (Junior กับ Mid-level) หน้าที่ของ Engineer หลักๆเลยคือเขียนโค้ดที่มีคุณภาพ เพื่อส่งมอบ Feature หรือโปรเจ็คต่างๆ

ตำแหน่ง Junior ก็มักจะได้ฟีเจอร์เล็กๆที่มี Requirement ชัดเจน ในขณะที่ Mid-level ก็จะได้สโคปงานที่ใหญ่กว่า และมี Requirement ที่ชัดเจนน้อยกว่า ต้องระบุรายละเอียด หรือทำ Design เองด้วยในระดับหนึ่ง

พอเข้าระดับ Senior ก็มักจะมีความรับผิดชอบในเรื่อง System Design มากขึ้น และมีการ Lead Project เข้ามาร่วมด้วย นอกจากงานหลัก ก็ยังมีงานรองคือ Coaching และ Mentoring คนในทีม ทั้งนี้ทั้งนั้น ระดับ Senior ก็ยังมีหน้าที่ในการเขียนโค้ดอยู่เยอะ เกิน 50% ของวันจะยังเป็นการเขียนโค้ด

แต่ระดับ Staff engineer จะมีความรับผิดชอบที่เปลี่ยนไป ส่วนใหญ่มักจะมีเวลาโค้ดกันแค่ 10-30%

หน้าที่ของ Staff engineer คือการ Set technical direction and strategy, scaling other engineers, หรือช่วย Senior ในการทำ System Design และประสานงานในระบบใหญ่ๆ ที่มีทีมหลายๆทีมเกี่ยวข้อง

ทักษะที่ต้องใช้ก็จะต่างจากระดับก่อนๆมาก สกิลการโค้ดดิ้งจะได้ใช้ลดลง ต้องใช้ความรู้และประสบการณ์ในด้าน System Design จากโปรเจ็คที่เคยทำมาในการแนะนำคนอื่น และที่สำคัญ ระดับนี้จะต้องมี Communication skill ที่ดี เพราะจะต้องคุยและ influence คนตั้งแต่ระดับ engineer ไปจนถึง Director/VP

อย่าสับสน Staff engineer กับ Engineer Manager นะครับ เพราะเนื้อหางานต่างกันมาก Staff engineer จะไม่มีคนมา report โดยตรง เลยไม่ต้องรับผิดชอบเรื่องการจัดการพนักงานเหมือน Manager ไม่งั้นจะมีเวลาไม่พอไปทำอย่างอื่น

Staff engineer บางคนจะเป็นเหมือนมือขวาของระดับ Department manager/Director ครับ ช่วยดูแลด้าน Technical ของทั้งแผนกที่มีหลายทีม บางคนก็อาจจะทำหน้าที่เหมือน Tech lead ของโปรแกรมใหญ่ๆ บางคนก็จะทำหน้าที่คล้ายกับ Architect คอยดูแลภาพรวมการออกแบบระบบหลายๆทีม

สิ่งที่เหมือนกันคือระดับนี้จะมีอิทธิพลต่อการตัดสินใจระดับหลายทีม ไม่ใช่แค่ทีมเดียว ดังนั้น อัตราส่วนของ Staff engineer ต่อ Engineer ทั่วไปจะอยู่ที่ประมาณ 1:50 - 1:150 ขึ้นอยู่กับองค์กร

เนื่องด้วย Staff engineer มีอยู่น้อยมาก ไม่ใช่ทุกคนที่จะไปถึงระดับนั้น พวกบริษัท FAANG จึงมักจะมีสิ่งที่เรียกว่า Terminal level ซึ่งคือ “ระดับที่คุณสามารถทำงานไปตลอดชีวิตได้ โดยบริษัทไม่ไล่คุณออก”

ตามข้อมูลใน Blind (เป็นเว็บนินทาบริษัทสำหรับคนสายเทค) จะเป็นระดับเหล่านี้ครับ

จะเห็นได้ว่าเป็นตำแหน่งแถวๆ mid-level ถึง senior ครับ ไม่มีบริษัทไหนที่บังคับให้พนักงาน"ต้อง"ไปถึงระดับ Staff เลย ซึ่งก็ค่อนข้างจะเมคเซนส์ เพราะความคาดหวังของระดับนี้จะต่างจาก Staff ที่เน้นไปทาง Communication/influencing ค่อนข้างมาก


---

ติดตามบทความสำหรับโปรแกรมเมอร์ทั้งด้านได้ที่ Facebook page Not about code หรือ Twitter @notaboutcode บทความของเพจจะเน้นเนื้อหาที่นำไปใช้ได้กับชีวิตจริง แต่ไม่ยึดติดกับเทคโนโลยีหรือภาษา เช่น System Design, Continuous Delivery, Testing, Career, etc.

สำหรับท่านที่อยากสนับสนุนผู้เขียน รบกวนช่วยแชร์โพสต์ในเฟสบุ้คให้กับเพื่อนๆที่น่าจะสนใจหัวข้อพวกนี้ด้วยครับ