เขียนโปรแกรมยังไงถึงจะได้เลื่อนขั้น? เจาะลึกการเติบโตในองค์กรที่ Silicon Valley

Krist Wongsuphasawat
4 min readFeb 12, 2020

คุณอาจเคยอ่านเรื่องการสัมภาษณ์งานที่บริษัทเทคโนโลยียักษ์ใหญ่ทั้งหลาย เช่น Google, Facebook, ฯลฯ ไม่ว่าจะเป็น software engineer, data scientist, หรือตำแหน่งอื่นๆ การสัมภาษณ์เป็นบททดสอบแรกที่สำคัญมาก แต่นั่นก็เป็นเพียงแค่จุดเริ่มต้นของการเดินทางเท่านั้น

เคยสงสัยไหมว่าเข้าไปได้แล้วยังไงต่อล่ะ? จ้างมาแล้วบริษัทคาดหวังอะไรจากเรา? ส่วนตัวพนักงานเอง ถึงแม้จะได้ทำงานที่เคยฝันไว้ แต่ถ้าทำไปสักพักแล้วไม่รู้สึกถึงความก้าวหน้าอะไรเลย พนักงานก็หมดไฟได้เหมือนกัน

เมื่อบริษัทจ้างคนเข้ามาจำนวนมาก ก็จำเป็นต้องมีระบบการประเมินผลเพื่อรักษามาตรฐาน และกำหนดแนวทางเกี่ยวกับการเติบโตที่ชัดเจนเพื่อผลักดันให้พนักงานพัฒนาตัวเองขึ้นไปเรื่อยๆ และเห็นภาพในระยะยาวว่าตัวเองจะมีความก้าวหน้าในหน้าที่การงานได้อย่างไรหากอยู่กับองค์กรต่อไป ความก้าวหน้าที่พนักงานรู้สึกจับต้องได้มากที่สุดอย่างหนึ่งก็คือได้เลื่อนขั้นนั่นเอง บริษัททั้งหลายจึงออกแบบ “ขั้นบันได” หรือที่เรียกกันว่า Career Ladder เพื่อกำหนดเป้าหมายให้ชัดเจนว่ามีขั้นอะไรบ้าง พร้อมระบุความคาดหวังของแต่ละขั้นให้ชัดเจน พนักงานจะได้วางแผนได้ว่าต้องทำอะไรบ้างเพื่อจะไปยังขั้นต่อไป

ในบทความนี้เราจะมาดูกันว่าบริษัทใน Silicon Valley นั้นเขาออกแบบ Career Ladder กันอย่างไร

ทำความเข้าใจกับตำแหน่ง อะไรคือ Level และ Title?

เวลาพูดถึงตำแหน่งงานในบริษัทเช่น Google, Facebook, ฯลฯ จะสื่อได้ถึงสองอย่างคือ Level หรือ Title

1. Level (ขั้น)

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

Level จะมีตัวเลขกำกับ บางบริษัทใช้ Level เดียวกันสำหรับทุกสายงาน เช่น ของ Microsoft (59–80) หรือ Google (L3-L11)

บางบริษัท เช่น Airbnb หรือ Facebook มี Level แยกกันสำหรับแต่ละสายงาน

  • Individual Contributors (ICs): Software Engineer / Data Scientist — L3, L4, L5, L6, L7, … (ของ Facebook เรียก E3, E4, …)
  • Managers: Engineering Manager / Data Science Manager — M0, M1, M2, …

โดย L5 เทียบเท่า M0, L6 เทียบเท่า M1 และ L7 เทียบเท่า M2

2. Title (ชื่อตำแหน่ง)

Title อาจสื่อหรือไม่สื่อถึง Level ก็ได้ บางบริษัท L3-L7 ก็เรียก Software Engineer เหมือนกันหมด เพื่อจงใจที่จะไม่เปิดเผย Level ให้เพื่อนร่วมงานรู้ บางที่ก็มีคำเรียกสำหรับแต่ละ Level เช่น Google เรียก Title ของ L5 ว่า Senior Software Engineer และ L6 ว่า Staff Software Engineer แบบนี้เห็นชื่อตำแหน่งก็รู้ละว่าเบอร์ไหน

