- เมื่อการทำงานให้ถูกต้องปะทะกับความเร็วอันรวดเร็วของบริษัท คุณจะเลือกอะไร?
- เรื่องราวของวิศวกร Chris Krycho ผู้เลือกอย่างหลัง ระหว่างการยืนหยัดในความเชื่อและประนีประนอม กับการออกไปหางานที่สอดคล้องกับหลักการของตน
- ในท้ายที่สุด Chris ออกจาก LinkedIn เพื่อเดินตามงานที่สอดคล้องกับหลักการของตัวเอง
- สรุปเนื้อหาที่เขาเล่าไว้ในพอดแคสต์
- เรื่องราวของเขาเน้นให้เห็นความตึงเครียดระหว่าง "ความจำเป็นของนวัตกรรม" กับ "ความสำคัญของสุขภาวะของโครงการ"
วันแรกของ Chris Krycho ที่ LinkedIn
- Chris เข้าร่วม LinkedIn ในช่วงปลายเดือนมกราคม 2019 และผ่านกระบวนการ onboarding หลายอย่างแบบที่มักพบในบริษัทใหญ่หรือบริษัทขนาดเล็กที่มีระบบการทำงานที่ดี
- เดิมที Chris วางแผนจะทำงานระยะไกลจาก Colorado แต่สองสัปดาห์แรกใช้ไปกับการ onboarding และใช้เวลาร่วมกับทีม
โค้ดนับล้านบรรทัด
- เมื่อเทียบกับประสบการณ์จากบริษัทก่อนหน้า เขาตกใจกับขนาดของแอปฝั่งไคลเอนต์ frontend และบริการ backend ของ LinkedIn อย่างมาก
- frontend ของ LinkedIn มีโค้ดมากถึง 2 ล้านบรรทัด ซึ่งมากกว่าโค้ดทั้งหมดของบริษัทก่อนหน้าของเขาเสียอีก
ทีมอินฟราสตรักเจอร์
- บทบาทของ Chris อยู่ในทีมอินฟราสตรักเจอร์ โดยไม่ได้เน้นการตั้งค่าเซิร์ฟเวอร์ แต่เน้นการสนับสนุนงานวิศวกรรมหรือการปรับปรุงประสบการณ์นักพัฒนา
- เป้าหมายคือช่วยให้การทำงานกับแอปเดสก์ท็อปขนาดใหญ่ของ LinkedIn ทำได้ง่ายขึ้น
การทำให้ JavaScript ทันสมัย
- เขามีส่วนร่วมในงานปรับโค้ดให้ทันสมัยผ่านการนำ JavaScript class มาใช้ และได้เรียนรู้อย่างมากระหว่างแก้ปัญหาที่เกิดจากการใช้เฟรมเวิร์ก Ember
- เขาตระหนักว่างาน migration บน codebase ขนาดใหญ่ควรถูกทำให้เป็นอัตโนมัติให้มากที่สุด เพราะเป็นงานที่ใหญ่เกินกว่าจะทำด้วยมือ
การนำ TypeScript มาใช้
- มีการตัดสินใจย้ายไปใช้ TypeScript เพื่อลดข้อผิดพลาดที่เกิดขึ้นในฝั่ง frontend
- TypeScript สามารถนำมาใช้แบบค่อยเป็นค่อยไปได้ และให้ความสามารถในการขยายระบบตามที่ LinkedIn ต้องการ
แผน migration แบบช้า เทียบกับ 'Finger Gun's Plan'
- Chris และทีมของเขาเสนอแผน 3~5 ปีในการ migration โค้ด Ember ไปเป็น React แต่มีอีกทีมเสนอ 'Finger Gun's Plan' ซึ่งสัญญาว่าจะทบทวนใหม่ทั้งหมดและเดินหน้าได้อย่างรวดเร็ว
- ความแตกต่างของแนวทางนี้สะท้อนความขัดแย้งระหว่างปัญหาที่ Chris และทีมพบ กับวัฒนธรรมองค์กรที่ให้ความสำคัญกับความเร็วของบริษัท
ประสบการณ์และสิ่งที่ Chris ได้เรียนรู้
- ตระหนักถึงปัญหาการแจ้งเตือนที่ไม่เพียงพอ
- เซิร์ฟเวอร์ทั้งดาต้าเซ็นเตอร์ล่มจากปฏิกิริยาลูกโซ่ที่เกิดจากการใช้หน่วยความจำเพิ่มขึ้นและการรีสตาร์ตเซิร์ฟเวอร์
- พยายามแก้ปัญหาด้วยการรีเซ็ตระบบและปรับสิทธิ์การเข้าถึง
- ความล้มเหลวเป็นสิ่งหลีกเลี่ยงไม่ได้ และวิศวกรรมซอฟต์แวร์คือการออกแบบระบบที่สนับสนุนกระบวนการที่วิศวกรใช้สร้างผลลัพธ์ของผลิตภัณฑ์
- เน้นย้ำถึงความจำเป็นของระบบที่มีความยืดหยุ่นทนทานหลายชั้น
กระแสต่อต้านต่อเหตุการณ์
- ระหว่างการแก้ปัญหาเกิดความไม่พอใจจากการที่ฝ่ายบริหารขาดความไว้วางใจ
- มีความเห็นไม่ตรงกันและปัญหาด้านการสื่อสารกับวิศวกรระดับอาวุโส
- ย้ำว่าระบบไม่ควรทำงานได้เฉพาะตอนที่ทุกอย่างอยู่ในสภาพดีที่สุดเท่านั้น แต่ต้องรองรับได้ในทุกสถานการณ์
แรงกดดันที่เพิ่มขึ้น
- แม้จะพยายามจัดการ technical debt และเพิ่มความยืดหยุ่นทนทานของระบบ แต่ความไม่พอใจจากผู้บริหารกลับเพิ่มขึ้น
- เกิดความขัดแย้งกับผู้บริหารที่ต้องการคำตอบง่าย ๆ สำหรับปัญหาซับซ้อน
การปรับโครงสร้างองค์กร
- มีการปรับโครงสร้างองค์กรและเปลี่ยนบทบาทเนื่องจาก 'Finger Guns team'
- เขามองเห็นประสบการณ์ใหม่และโอกาสในการเรียนรู้จากบทบาทอื่น
การทบทวนและการตระหนักรู้
- ทบทวนตนเองผ่านประสบการณ์ที่ผ่านมาและสถานการณ์ปัจจุบัน
- ตระหนักถึงความสำคัญของการสร้างความสัมพันธ์และการสื่อสาร
- เข้าใจว่าปัญหาทางเทคนิคและปัญหาทางสังคมเชื่อมโยงกัน
บทสรุปและบทเรียน
- Chris ยังคงมีมุมมองเชิงวิพากษ์ต่อวัฒนธรรมที่ยกให้ความเร็วเป็นคุณค่าสูงสุด
- เขามองหาโอกาสใหม่ผ่านการทบทวนทั้งเรื่องอาชีพและคุณค่าของตนเอง
- การเดินทางของ Chris ในการมองหาบทบาทที่มุ่งสู่ความเป็นเลิศทางวิศวกรรมยังคงดำเนินต่อไป
ความเห็นของ GN⁺
- ประสบการณ์ของ Chris Krycho แสดงให้เห็นความขัดแย้งระหว่างหลักการทางเทคนิคกับความต้องการทางธุรกิจได้อย่างชัดเจน
- การตัดสินใจของเขาเน้นย้ำความสำคัญของการหาสมดุลระหว่างคุณค่าส่วนบุคคลกับทางเลือกในอาชีพ
- การจัดการการเปลี่ยนแปลงในสภาพแวดล้อมทางเทคโนโลยีขนาดใหญ่อย่าง LinkedIn มีความซับซ้อน และเป็นบทเรียนสำคัญสำหรับบริษัทอื่นเช่นกัน
- การนำเทคโนโลยีอย่าง TypeScript มาใช้สามารถช่วยยกระดับคุณภาพโค้ดและลดข้อผิดพลาดได้ แต่ใน codebase ขนาดใหญ่จำเป็นต้องใช้แนวทางแบบค่อยเป็นค่อยไป
- เมื่อต้องผลักดันการเปลี่ยนแปลงทางเทคนิคเหล่านี้ ควรคำนึงถึงความสมดุลระหว่างประสบการณ์นักพัฒนาและความเร็วในการส่งมอบผลิตภัณฑ์
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News