Generalist vs Specialist

Photo by Jason Richard on Unsplash

วันก่อนเพิ่งไปเจอมาว่า มีการพูดคุยกันระหว่างคนในบริษัทที่น่าสนใจอยู่เกี่ยวกับทักษะของตำแหน่ง Developer ว่าควรจะเก่งหลาย ๆ ด้านแต่ไม่จำเป็นต้องเก่งสุด (generalist) หรือเชี่ยวชาญเฉพาะด้านแบบสุด ๆ (specialist) สืบเนื่องจากว่ามีความต้องการหา Developer ที่มีทักษะเจาะจงมากขึ้น เช่น เชี่ยวชาญการใช้งานภาษาใดภาษาหนึ่ง หรือบางทีระบุชื่อ library หรือเครื่องมือเลยก็มี

พูดถึงเรื่องของทีม

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

พูดถึงเรื่องของ technology

การที่เราเป็น generalist หมายความว่าเรามีพื้นฐานหลาย ๆ ด้าน ทำให้เราสามารถเลือกวิธีแก้ปัญหาได้หลากหลายกว่า specialist ซึ่งมักจะเลือกวิธีแก้ปัญหาที่ตัวเองถนัดเพราะไม่ถนัดด้านอื่น ๆ แต่ว่าตอนเราเข้าไปแก้ปัญหาใน technology ที่เฉพาะเจาะจง ยังไงก็ต้องมี specialist ถ้าไม่งั้นเราปฏิเสธไปน่าจะดีกว่ารับไว้แต่ทำไม่ได้ ยกตัวอย่างเช่น การสร้าง network ของ data center ต้องใช้ทักษะเฉพาะทางมาก

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

พูดถึงเรื่องของ value

สิ่งที่ Developer ควรจะ focus นอกจาก hard skill คือ soft skill ต่าง ๆ ที่เกี่ยวกับการส่งมอบ software ด้วย เช่น communication, listening, emotional intelligence เป็นต้น

สำคัญที่สุด สิ่งที่ทีมควรจะ focus มากกว่า skill คือว่าเราได้ทำงานร่วมกันและช่วยกันส่งมอบคุณค่าต่อ business ผ่าน software ที่เราสร้างหรือเปล่า