แล้ว Tech Lead ล่ะคืออะไร?

อีกคำที่คนใช้กันเยอะคือ Tech Lead ที่เอามาต่อท้าย Title เช่น Senior Software Engineer, Tech Lead

คำว่า Tech Lead นี้มีความแตกต่างในการใช้กันมากมาย โดยส่วนใหญ่แล้วไม่ได้ผูกกับ Level การที่ใครสักคนเป็น Tech Lead มักไม่ใช่การเลื่อนขั้น แต่เป็นการให้เกียรติว่าเป็นผู้นำในการขับเคลื่อนงานให้เดินหน้าไปได้

  • วิศวกรอาวุโสของทีมมักจะเป็น Tech Lead ของทีมที่คอยสอนน้องๆในทีม และแนะนำการตัดสินใจทางเทคนิคที่สำคัญ เช่น ทีมควรจะย้าย stack จาก angular ไป react ไหม ดำเนินการอย่างไร, ออกแบบ architecture อย่างไรดี
  • ที่ใช้กันเกร่อๆมักจะหมายถึงการเป็น Tech Lead ของ project ใด project หนึ่ง ในกรณีนี้ถ้าทุกคนในทีมทำคนละ project ก็อาจจะเรียกตัวเองเป็น Tech Lead กันหมดเลยก็ได้ในบริบทของแต่ละ project บางบริษัทเลยใช้คำว่า Feature Lead เพื่อลดความกำกวม

แล้วแต่ละบริษัทเหมือนกันเหรอ?

ส่วนใหญ่ก็มีความใกล้เคียงกัน สามารถดูเทียบจาก levels.fyi ได้ว่า level ในบริษัท A เทียบเท่า level ในบริษัท B อย่างไร บางทีแม้จะแบ่งระดับมีตัวเลขเท่ากันแต่ก็มีความเหลื่อมล้ำกันระหว่างบริษัท บริษัทเล็กก็อาจจะเฟ้อมากกว่า ถ้าย้ายไปบริษัทที่ใหญ่กว่าก็อาจจะได้ Level ที่ลดลงได้

ความคาดหวังของแต่ละ Level

เด็กจบใหม่เข้ามาก็จะเริ่มต้นที่ L3 หรือถ้ามีปริญญาโทหรือเอกก็อาจเป็น L4 ได้ ถ้าเคยมีประสบการณ์ทำงานมาก่อนก็จะเข้า L4 ขึ้นไป

L3

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

“ฉันเพิ่มปุ่มที่ขอมาไปบนหน้าเว็บให้แล้วนะ ตอนแรกลืมใส่ logging แต่ว่าตามแก้เรียบร้อยแล้ว ตอนนี้ขึ้น production แล้ว! เข้าไปดูได้เลย”

L4

เป็นผู้รับผิดชอบ project ขนาดเล็ก ปัญหาที่ได้จะเริ่มมีความไม่ชัดเจนมากขึ้น เข้าใจภาพรวมของงานที่ได้รับ สามารถตัดสินใจเรื่องเล็กๆน้อยๆได้โดยไม่ต้องขอความช่วยเหลือ เข้าใจขั้นตอนการ deploy และวางแผนรองรับปัญหาเมื่อขึ้น production ไปแล้ว งานต้องเนี้ยบกว่า L3 เขียน documentation เพื่อให้คนอื่นเข้าใจได้

