Page 1 of 1

เรียนรู้วิธีการจ้างโปรแกรมเมอร์

Posted: 11 Mar 2016, 16:34
by brid.ladawan
เรียนรู้วิธีการจ้างโปรแกรมเมอร์ จากบริษัทไอทีที่ประสบความสำเร็จ


Image


งานด้านการพัฒนาซอฟท์แวร์ สิ่งที่สำคัญที่สุดคือ “คน” ครับ

ถ้าจ้างคนได้ถูก ให้อิสระและอำนาจในการตัดสินใจที่ถูกต้องกับเขา เรื่องกระบวนการ เรื่องเครื่องมือต่างๆ ทุกอย่างจะตามมาเอง

เวลาบริษัทไอทีใหญ่ๆที่เทคโอเวอร์บริษัทเล็กๆ เรื่องแรกที่ต้องคิดก่อนเลย คือทำยังไงให้คนในบริษัทไม่ลาออก เพราะต่อให้ได้ซอฟท์แวร์และ Infrastructure ทุกอย่างไป ถ้าคนพัฒนาหายหมด โปรดักต์ก็ไปไหนไม่ได้

แต่บริษัทไอทีหลายๆบริษัท กลับปฏิบัติกับคนเหมือนเป็นฟันเฟือง ไปเสียเงินและเวลาไปกับเรื่องกระบวนการและเครื่องมือต่างๆ มากกว่าที่ควรจะเป็น

ในขณะที่การจัดการทรัพยากรบุคคล ซึ่งควรจะเป็นเรื่องที่สำคัญที่สุด กลับถูกมองข้ามไป

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




1. จ้างแต่ A player
ความสำคัญของทีมโปรแกรมเมอร์ อยู่ที่คุณภาพมากกว่าปริมาณครับ

หนึ่งในความเข้าใจผิดของคนที่ไม่เคยเขียนโปรแกรม คือการคิดว่าการเพิ่มจำนวนคนจะทำให้งานเสร็จเร็วขึ้นเป็นเชิงเส้น (หรือใกล้เคียงเชิงเส้น)

เอาเข้าจริง หากจ้างโปรแกรมเมอร์ที่ทำงานไม่ดีมา โปรแกรมเมอร์ระดับซีเนียร์ในทีมจะต้องเสียเวลาแก้ bug, รีวิวโค้ด, สอนงาน, รีแฟคเตอร์โค้ดมากขึ้น ดีไม่ดีทำให้ Productivity รวมตกลงด้วยซ้ำ

พอมีบั้กเยอะๆ คนเก่งๆที่มีทางเลือกก็จะย้ายไปหาโปรดักต์ใหม่ๆที่มีความน่าสนใจ มากกว่าที่จะมานั่งแก้บั้กที่คนอื่นทิ้งไว้

อีกเรื่องหนึ่งคือ การจ้างโปรแกรมเมอร์ที่ไม่เก่งคือการ”เสียพื้นที่” ในทีม ซึ่ง”พื้นที่”เป็นทรัพยากรที่มีจำกัดมาก ทีมที่มีประสิทธิภาพนั้นขนาดไม่ควรเกินสิบคน หากจำนวนคนเพิ่มเกินกว่านั้น ประสิทธิภาพของทีมจะตกลงเยอะมาก สักพักนึงก็ต้องเริ่มทำการแตกทีม แล้วก็มี overhead ในการสื่อสารตามมาอีก

แต่การจะจ้างเฉพาะคนที่เก่งๆ ก็ไม่ใช่เรื่องง่าย เพราะจะต้องใช้เวลามาก กว่าจะหาคนที่เก่งๆเจอ เช่น ถ้าหากคุณอยากจะจ้าง Top10% ของตลาด ต้องสกรีคน 20-30 คนถึงจะเจอสักคนนึง

ดังนั้น ขั้นตอนการสกรีนคนจะต้องมีประสิทธิภาพมากๆด้วย ตัวอย่างที่ผมเห็นคือ