“ฉันเห็นว่าวิธีที่ feature ของเราคุยกับ server มันช้าและทำให้ดีขึ้นได้อีก เลยลองออกแบบใหม่แล้วเอาไปปรึกษากับทีม อันนี้เป็น design doc ที่ได้รับการเห็นชอบเรียบร้อย มีส่วนต้องแก้สองส่วน คือฝั่ง app และฝั่ง server วิธีนี้ทำให้เร็วขึ้นและยัง backward compatible ด้วย จะได้ทำให้คนที่ยังไม่ทันอัพเดท app ใช้ได้เหมือนเดิม ทุกอย่างเป็นไปด้วยดีแล้วเราจะ deploy คืนนี้ เดี๋ยวฉันจะคอยเฝ้าอยู่ที่ office เผื่อมีอะไรฉุกเฉิน”

บริษัทมักจะมีข้อกำหนดว่าพนักงานระดับต้นๆจะต้องแสดงให้เห็นถึงพัฒนาการ หากทำงานต่ำกว่ามาตรฐานหรือ ทำได้ตามมาตรฐานแต่ไม่มีแววจะพัฒนาไปเป็นขั้นถัดไปหลายๆ review cycle (รอบละ 6–12 เดือน แล้วแต่บริษัท) ก็อาจจะต้องเชิญเข้าโปรแกรมเพิ่มประสิทธิภาพ (Performance Improvement Program) หรือที่เรียกสั้นๆว่า PIP และถ้ายังไม่ดีขึ้นก็อาจจะต้องเชิญหาที่ทำงานใหม่

พัฒนาการนี้จะต้องแสดงต่อเนื่องจนถึง Level ที่อาวุโสระดับหนึ่ง (หลายบริษัทตั้งไว้ที่ ~L5 หรือ Senior) ถึงจะชะลอลงได้ ก็จะเรียก Level นี้ว่าเป็น Terminal Level คือถ้าอยู่ขั้นนี้แล้วทำงานได้ตามมาตรฐานเรื่อยๆก็ถือว่ายอมรับได้ ไม่ต้องกังวลอะไร ถ้ามีไฟอยากลุยต่อก็สามารถยกระดับผลงานของตัวเองเพื่อเลื่อนขั้นต่อไปได้ หรือจะย้ายไปสายบริหารก็ได้ หรืออยู่ขั้นเดิมก็ได้เช่นกัน

L5

เป็นระดับที่เริ่มพึ่งพาได้ หรือ Senior นั่นเอง ให้งานไปแล้ววางใจว่าเอาอยู่ เป็นผู้รับผิดชอบ Project ใหญ่ที่อาจประกอบไปด้วย Project ย่อยหลายอัน ซึ่งอาจมีสมาชิกหลายคนร่วมมือกัน นอกจากลงมือทำด้วยตัวเองแล้วยังต้องสามารถเป็นผู้นำ ออกแบบ architecture แบ่งส่วนให้คนอื่นทำ สามารถ mentor สมาชิกในทีมได้ คอย review code และควบคุมคุณภาพ มองเห็นปัญหาหรือโอกาสใหม่ๆและเสนอทางแก้

“เราสามารถรวมข้อมูลตรงนี้มาวิเคราะห์แล้วเพิ่มหน้าใหม่สำหรับ page admin เพื่อดูข้อมูลสมาชิกเหล่านี้ สำหรับ page ที่มีสมาชิกเกิน 50 คน เราสามารถเปิดเผยข้อมูลสมาชิกที่รวมแล้วได้โดยไม่ผิดกฎหมายละเมิดข้อมูลส่วนบุคคล ฉันไปศึกษารูปแบบการใช้งานของ page admin ทุกวันนี้แล้วคิดว่าพวกเขาจะต้องชอบหน้าใหม่นี้แน่ๆ ฉันลองทดสอบระบบดูแล้วว่าถ้าต้องคำนวณข้อมูลพวกนี้เพิ่มจะไหวไหม คิดว่าทำได้ถ้าได้โควต้าบน cluster เพิ่ม พร้อมขออนุญาตให้ทีมเราเข้าถึงข้อมูลสมาชิกได้”

M0

เทียบเท่ากับ L5 เป็นระดับเริ่มต้นของการเป็น Manager หน้าที่หลักคือสนับสนุนให้ทีมทำงานได้โดยแบ่งคนให้เพียงพอต่องาน กำจัดอุปสรรคที่ไม่ใช่ปัญหาทางเทคนิค ประชุม 1:1 และประเมินผลงานของสมาชิกในทีม

“ไอเดียเยี่ยมเลย เดี๋ยวฉันเอาเรื่องนี้ไปคุยกับทีม privacy ให้ กับขอ cluster เพิ่มจากทีม infra จะได้เริ่มลงมือกัน อยากได้คนเพิ่มไหม เดี๋ยวเอาเด็กฝึกงานมาช่วยทำ front-end ได้นะ”

L6

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

“ฉันมานั่งสำรวจดูแล้วนะ ทีมเรามี pipeline สำหรับคำนวณข้อมูล user ชุดนี้ ทีม A, B และ C ก็มี pipeline ที่ทำเกือบจะเหมือนกัน นี่มันซ้ำซ้อนมากๆ ฉันลองไปคุยกับ Senior ในทีมพวกนั้นมาแล้วทุกคนก็เห็นด้วยว่าถ้าเรารวม 4 pipeline นี้เป็นอันเดียวแล้วใช้ร่วมกันน่าจะประหยัดงบไปได้เยอะเลย ทีนี้เราเลยเริ่มร่าง design doc หาส่วนเหมือนและส่วนต่าง ว่าจะรวมยังไงดี ต้องเขียนอะไรเพิ่มตรงไหน คิดว่าน่าจะใช้เวลาประมาณ 1 quarter เดี๋ยวอีกสมาชิกสามคนในทีมเราจะมาช่วยทำตรงนี้ คิดว่าเราน่าจะรวม pipeline ได้เสร็จภายใน quarter นี้”

M1

ดูแลทีมเหมือน Startup เล็กๆในบริษัท

“ที่พูดมานี่มันเป็น project ใหญ่ที่น่าจะส่งผลดีกับบริษัทมากๆเลย แล้วอาจจะต่อยอดไปได้มากกว่านี้อีก ด้วยงานและคนที่ทีมเรามีอยู่ตอนนี้ฉันว่าในระยะยาวเราอาจจะต้องการสมาชิกเพิ่ม ฉันพอได้ยินมาว่า Senior บางคนในทีมอื่นๆกำลังมองหาอะไรใหม่ๆทำอยู่ เดี๋ยวลองไป pitch ดูเผื่อมีใครสนใจมาร่วม และระหว่างนี้ก็จะพยายามจ้างจากข้างนอกไปด้วย คิดว่ายังไงซะภายในครึ่งปีเราคงต้องการสมาชิกเพิ่มอีกอย่างน้อยสองสามคน อ้อ แล้ว pipeline ใหม่นี่ใช้ cluster ตัวใหม่ที่ทีม infra กำลังทดลองอยู่ได้ไหม เผื่อเราจะเป็น project แรกๆที่ได้ใช้ cluster นี้และกลายเป็นผู้เชี่ยวชาญที่คอยแนะนำให้คนอื่น migrate ตาม”

L7

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

“รายได้จากโฆษณาบนมือถือเติบโตขึ้นเรื่อยๆ ฉันสงสัยว่าเราจะใช้ประโยชน์จากโทรศัพท์ที่หน้าจอใหญ่เป็นพิเศษให้ทำรายได้เพิ่มได้ไหม เดี๋ยวพรุ่งนี้ฉันจะไปคุยกับทีมมือถือเผื่อจะลองทำ A/B testing ง่ายๆเพื่อทดสอบความคิดนี้ดู”

M2

เป็นระดับ Manager of Managers (มีลูกน้องที่เป็น Manager) เริ่มมีหลาย focus areas