มีระบบสกรีนคนแบบอื่นๆ นอกจากเรซูเม่และการสัมภาษณ์งาน เช่น ใช้ Online Coding Test (เช่น Codility, Hackerrank), ขอโค้ดจากผู้สมัครมาทำการรีวิว วิธีพวกนี้จะช่วยตัดคนออกไปได้ตั้งแต่เนิ่นๆ ลดปริมาณเวลาที่ต้องใช้ในการสัมภาษณ์งาน (ในบรรดาวิธีการสกรีนคนทั้งหมด การสัมภาษณ์งาน(ดีๆ) ใช้เวลานานมาก และเปลืองเวลาโปรแกรมเมอร์ในทีมที่สุด)
ต้องมีคนที่เขียนโปรแกรมเป็น และมีประสบการณ์พอเป็นคนสัมภาษณ์
ให้มีการสัมภาษณ์มากกว่าหนึ่งรอบ แต่ละรอบมีคนสัมภาษณ์ 1-2 คน และนำผลของการสัมภาษณ์มาประมวลร่วมกัน
สร้าง Guideline ในการสัมภาษณ์ที่ชัดเจน มีตัวอย่างคำถามด้าน Coding/Technical และคำตอบที่เป็นไปได้ มีเกณฑ์ชัดเจนว่าคำตอบแบบไหนผ่าน คำตอบแบบไหนไม่ผ่าน เพื่อให้การคัดเลือกได้มาตรฐาน
สร้างกฏให้ชัดเจนสำหรับคนสัมภาษณ์ทุกคน เช่น “เราจ้างแค่ top 10% ของตลาด ถ้าไม่มั่นใจว่าใช่ ให้ตกไปเลย”
อย่าให้คนในทีมเดียวกันสัมภาษณ์ทั้งหมด เพราะในทีมอาจจะต้องการคนด่วน ทำให้ยอมลดคุณภาพ เพื่อให้ได้คนเร็วที่สุด วิธีแก้ไขของ Amazon คือ ให้มี Bar raiser จากทีมอื่นมาสัมภาษณ์ด้วย โดย Bar raiser จะมีสิทธิ์ขาดในการ”ให้ตก” หากผู้สมัครไม่ผ่านเกณฑ์


2. สร้างประสบการณ์ดีๆให้แก่ผู้สมัคร
การสัมภาษณ์เป็นเรื่องของทั้งสองฝ่าย ในขณะที่เรากำลังประเมินผู้สมัคร ผู้สมัครก็กำลังประเมินเราด้วย

ตัวอย่างเช่น

HR ต้องทำงานให้เป็นมืออาชีพ อธิบายข้อมูลต่างๆชัดเจน มีการติดต่อผู้สมัครอย่างสม่ำเสมอ ไม่ว่าผู้สมัครจะผ่านหรือไม่ก็ตาม
คนสัมภาษณ์ต้องทำพฤติกรรมที่เหมาะสม เช่น ไม่ใช้โน้ตบุ้คหรือทำงานอื่นขณะสัมภาษณ์ อธิบายขั้นตอนการสัมภาษณ์ให้ชัดเจน ไม่เล่นมุขภายในระหว่างคนสัมภาษณ์เยอะเกินไป ไม่ทำตัวพองข่มผู้สมัคร ทำตัวไม่น่าทำงานด้วย
อย่าสัมภาษณ์ง่ายไป อะไรที่ได้มาง่ายๆคนมักไม่ค่อนเห็นคุณค่า โปรแกรมเมอร์เก่งๆส่วนใหญ่ชอบความท้าทายครับ
อย่าถามอะไรที่ไม่ได้เกี่ยวข้องกับการเป็นโปรแกรมเมอร์เลย (เช่น คุณมองว่าอีกห้าปี คุณจะทำอะไรอยู่ หรือ หากคุณหลงป่า แล้วเอาของติดตัวไปได้แค่อย่างเดียว จะเอาอะไรไป)
สำรองเวลาให้ผู้สมัครได้ถามเกี่ยวกับตัวงาน หรือบรรยากาศในการทำงานสัก 10-15 นาที แล้วเตรียมตัวขายของด้วย ว่าทำงานกับทีมเราแล้วดียังไง
หากผู้สมัครได้รับข้อเสนองาน ก็อย่าลูกเล่นตุกติกจนเกินงาม
หากผู้สมัครไม่ได้รับข้อเสนองาน ก็ต้องมีการแจ้งผล ถ้าเป็นไปได้ก็อธิบายให้ชัดเจนว่าทำไมถึงไม่ผ่าน
มีการรับ Anonymous feedback จากผู้สมัครทุกคน เพื่อปรับปรุงกระบวนการอย่างต่อเนื่อง
หลายๆที่คิดว่า หากจะผู้สมัครไม่ผ่านการคัดเลือก ก็ไม่ต้องใส่ใจกับผู้สมัครมาก (เช่น ไม่ส่งอีเมลล์แจ้งผล ไม่ต้องให้ถามคำถาม หรือตอบคำถามใดๆ ตัดจบเลย) ซึ่งเป็นความคิดที่ผิดมาก เพราะโลกไอทีมันแคบ หากเราทำอะไรไม่ดีไว้ แน่นอนว่าต้องมีการบอกต่อปากต่อปากไปเรื่อยๆ สร้างภาพลบให้กับบริษัทและลดโอกาสที่คนอื่นๆจะอยากทำงานกับเรา

ลองสังเกตใน Glassdoor ใน Interview Experience ของ Google จะพบว่าผู้สัมภาษณ์ส่วนใหญ่จะมี Positive experience กับการสมัครงาน แม้ว่าจะตกสัมภาษณ์ก็ตาม เรื่องแบบนี้ไม่ได้เกิดขึ้นง่ายๆนะครับ เบื้องหลังการสัมภาษณ์ ผู้สัมภาษณ์เองต้องมีการเตรียมตัวและเรียนรู้ด้านการสัมภาษณ์งานด้วย



3. สนับสนุนการ Refer จากคนภายใน
ถ้าใครคุ้นเคยกับระบบสมัครงานบริษัทไอทีใหญ่ๆอย่าง Google หรือ Amazon จะรู้ว่าบริษัทเหล่านี้มี Fast-track สำหรับผู้สมัครที่ได้รับการ Refer จากพนักงานในบริษัท โดยผู้สมัครเหล่านี้จะได้รับการตอบกลับที่ไวกว่า และได้รับการอัพเดตทุกขั้นตอนของกระบวนการสมัครงานอย่างต่อเนื่อง

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

ดังนั้น บริษัทจึงควรที่จะสนับสนุนการรีเฟอร์ให้มากที่สุด สิ่งที่เราทำได้คือ

ให้เงินค่า refer กับพนักงานในระดับที่กระตุ้นให้พนักงานช่วยหาคนอย่างจริงจัง (เช่น มากกว่า 50% ของเงินเดือน) คำนวนดีๆว่าการที่งานเราเดินช้าไปเรื่อยๆ มันคุ้มรึเปล่ากับการประหยัดเงินส่วนนี้ ถ้าใช้บริการ Recruiter อยู่ เงินจำนวนนี้น้อยกว่าค่าจ้าง Recruiter มาก
หากมีการ refer ให้ปฏิบัติกับคนที่ถูก refer ให้เขารู้สึกว่าได้รับความสำคัญ ไม่ใช่หุ่นยนต์ เช่น เวลาติดต่อ ก็เขียนอะไรที่มัน personalized หน่อย ไม่ใช่ก็อบแปะอย่างเดียว ไม่แก้อะไรเลย และคอยติดต่ออัพเดตว่าขั้นตอนไปถึงไหนแล้วทุกๆสัปดาห์


4. เสนอเงิน และอะไรที่มากกว่าเงินด้วย
มีคนเคยบอกว่า ถ้าเงินซื้ออะไรไม่ได้ แปลว่ายังเสนอเงินไปไม่มากพอ

มนุษย์เราเป็นสิ่งมีชีวิตที่ไม่ชอบความเปลี่ยนแปลงครับ หากไม่มีสิ่งกระตุ้นที่มากพอ ก็ไม่มีใครอยากย้ายงานหรอก

ใครที่บ่นว่าจ้างโปรแกรมเมอร์เก่งๆไม่ได้ หาไม่เจอ จริงๆไม่ใช่หาไม่เจอครับ แค่เสนอให้ไม่พอ หรือเสนอให้มากพอไม่ไหว เพราะธุรกิจทำรายได้ไม่มากพอ

สิ่งที่เสนอได้หลักๆก็คือเงิน ซึ่งเป็นวิธีที่เหมาะมากสำหรับเด็กจบใหม่ เพราะเงินเดือนไม่มาก การเสนอเงินให้ 150% ถึง 200% ในเรตของเด็กจบใหม่นั้นอาจจะถูกกว่าการเสนอเงินให้ 120% ของโปรแกรมเมอร์ที่มีประสบการณ์สูงๆ

อย่ามองข้ามเด็กจบใหม่นะครับ ทุกๆที่ จะมีหัวกระทิในชั้นปีสักสองสามคนที่เขียนโปรแกรมเก่งมาก บางคนก็รับงาน Project ตั้งแต่เรียน หรือบางคนเขียน Opensource เองเพื่อความสนุก หลายๆคนเก่งกว่าคนที่มีประสบการณ์ด้วยซ้ำ

นอกจากเรื่องเงิน ยังมีปัจจัยอีกเยอะมากที่สามารถใช้ดึงคนได้

สร้างทีมที่เก่ง เพราะคนเก่งจะดึงดูดคนเก่งด้วยกัน
มีงานที่ท้าทาย น่าสนใจ หรือให้ใช้เทคโนโลยีใหม่ๆ
สวัสดิการต่างๆนอกเหนือจากที่ทุกที่เขาให้กัน ของเล็กๆอย่างเช่น ขนม เครื่องดื่ม โต้ะปิงปอง หรือถ้ามีงบก็จัด XBox Playstation + โปรเจ็คเตอร์ ค่าใช้จ่ายพวกนี้เหมือนการทำ Marketing อย่างหนึ่ง
ให้ใช้พื้นที่บริษัทในการจัดงาน MeetUp ต่างๆ หรือเป็นสปอนเซอร์สนับสนุนเพื่อสร้าง Branding
ให้ทีมเขียนบล็อคด้านการพัฒนาเจ๋งๆ
ให้เวลาเข้าออกงานเป็นแบบ Flexible
ให้ทำงานจากบ้านได้หนึ่งวันต่อสัปดาห์
Technical career path
ให้ทำงานแค่ 4 วันต่อสัปดาห์ (32 – 36 ช.ม.)
ลองถามโปรแกรมเมอร์ในทีมครับ ว่าถ้าอยากจะย้ายไปที่อื่น อะไรที่ดึงดูดพวกเขาให้ย้าย คำตอบอาจอยู่ใกล้ตัวกว่าที่คิด




ที่มา : https://www.techtalkthai.com/programmer ... -it-firms/
11/03/2559