“จากแนวทางที่ธุรกิจเรากำลังดำเนินไปทำ feature ใหม่ๆสำหรับมือถือโดยเฉพาะมากขึ้น การจัดทีมในปัจจุบันทำให้ทำงานลำบาก เพราะว่าคนที่เขียน app มือถือเป็นมีน้อย และกระจายอยู่ตามทีมต่างๆ ถ้าเรามีทีมที่ทำ app มือถือเป็นหลักจะได้ขับเคลื่อนแนวทางใหม่ๆบนมือถือได้รวดเร็วขึ้น เราอาจจะต้องวางแผน reorg เพื่อจัดทีมใหม่ภายในครึ่งปี”

L8/D1

ระดับ Director แล้ว ต้องวางแผนให้ธุรกิจเติบโตต่อไปได้บนสถานการณ์โลกที่เปลี่ยนแปลงไป ให้วิสัยทัศน์และแนวทางกับองค์กร

L8: “ต่อไปนี้เราจะเลิกพัฒนาบน monorail แล้วแตกทุกอย่างออกเป็น microservice มันเป็นเป้าหมายที่ทะเยอทะยานอยู่ และอาจจะต้องกินเวลา 1–2 ปี กว่าจะสำเร็จ แต่ว่าผลลัพธ์ที่ได้มันจะคุ้มค่าและวางรากฐานที่มั่นคงให้บริษัทเราเติบโตและรับความท้าทายใหม่ๆได้ใน 4–5 ปีหลังจากนี้ ”

D1: “ด้วยสภาพการจราจรแบบนี้ ผู้ใช้ของเรา ใช้เวลาอยู่บนท้องถนนซะส่วนใหญ่ ฉันเชื่อว่าเราควรลงทุนกับรถยนต์ และจะตั้งเป้าออก Feature ร่วมกับผู้ผลิตรถรายใหญ่สำหรับใช้เวลาขับรถภายใน 1 ปี”

D1: “ด้วยจำนวนผู้ใช้ที่เติบโตอย่างรวดเร็ว เราควรจะต้องเปิดสำนักงานใหม่ในประเทศไทย ฉันคิดว่านาย ก. น่าจะเหมาะที่สุดในการเป็นผู้นำไปสร้างทีมใหม่ที่นั่น คุณคิดว่ายังไง”

ในบางบริษัท Individual Contributors (Software Engineers, Data Scientists) ก็คือทำงานเทคนิคอย่างเดียว ไม่มี report (ลูกน้อง) ส่วน Manager ก็เน้นบริหารคน มี report เป็นพวงไป บางบริษัทเช่น Google จะมีแบบผสม คือเป็น IC แต่มี report ก็ได้ แต่เวลาวัดผลดูที่งานทางเทคนิคเป็นหลัก

บทส่งท้าย

ที่เล่ามานี้ก็เป็นแนวทางบริหารทรัพยากรบุคคลของบริษัทขนาดกลางและใหญ่แถวนี้ ถ้าจะนำไปใช้ในองค์กรของตัวเอง ผู้บริหารก็ต้องเลือกปรับบันไดให้เหมาะกับขนาดองค์กรและบุคลากรที่มีอยู่ของแต่ละบริษัท ส่วนบรรดา Software Engineer หรือผู้มีความฝันอยากเขียนโปรแกรมเป็นอาชีพ อ่านแล้วก็หวังว่าจะได้ประโยชน์ไปไม่มากก็น้อยนะครับ ขั้นบันไดก็เป็นแนวทางหนึ่ง อีกหลักการที่ฟังดูง่ายๆแต่ลึกซึ้งและใช้ได้กับทุกงานก็คือ สะสมฝีมือและสร้างคุณค่า ทำให้ตัวคุณเก่งจนไม่มีใครกล้ามองข้าม (Be so good they can’t ignore you) นั่นเอง

เอกสารอ้างอิง

--

--

Krist Wongsuphasawat

Data Experience @airbnb / Prev: Turn data into pixels @twitter • Invent new vis @UofMaryland HCIL PhD • From @Thailand • http://kristw.yellowpigz.com