การทำให้กระบวนการสมัครงานเป็นอัตโนมัติ
(blog.daviddodda.com)- เป็น POC ที่รวมกระบวนการหางานซึ่งมีคอขวดจากการกรอกข้อมูลซ้ำ ๆ และการเขียนอีเมลเฉพาะบุคคล เข้ากับสคริปต์ Python และ LLM เพื่อทำให้อัตโนมัติตั้งแต่การรวบรวมประกาศรับสมัครงานไปจนถึงการสร้าง อีเมลสมัครงานแบบปรับให้เฉพาะบุคคล
- การรวบรวมประกาศรับสมัครงานเริ่มจาก การคัดลอก HTML ด้วยมือ แทนการทำเว็บสเครปิง เพื่อหลีกเลี่ยงความแตกต่างของโครงสร้างในแต่ละเว็บไซต์และความเป็นไปได้ที่ LLM จะเกิด hallucination
- HTML ดิบถูกส่งผ่าน parser และ prompt ของ LLM แล้วแปลงเป็น JSON แบบมีโครงสร้าง เช่น
job_title,job_company,job_skills,application_instructions - การสร้าง cover letter ใส่ทั้งเรซูเม่และรายละเอียดประกาศรับสมัครงานเข้าไปพร้อมกัน และออกแบบให้ล้มเหลวหากข้อมูลจำเป็นไม่ครบ เพื่อป้องกันการส่ง อีเมลแบบเทมเพลต
- POC เชื่อมโยงการดึงประกาศรับสมัครงาน การ parse คำอธิบายละเอียด และการสร้างใบสมัครแบบปรับเฉพาะบุคคลเข้าด้วยกัน และท้ายที่สุดไปถึงระดับที่ส่ง ใบสมัคร 250 รายการ ได้ภายใน 20 นาที
มองการสมัครงานในฐานะงานซ้ำ ๆ
- การสมัครงานเป็นกระบวนการที่ต้องคัดลอกและวางข้อมูลเดิมซ้ำ ๆ แก้ไขเรซูเม่ และเขียน cover letter อย่างต่อเนื่อง
- ด้วยความซ้ำซ้อนและขั้นตอนที่ค่อนข้างมีโครงสร้าง จึงมองว่าเหมาะเป็น ตัวเลือกสำหรับการทำอัตโนมัติ
- ลำดับงานพื้นฐานมีดังนี้
- ค้นหาประกาศรับสมัครงาน
- ตรวจสอบคุณสมบัติที่ต้องการ
- ศึกษาข้อมูลบริษัท
- ส่งเรซูเม่และ cover letter
- รอการตอบกลับ
- ผลจากการสร้างระบบคือสามารถส่ง ใบสมัครงาน 250 รายการ ได้ในเวลา 20 นาที และระบุว่าได้รับข้อเสนองานก่อนที่ระบบจะเสร็จสมบูรณ์
วิธีสร้าง POC
-
การรวบรวมรายการประกาศรับสมัครงาน
- ขั้นแรกคือการรวบรวมประกาศรับสมัครงานจำนวนมาก
- มีการลองทำเว็บสเครปิง แต่โครงสร้างของแต่ละเว็บไซต์หางานแตกต่างกัน ทำให้ต้นทุนการทำอัตโนมัติสูงขึ้น
- ยังได้ทดสอบวิธีใส่เว็บเพจทั้งหน้าเข้าไปใน LLM เพื่อจัดระเบียบข้อมูล แต่พบปัญหา 2 อย่าง
- ค่าใช้จ่ายสูง
- ต้องการหลีกเลี่ยงความเป็นไปได้ที่ LLM จะ hallucinate ข้อกำหนดของตำแหน่งงาน
- สุดท้ายเลือกวิธีคัดลอก HTML ดิบด้วยมือ
- ยอมรับว่าเป็นวิธีที่เรียบง่ายแต่ใช้งานได้จริง
-
การจัดระเบียบ HTML ดิบ
- ดึงฟิลด์ที่จำเป็นจาก HTML ที่คัดลอกมา แล้วแปลงเป็นข้อมูลแบบมีโครงสร้าง
- รูปแบบเป้าหมายคือ JSON ที่มีคีย์อย่าง
job_link,job_id,job_role,employer,location,work_arrangement,salary - ใช้วิธีแสดงตัวอย่าง HTML และรูปแบบผลลัพธ์ที่ต้องการให้ ChatGPT แล้วให้ช่วยสร้าง สคริปต์สำหรับ parse
การ parse รายละเอียดประกาศรับสมัครงาน
- ส่งคำขอ GET ไปยังประกาศรับสมัครงานแต่ละรายการเพื่อดึงคำอธิบายทั้งหมด
- การตอบกลับเป็น HTML ดิบ จึงมีโครงสร้างของเว็บไซต์อย่าง navigation bar, popup และ footer ปะปนมาด้วย
- เขียน HTML parser แยกต่างหากเพื่อให้เหลือเฉพาะ เนื้อหาประกาศรับสมัครงาน จริง ๆ
- บางเว็บไซต์มีขั้นตอนเพิ่มเติม เช่น ต้องกดปุ่มเพื่อดูอีเมลของผู้รับผิดชอบการจ้างงานหรือรายละเอียดบริษัท
- หากทำงานกับเว็บไซต์หางานทีละแห่ง ก็ต้องทำความเข้าใจ pattern ของเว็บไซต์นั้นเพียงครั้งเดียว
- ใส่การหน่วงเวลา 2–3 วินาทีระหว่างคำขอเพื่อหลีกเลี่ยงการถูกบล็อก IP
สร้างข้อมูลแบบมีโครงสร้างด้วย LLM
- ประกาศรับสมัครงานมีองค์ประกอบพื้นฐานคล้ายกัน แต่ตำแหน่งของทักษะหรือข้อกำหนดต่างกันไปตามแต่ละเว็บไซต์
- ใช้ prompt ของ LLM วิเคราะห์เนื้อหา HTML แล้วแปลงเป็น JSON object ที่ถูกต้อง
- คีย์ที่ต้องดึงมีดังนี้
contact_emailapplication_instructionsjob_posting_textjob_posting_linkadditional_infojob_titlejob_companyjob_departmentjob_locationjob_skillsjob_instructions
- คีย์แบบเลือกได้ใช้เช่น
hiring_manager_name,job_portal - ขอให้แปลง
job_posting_textให้อยู่ในรูปแบบ Markdown
Prompt สำหรับสร้าง cover letter
- มองว่าแกนสำคัญของ cover letter ที่ดีคือ บริบท จึงป้อนทั้งเรซูเม่และรายละเอียดประกาศรับสมัครงานเข้าไปใน LLM พร้อมกัน
- prompt กำหนดให้สร้างอีเมลสมัครงานในรูปแบบที่ส่งได้ทันที
- ออกแบบให้หากข้อมูลจำเป็นขาดหาย จะไม่สร้างอีเมลที่ไม่สมบูรณ์ แต่ให้ส่งคืนข้อผิดพลาด
- ฟิลด์จำเป็น: ชื่อตำแหน่ง, ชื่อบริษัท, คำอธิบายงาน, เนื้อหาเรซูเม่
- ฟิลด์เลือกได้ที่แนะนำ: ชื่อผู้รับผิดชอบการจ้างงาน, แผนก, สถานที่, วิธีสมัคร, ช่องทางแนะนำ, รายการทักษะที่ต้องการ
- ผลลัพธ์เป็น JSON object ที่มี
status,error_message,email - ใน
emailมีรายการต่อไปนี้- หัวข้อ
- เนื้อหา HTML
- เนื้อหาแบบ plain text
- ประเด็นสำคัญที่กล่าวถึง
- ทักษะที่เน้น
- ประสบการณ์ในเรซูเม่ที่ตรงกับข้อกำหนดของงาน
- ข้อมูลที่ขาดหายซึ่งหากมีจะช่วยเสริมใบสมัครได้
- การวิเคราะห์โทนอีเมล
- จำกัดให้เนื้อหา HTML ใช้เฉพาะแท็กพื้นฐานอย่าง
p,br,b,i,ul,liเพื่อความเข้ากันได้กับอีเมลไคลเอนต์ - โครงสร้างนี้เป็นกลไกสำหรับสร้าง อีเมลแบบปรับให้เฉพาะบุคคล ที่เชื่อมโยงประวัติจริงกับข้อกำหนดของงาน ไม่ใช่อีเมลทั่วไปในระดับ “เห็นประกาศรับสมัครงาน”
การส่งอีเมลและการติดตาม
- ขั้นตอนสุดท้ายคือการส่งอีเมลสมัครงานที่สร้างขึ้นจริง
- เงื่อนไขที่จำเป็นมีดังนี้
- การส่งอีเมลที่ดูเป็นมืออาชีพ
- การติดตามประวัติการส่งจริง
- การติดตามการตอบกลับจากผู้รับผิดชอบการจ้างงาน
- การหลีกเลี่ยงการถูกจัดเป็นสแปม
- ในขั้นทดสอบ อีเมลทั้งหมดถูกส่งไปยังบัญชีทดสอบก่อน
- เมื่อส่งถึงผู้รับผิดชอบการจ้างงานจริง แนะนำให้ใส่ตัวเองใน BCC เพื่อตรวจสอบว่าส่งออกไปแล้ว
- ในขั้น POC ใช้ผู้ให้บริการอีเมลแบบเรียบง่าย เช่น Mailgun
- มีการเกริ่นว่า Part 2 จะกล่าวถึงการถูกปฏิเสธใบสมัคร AWS และความล้มเหลวในการดูแลอีเมลเซิร์ฟเวอร์เอง ระหว่างพยายามสร้างระบบจัดการอีเมลเต็มรูปแบบ
ผลลัพธ์ของ POC และขั้นต่อไป
- POC ใช้สคริปต์ Python ไม่กี่ตัวเพื่อดึงรายการประกาศรับสมัครงาน, parse และสร้างใบสมัครแบบปรับให้เฉพาะบุคคล
- งานถัดไปคือการเปลี่ยนสคริปต์ให้เป็นแอปพลิเคชันจริง
- เป้าหมายในการขยายมีดังนี้
- รองรับเว็บไซต์หางานหลายแห่ง
- ติดตามประวัติการสมัคร
- จัดการการตอบกลับทางอีเมล
- ไม่ให้ถูกบล็อกโดยระบบ HR
- Part 2 จะกล่าวถึงกระบวนการสร้างแอปพลิเคชันจริง การตัดสินใจทางเทคนิค และ trade-off
1 ความคิดเห็น
ความเห็นบน Hacker News
มีการถกเถียงกันมากว่าใครควรรับผิดชอบต่อสถานการณ์ตอนนี้มากกว่ากันระหว่างฝ่ายสรรหากับผู้สมัคร แต่ในมุมของคนหางาน ผมไม่รู้เลยว่าควรทำอะไร
ตลอดราว 6 เดือนที่ผ่านมา ผมหางานอย่างค่อนข้างจริงจัง และมีประสบการณ์พัฒนาซอฟต์แวร์มากกว่า 10 ปี จึงมองหาตำแหน่งนักพัฒนาระดับซีเนียร์เป็นหลัก ผมไม่ได้ใช้ LLM กับเรซูเม่หรือจดหมายสมัครงานเลย และสมัครเฉพาะที่คิดว่าตัวเองตรงคุณสมบัติและถ้าได้ข้อเสนอมาก็พร้อมรับ
แต่ผมไม่รู้ว่าจะส่งสัญญาณอย่างไรว่า 1) เป็นคนจริง 2) ประสบการณ์และทักษะในเรซูเม่เป็นของจริง และ 3) สนใจตำแหน่งนั้นจริง ๆ ซึ่งถึงทำแบบนี้ผลลัพธ์ก็ยังย่ำแย่ ผมได้คุยคัดกรองทางโทรศัพท์รอบแรกประมาณ 10~12 ครั้ง และผ่านได้ไม่ยาก แต่หลังจากนั้นไปถึงรอบสัมภาษณ์ท้าย ๆ ได้แค่ประมาณ 3~4 ครั้ง และได้ข้อเสนอ 0 ครั้ง
ถ้ายังทำแบบนี้ต่อไปก็เหมือนไม่ไปถึงไหน เลยไม่เข้าใจว่าทำไมต้องยึดวิธีนี้ต่อ และไม่เห็นเหตุผลว่าทำไมถึงไม่เปลี่ยนไปใช้วิธียิงแหลก ส่งอัตโนมัติไปทุกประกาศที่พอจะตรงเงื่อนไข ส่วนวิธีอื่นที่จะส่งสัญญาณว่าเป็นคนมีประสบการณ์จริงก็คงมีแค่มีคนรู้จักในบริษัทช่วยรับรอง แต่แบบนั้นแทบไม่มีเลย
ปัญหาคือ ต่อให้ได้งาน สุดท้ายก็มักเป็นบริษัทแย่ ๆ เช่น ผู้จัดการฝ่ายสรรหาที่ไร้ความสามารถจนแยกไม่ออกระหว่างข้อความน้ำท่วมจาก LLM กับใบสมัครจริง หรือสถานที่ที่กระบวนการสัมภาษณ์ทำให้ทุกคนกลายเป็นเหมือนคนคุม LLM เพราะการโกงด้วย LLM ทำได้ง่ายเกินไป
จะลองก็ได้ และอาจดีกว่าไม่มีอะไรเลย แต่ถ้าคาดหวังงานดี ๆ ในบริษัทดี ๆ มีโอกาสสูงว่าวิธีนี้จะไม่ให้ผลลัพธ์ที่ต้องการ
หลังจากเจอเรซูเม่แย่ ๆ มากเกินไป ผมกลับใจกว้างขึ้นพอสมควรถ้ามีอะไรที่ทำให้ดูเหมือนเป็นคนจริง แม้คุณสมบัติจะไม่ตรงทั้งหมดก็ตาม เช่น มีหัวข้องานอดิเรกส่วนตัว หลายคนแนะนำว่าไม่ควรใส่อะไรแบบนั้น แต่ในทะเลของของปลอมกับขยะคัดลอกวางแปะ มันกลับช่วยให้สะดุดตา
ตอนหางานครั้งล่าสุด ผมสมัครไปเกือบ 300 ตำแหน่ง แต่สุดท้ายได้งานใหม่เพราะรีครูเตอร์ที่เจอในกลุ่ม JavaScript เล็ก ๆ บอกตำแหน่งให้
มันเป็นแค่เรื่องเล่าหนึ่งกรณี แต่ก็เปลี่ยนมุมมองของผมชัดเจน และถ้าจะเริ่มหางานครั้งหน้าอย่างจริงจัง ผมคิดว่าจะไปมีตติ้งเยอะ ๆ และทำกิจกรรมโอเพนซอร์สมากกว่านี้มาก
ผมไม่อยากเขียนประสบการณ์ล่าสุดซ้ำอีก แต่เมื่อราว 6 สัปดาห์ก่อนมีเธรดที่เขียนไว้ละเอียดอยู่ https://news.ycombinator.com/item?id=42137229
ผมยังพออยู่ในจุดที่มีเวลาทุ่มให้ได้ แต่ถ้าจำเป็นต้องได้งานเร็ว ๆ จริง ๆ ก็พูดตามตรงว่าไม่รู้เหมือนกันว่าจะทำอย่างไร
ถามคนในเครือข่ายว่าพอรู้ไหมว่าที่ไหนกำลังหาคนที่มีทักษะแบบที่คุณมี และควรเข้าไปอยู่ในคอมมูนิตี้ออนไลน์กับออฟไลน์ที่ตรงกับทักษะและความสนใจของตัวเอง
ถ้าทำแบบนี้แล้วได้การแนะนำแบบอบอุ่นถึงผู้จัดการรับสมัครผ่านคนที่รู้จักคุณ หรือคนที่รู้จักคนที่รู้จักคุณ ปกติก็จะได้ไปอยู่หน้าสุดของคิว ถ้าผมหางานตอนนี้ก็คงทำแบบนั้น เพราะนอกเหนือจากนี้มีแต่สัญญาณรบกวนมากเกินไป
0: ใช้ได้กับสตาร์ทอัพด้วย: https://paulgraham.com/ds.html
เป็นผู้จัดการซอฟต์แวร์ที่ทำงานด้านการสัมภาษณ์และการจ้างงานมาไม่ว่ารูปแบบใดก็รูปแบบหนึ่งตลอด 13 ปี
ปีที่แล้วมีการรับวิศวกรซอฟต์แวร์สองรอบ รอบฤดูใบไม้ผลิก็ปกติดี แต่รอบฤดูใบไม้ร่วงโหดมาก ช่วงนั้นผู้สมัครหลั่งไหลเข้ามาอย่างล้นหลาม และพอมองย้อนกลับไปก็ดูเหมือนว่าส่วนใหญ่จะใช้ AI ไม่ทางใดก็ทางหนึ่ง
ในช่วงฤดูใบไม้ร่วง อัตราการผ่านการคัดเรซูเม่และการคัดกรองทางโทรศัพท์รอบต้นเพิ่มขึ้นอย่างกะทันหัน แต่ทุกคนกลับพังหมดในการสัมภาษณ์เชิงเทคนิค อัตราตกในการสัมภาษณ์เชิงเทคนิคหนักกว่าปกติมาก
เรามีรีครูตเตอร์ประจำ และแม้จะไม่รู้ 100% ว่าเขาใช้เครื่องมืออะไรบ้าง สุดท้ายก็เริ่มกลับมานั่งตรวจเรซูเม่ทีละฉบับเอง ใช้เวลานานเพราะมีเป็นร้อยฉบับ แต่ปัญหาที่การคัดกรองรอบต้นยอดเยี่ยมแต่การสัมภาษณ์เชิงเทคนิคเละเทะก็ยังคงอยู่
เลยตัดสินใจคัดผู้สมัครที่พูดถึง AI, LLM และ data science เยอะ ๆ ออกไป เพราะจากผู้สมัครเกือบ 1,000 คน ยังไงก็ต้องมีวิธีจัดหมวดหมู่ use case ของเราค่อนข้างเฉพาะทาง ไม่ใช่งาน JavaScript หรือ parser และการประหยัดเวลาก็ไม่ได้มากนัก พอทำแบบนั้น ผู้สมัครก้อนใหญ่ก็หายไปและกระบวนการก็ดูเป็นปกติมากขึ้น
เราปรับกลับไปทำการสัมภาษณ์แบบเจอหน้ากันเท่านั้นด้วย การคัดกรองเชิงเทคนิคเบื้องต้นยังทำแบบรีโมต แต่ก่อน COVID เราสัมภาษณ์แบบเจอหน้ากัน 100% หลังจากนั้นเป็นไฮบริด และตอนนี้ทีมเรากลับมาบังคับให้มาออนไซต์อีกครั้ง
ตอนนี้มีผู้สมัครปลอมจำนวนมากแบบไร้สาระ และวิธีเดียวที่จะทำให้พวกเขาถอนตัวเองคือทำให้รู้ว่ามีโอกาสต้องเดินทางมาพบด้วยตนเอง
แค่พูดว่า “คุณอยู่ Flint, Michigan ใช่ไหม? บังเอิญเรามีพนักงานอยู่ห่างไป 20 นาที จะสะดวกพบกันไหม?” บางคนก็หายออกจากกระบวนการสัมภาษณ์ไปทันที
ตอนนี้มีมิจฉาชีพจากต่างประเทศจำนวนมากเกินไปที่ฉวยโอกาสจากกระแสทำงานจากบ้านในสหรัฐฯ มากจนกลบผู้สมัครจริงไปหมด มันหนักมากจริง ๆ
ในสายงานของผม ผมน่าจะใกล้เคียงผู้เชี่ยวชาญอันดับ 1 ของโลก และสมัครเฉพาะบทบาทที่ระบุชัดเจนว่าต้องการ SME ในสาขานั้น มันไม่ใช่ปัญหาด้านเทคนิค และแม้จะพิสูจน์ไม่ได้จริง ๆ แต่ก็พูดได้ว่าผมทิ้งห่างผู้สมัครคนอื่นเป็นปีแสง ไม่ใช่เพราะหลงตัวเอง แต่เพราะความจริงมันดูเป็นแบบนั้น
แต่ตอนนี้แม้แต่เอเจนซีก็ไม่ติดต่อกลับมาเลย ผมคิดว่าพวกเขาไม่ได้อ่านเรซูเม่หรือใบสมัครของผม และน่าจะเป็นเพราะมีใบสมัครเข้ามาหลายร้อยฉบับในชั่วโมงแรก พอเจอคนแรก ๆ ที่ดูดีพอก็เดินหน้าต่อแล้วไปเติมสัญญาฉบับถัดไป
สรุปคือ ต่อให้เก่งแค่ไหนก็ไม่มีประโยชน์ถ้าเรซูเม่ไม่ถูกมองเห็น โดยเฉพาะถ้าไม่ได้สมัครใน 10 นาทีแรก และถ้าอยากให้ถูกมองเห็นก็ต้องเล่นเกมนั้นและทำให้การสมัครเป็นอัตโนมัติ
ถ้าอย่างนั้น ปัญหาก็คือเมื่อคุณไม่อยากเล่นเกมนั้น แล้วตอนนี้จะหาบริษัทที่ต้องการทักษะของคุณจริง ๆ ได้อย่างไร
ผมไม่ได้ต่อต้านการใช้ LLM ในบริบทที่เหมาะสม แต่ปัญหาใหญ่คือผู้สมัครจำนวนมากใช้มันอย่างไม่เหมาะสมเพื่อเลี่ยงกระบวนการ เราพยายามทำให้ภาระการสัมภาษณ์ของผู้สมัครต่ำที่สุด ไม่ถามคำถามหลอก และถามเฉพาะสิ่งที่เกี่ยวข้อง พร้อมอัปเดตสถานะให้เร็วที่สุดเท่าที่ทำได้
แต่ดูเหมือนผู้สมัครจำนวนมากจะไม่คิดตอบแทนความให้เกียรตินั้น พฤติกรรมแบบนี้ทำให้เราต้องพึ่งเครือข่ายเดิมมากขึ้นเพื่อหาผู้สมัครที่ “เชื่อถือได้” ซึ่งเสี่ยงจะสร้างอคติเพิ่ม หรือคัดคนที่ไม่มีเครือข่ายออกอย่างไม่เป็นธรรม องค์กรเราเป็น remote-first จึงทำการสัมภาษณ์ทั้งหมดแบบรีโมต
ต่อไปผมกำลังคิดว่าจะลองใช้เทคนิค AI เชิงปฏิปักษ์แบบบ้าน ๆ เช่น แชร์ไดอะแกรมบนหน้าจอ แล้วใส่คำอธิบายประกอบที่ไม่เกี่ยวข้องโดยบอกไว้ชัดเจนว่าไม่เกี่ยวข้อง การสัมภาษณ์แบบออนไซต์อาจเป็นส่วนหนึ่งของคำตอบเช่นกัน
ต่อให้สัมภาษณ์หกรอบ ผู้สมัครที่ไม่ผ่านก็ยังไม่ได้ฟีดแบ็กดี ๆ สักอย่างเดียว และถูกปฏิบัติราวกับขยะด้วยอีเมลปฏิเสธแบบไร้วิญญาณ จากมุมของผู้สมัคร ผมไม่มีความเห็นอกเห็นใจต่อบริษัทที่อาจจะจ้างผมเลย และถ้ามองว่าวิธีไหนมีประสิทธิภาพกว่า ผมก็จะใช้ทุกอย่างที่ทำได้รวมถึง AI
สำหรับผม งานก็เป็นแค่ธุรกรรมทางธุรกิจ และผมไม่สนใจคำเทศนาสูงส่งของผู้จัดการฝ่ายจ้างงาน
เขาไม่ได้ใช้เครื่องมือตรวจจับ LLM แต่บอกว่างานเขียนที่มีร่องรอยการใช้ LLM นั้นแยกออกได้ง่าย แปลกตรงที่ในหัวข้อเฉพาะทางของเขา ChatGPT มักใช้คำยากบางคำมากเกินไปทั้งที่ปกติแทบไม่มีใครใช้ และในเรียงความของนักศึกษาที่ใช้เกินขอบเขตก็มีคำเหล่านั้นโผล่มาซ้ำ ๆ
เขายังจับได้ด้วยว่านักศึกษาหลายคนอ้างอิงงานเขียนและหนังสือจำนวนมากที่อยู่นอกเหนือรายการอ่านที่กำหนด หรือแม้แต่หนังสือที่ไม่มีอยู่จริง แค่ถามว่าแหล่งอ้างอิงคืออะไรและไปเอาข้อความมาจากไหนก็จับได้แล้ว
ตอนนี้ในกระบวนการจ้างงานและการสัมภาษณ์วิศวกรซอฟต์แวร์ระดับจูเนียร์ก็เห็นอะไรคล้ายกันเยอะมาก เราเคยมีโจทย์งานที่มีชื่อเสียงและใช้มาหลายปีได้ผลดี แต่ตอนนี้ชัดเจนว่าผู้สมัครอายุน้อยจำนวนมากใช้ LLM หาคำตอบ พอให้เล่าวิธีทำของตัวเองในการสัมภาษณ์ ก็กลับบอกว่า “จำไม่ได้” ว่ามันทำงานอย่างไรหรือทำไมถึงเลือกวิธีนั้น
ในฐานะคนที่ทำงานรีโมตมานาน มันน่าเศร้า ผมเห็นการใช้เกินขอบเขตอย่างโจ่งแจ้งจากผู้สมัครรีโมตมากกว่ามาก และเมื่อเรียกมาสัมภาษณ์แบบออนไซต์ พวกที่โกงด้วย LLM ก็ดูเหมือนจะกลัวจนถอนตัวทันที แต่ก็ทำให้ทุกคนเสียทั้งเวลาและค่าใช้จ่ายมากขึ้น
ในมุมของผู้จัดการฝ่ายสรรหา สิ่งที่เราไม่อยากได้มากที่สุดคือเรซูเมที่ถูกส่งมาแบบอัตโนมัติจนล้น
ไม่นานมานี้พอโพสต์ประกาศงาน ก็มีเรซูเมส่งเข้ามาเกิน 100 ฉบับภายใน 2 วัน และ 99% แทบไม่ตรงคุณสมบัติเลย การต้องคัดเรซูเมจำนวนมากขนาดนั้นเพื่อหาคนที่พอนัดสัมภาษณ์ได้เป็นเรื่องที่เหนื่อยมาก
ถ้าเสียงรบกวนมีมากเกินไป ผู้สมัครที่ดี ก็อาจถูกมองข้ามหรือปฏิเสธไปโดยพลาดได้ และวงจรแย่ ๆ ก็จะดำเนินต่อไป
ผมรู้ว่าตอนนี้ตลาดแย่และมีคนหางานจำนวนมาก แต่การส่งสมัครอัตโนมัติและการถล่มเว็บหางานมันไม่ได้ผล อย่างน้อยก็กับตำแหน่งที่สำคัญ
ถ้าผู้สมัครที่มีคุณสมบัติต้องยื่นสมัครเป็นร้อยครั้งกว่าจะได้สัมภาษณ์สักครั้ง ก็ยากจะโทษพวกเขาที่ใช้ระบบอัตโนมัติ ตรงกันข้าม ถ้ามีความริเริ่มและความสามารถในการทำสิ่งนี้ให้เป็นอัตโนมัติได้ดี ก็อาจเป็นคนที่น่าจ้างมากด้วยซ้ำ ถ้ายังไม่ได้งานไปก่อนนะ
สิ่งที่น่าเศร้าที่สุดคือการได้เห็นความสิ้นหวังที่ AI และโซเชียลมีเดียก่อขึ้นแพร่ไปถึงเมนทีรุ่นเยาว์ ผมทำงานเมนเทอร์แบบอาสามาหลายปี แต่รุ่นหลัง ๆ ดูเหมือนติดความคิดว่าตลาดงานเป็นแค่เกมที่ต้อง optimize
น่าเสียดายที่คนหนุ่มสาวที่ฉลาดและมีแรงจูงใจไปเรียนรู้วิธีคิดเรื่องตลาดงานจากที่อย่าง Reddit และ TikTok ที่นั่นสอนว่าการทุ่มเทเป็นเรื่องเชย และวิธีเดียวที่จะรักษาศักดิ์ศรีตัวเองไว้ได้คือทุ่มให้งานน้อยลง โกหกตอนสัมภาษณ์ ทดสอบขอบเขตว่าจะทำงานให้น้อยที่สุดได้แค่ไหน และทำงานแบบเหมือน quiet quitting พร้อมทั้งทำให้สิ่งเหล่านี้ดูสมเหตุสมผลด้วยการโทษบริษัทและ CEO แทนที่จะมองว่าเป็นการตัดสินใจของตัวเอง
ภาวะซบเซาล่าสุดของวงการเทคเป็นการปลุกครั้งใหญ่สำหรับคนพวกนี้ บรรยากาศของบางรุ่นเปลี่ยนจากความเฉยชาแบบหยิ่ง ๆ ที่เชื่อว่าเพราะตลาดเพี้ยน ๆ ในปี 2021~2022 ต่อให้โดนเลย์ออฟก็หางานใหม่พร้อมเงินเดือนเพิ่ม 20% ได้ในสัปดาห์ถัดไป ไปเป็นการถูกไล่ออกเพราะผลงานต่ำของตัวเองแล้วถ่อมตัวลงมาก
ความสิ้นหวังเวอร์ชันใหม่นี้คือการเชื่อว่าไหน ๆ AI ก็จะมาแย่งงานอยู่แล้ว เกมจึงกลายเป็นการใช้ LLM หลอกใบสมัคร หลอกผ่านสัมภาษณ์ และหลังเข้าทำงานแล้วก็พยายามประคองตัวให้อยู่นานที่สุด
ปัญหาหนักจนบริษัทแห่งหนึ่งถอนความร่วมมือกับกระดานรับสมัครงานภายในของเรา เพราะมีทั้งใบสมัครที่สร้างด้วย LLM และการโกงอย่างชัดเจนด้วย LLM ระหว่างสัมภาษณ์แพร่หลายไปหมด ในทางกลับกัน คนที่ตั้งใจเรียนรู้จริงและพยายามอย่างจริงใจ กลับขึ้นไปอยู่ประมาณ 25% แรกโดยอัตโนมัติ เพียงเพราะไม่พึ่ง LLM ในการสื่อสารและเขียนโค้ด
ผมไม่รู้ว่าสุดท้ายเรื่องนี้จะจบอย่างไร ตลาดงานให้ความรู้สึกเหมือนกำลังแยกขั้วต่อไป ระหว่างงานที่ยังจริงจังกับการทำงาน และงานที่ตราบใดที่ยังไม่ถูกจับได้ ทุกคนก็เอาแต่เล่น LLM ping-pong กัน
ที่ชวนอึ้งกว่านั้นคือ งานเหล่านี้เป็นงานรีโมต 100% การสัมภาษณ์จัดใน co-working space โลกที่เราอยู่ตอนนี้ก็เป็นแบบนี้แหละ
แน่นอนว่าผลลัพธ์คือทุกฝ่ายเสียประโยชน์ และแย่กว่าตอนที่สงครามนี้ยังไม่เริ่มเสียอีก แต่ผู้จัดการฝ่ายสรรหาควรคิดเรื่องนั้นก่อนจะเริ่มคัดคนแบบอัตโนมัติ ความรับผิดชอบนี้อยู่ที่ฝั่งจ้างงาน
ผมเป็นคนที่ชอบทำทุกอย่างให้เป็นอัตโนมัติและปกติก็ชอบเรื่องแบบนี้มาก แต่กับการหางานผมทำตรงกันข้ามโดยสิ้นเชิง
แทนที่จะหว่านสมัครไปทั่ว ผมจะใช้เวลาประมาณหนึ่งสัปดาห์ศึกษาบริษัทที่อยากทำงานด้วยอย่างลึกซึ้ง แล้วดูว่าจะเข้าไปในบทบาทไหน ทุกอย่างทำด้วยมือ 100% และทำแบบโฟกัสมาก ๆ โดยจำนวนบริษัททั้งหมดไม่เกิน 8 แห่ง
การสมัครแบบหว่านอาจใช้ได้ตอนยังจูเนียร์กว่า แต่ยิ่งอาชีพเดินมาช่วงหลังมากเท่าไร ก็ยิ่งต้องเลือกอย่างพิถีพิถันว่าจะใช้เวลาสัมภาษณ์กับที่ไหน เพราะตำแหน่งงานมีผลระยะยาวและกระทบชีวิตมาก
เครื่องมือที่รีครูเตอร์หรือฝ่าย HR ใช้ก็แย่และหลอกได้ง่ายมาก เช่น โปรยคีย์เวิร์ดและวลีต่าง ๆ ลงในเรซูเมอย่างมีกลยุทธ์ทั้งที่ไม่มีประสบการณ์จริง สุดท้ายผู้จัดการฝ่ายสรรหาก็เรียกผู้สมัครที่ดีมาสัมภาษณ์ไม่ได้ และผู้สมัครที่ดีก็ไม่ได้โอกาสเข้าสัมภาษณ์
ปัญหาหลักไม่ใช่แค่ว่าระบบมันแย่ แต่คือในช่วง 2~3 ปีที่ผ่านมา คนในสาย IT ตกงานกันมากเกินไปจนสุดท้ายแทบไม่มีทางเลือกนอกจาก สมัครแบบหว่าน ยังไงก็ต้องหาเลี้ยงชีพ
เรื่องนี้จะไม่ดีขึ้นจนกว่าการจ้างงานจะฟื้น ความต้องการแรงงานจะเพิ่มขึ้น และผู้เชี่ยวชาญ IT บางส่วนจะย้ายไปอุตสาหกรรมอื่นจนฝั่งอุปทานแรงงานลดลง เหมือนที่เคยเกิดในปี 2000 และ 2008
มีเหตุผลห่วย ๆ มากเกินไปที่ทำให้ใบสมัครถูกเมิน วิธีนี้เลยไม่น่าจะเวิร์กเท่าไร เว้นแต่คุณจะเข้าถึงผู้จัดการได้ผ่านเครือข่าย
ผมคิดว่าทั้งสองวิธีใช้ได้ทั้งคู่ กับการเดตออนไลน์ผมใช้แนวทางอัตโนมัติ และตอนนี้ก็แต่งงานแล้ว เพราะงั้นมันก็ได้ผล
ผมรู้สึกว่าแนวทางอัตโนมัติกับบริษัทก็น่าจะทำงานคล้ายกับการเดตออนไลน์ เพียงแต่ต่างจากการเดตตรงที่ ถ้าพอไปถึงรอบสัมภาษณ์ได้แล้ว วิธีที่เจาะจงเป้าหมายอย่างมากอาจได้ผลดีกว่า
เหตุผลใหญ่ที่สุดที่แนวทางแบบเจาะจงไม่ค่อยเวิร์กกับการเดตก็เพราะต้องหาว่าเรามีเคมีเข้ากับใคร แต่กับงานไม่จำเป็นต้องหาสิ่งนั้น อย่างน้อยก็ไม่ได้ต้องการความใกล้ชิดระดับเดียวกับความสัมพันธ์แบบคู่รัก
ฉันก็เคยทำแบบนี้เหมือนกัน และได้งานภายใน 3 เดือน
ก่อนทำระบบอัตโนมัติ ส่วนที่น่าเบื่อที่สุดคือการคัดลอกข้อมูลที่เกี่ยวข้องไปแปะในจดหมายสมัครงาน อัปเดตเนื้อหา สร้างเอกสารจดหมายสมัครงานเป็นไฟล์ Word และใส่สำเนาเรซูเม่ไว้ในโฟลเดอร์ของบริษัท/ประกาศงานนั้น ๆ ฉันยังตั้งให้รายละเอียดประกาศงานถูกเพิ่มเข้าไปอัตโนมัติในตาราง Notion ที่ใช้ติดตามใบสมัครที่ยังเปิดอยู่ ซึ่งก็คือบอร์ด Kanban
เมื่อก่อนทั้งกระบวนการใช้เวลา 30–45 นาที แต่หลังจากนั้นใช้เวลาไม่ถึง 2 นาที ไม่ได้แปลว่าฉันสมัครมากขึ้น แค่สามารถทำใบสมัครได้ในเวลาที่สั้นลงมาก และเอาเวลาที่เหลือไปโฟกัสกับการศึกษาบริษัทและตำแหน่งงาน
ChatGPT ทำให้ทั้งกระบวนการลื่นไหลมาก และพวกเราอยู่ในยุคที่ยอดเยี่ยมจริง ๆ
ถ้าผู้จัดการฝ่ายจ้างงานกำลังเจอเรซูเม่ถล่มเข้ามา ก็สามารถใช้ งานที่ไม่น่าดึงดูด และคำสั่งแบบแมนนวลเป็นตัวกรองได้
DOM เดินสำรวจได้หลายวิธี จะให้หลับตาแล้วแฮ็กอะไรสักอย่างด้วย
childNodesกับnextSiblingก็พอทำได้ แต่ตัวเลือกที่ดีที่สุดน่าจะเป็นคลาส TreeWalker ฉันเคยใช้มาก่อน แต่คงเขียน implementation ที่ทำงานได้บนไวท์บอร์ดไม่ได้ ถ้าไม่ได้เปิด MDN แวบหนึ่งเพื่อรื้อฟื้นความจำถ้าคุณคัดผู้สมัครจากการท่องจำมาตรฐานเว็บที่ขยายใหญ่ขึ้นเรื่อย ๆ อย่างเดียว คุณก็คงพลาดผู้สมัครดี ๆ ไปเยอะ
ฉันไม่เห็นด้วยกับคำพูดที่ว่าความลับของจดหมายสมัครงานที่ดีคือบริบท
ฉันรู้ว่าตอนที่หางานเมื่อสี่ปีกว่า ๆ เทียบกับตอนนี้หลายอย่างเปลี่ยนไปมาก แต่จดหมายสมัครงานไม่ใช่ที่สำหรับแสดงว่าเราอ่านประกาศงานแล้วเอารายละเอียดเฉพาะของตำแหน่งนั้นมาเสียบลงในเทมเพลต มันคือโอกาสเดียวที่จะได้แสดงบุคลิก
ฉันคิดว่าจดหมายสมัครงานที่ดีเปลี่ยนเกมได้ ฉันได้งานนักพัฒนางานครั้งแรกก็เพราะผู้จัดการฝ่ายจ้างงานกับนักพัฒนารุ่นพี่ชอบจดหมายสมัครงานของฉัน มันยังเป็นตัวกรองเรื่องความเข้ากับวัฒนธรรมองค์กรได้ดีด้วย ฉันไม่ใช่คนจริงจังมาก และไม่อยากทำงานในบริษัทที่คาดหวังให้ฉันเป็นแบบนั้น เลยใส่มุกเล็ก ๆ ไว้เสมอ
ตอนที่ต้องจ้างคนอยู่บ้างเมื่อต้นปีนี้ ฉันก็ใช้เวลาอ่านเพิ่มอีกสองสามนาทีเพื่อมองหาจดหมายสมัครงานที่มีอะไรนอกกรอบบ้าง แต่หาไม่เจอ ทุกคนทำตามเทมเพลตน่าเบื่อที่ได้จากการ Google แบบลวก ๆ ว่า “เขียนจดหมายสมัครงานยังไง”
เรซูเม่บอกไม่ได้ว่าคนนี้เป็นคนประเภทที่ฉันอยากร่วมงานด้วยไหม ตอนนั้นมีเรซูเม่ 200 ฉบับจากคนที่ทำงานที่เราจะจ้างได้ ถ้าคุณต้องแข่งกับคนอีก 199 คนที่ทักษะสูสีกันโดยมีแค่เรซูเม่ จดหมายสมัครงานที่ดีก็อาจเป็น ความได้เปรียบในการแข่งขัน ได้
แน่นอน ฉันรู้ว่าสภาพแวดล้อมการจ้างงานทุกวันนี้ต่างออกไปโดยสิ้นเชิง มุมมองของฉันอาจผิดก็ได้ ถึงอย่างนั้นก็น่าจะยังมีผู้จัดการฝ่ายจ้างงานที่อ่านจดหมายสมัครงานอยู่ และถ้าวันหนึ่งฉันเริ่มหางานใหม่ ฉันก็คงใช้เวลากับจดหมายสมัครงานเพิ่มอีกสักหน่อย
แยกจากปัญหาการสมัครแบบหว่านแหแล้ว ผู้สมัครก็ควรลงแรงให้สมกับความพยายามที่ผู้จัดการฝ่ายจ้างงานต้องใช้ ถ้าสองสามขั้นแรกเป็นระบบอัตโนมัติ แล้วช่วงท้ายมีคนจริงมาอ่าน จดหมายสมัครงานที่สร้างขึ้นมาก็ควรมีการ ตรวจแก้ โดยเจ้าตัวเอง
ค่อนข้างเจ๋ง แต่ดูมีประโยชน์ในฐานะเดโมโปรเจกต์ที่เนี้ยบมากกว่าฟังก์ชันใช้งานจริง
อย่างแรกเลย การส่งใบสมัครงานแบบอัตโนมัติอาจไม่ได้ทำให้ผู้จัดการฝ่ายจ้างงานรู้สึกดีกับคุณนัก ยิ่งไปกว่านั้น เหมือนกับที่เราไม่อยากปรับชีวิตให้เหมาะกับการออกเดตครั้งแรกเก่ง ๆ ฉันก็คงไม่อยากปรับชีวิตให้เหมาะกับการหางาน
ชีวิตจะเติมเต็มกว่าถ้าได้เจอสิ่งที่ต้องการ และรักษามันไว้ได้ในระยะยาว
มันให้ความรู้สึกเหมือนกำลังปรับให้เหมาะกับ เป้าหมายที่ผิด คือพยายามผ่านการคัดกรองให้ได้มากที่สุด ทั้งที่ไม่เกี่ยวกับความเหมาะสมกับหลายตำแหน่งเลย
สำหรับฉัน ประสบการณ์ที่ประสบความสำเร็จที่สุดทั้งตอนหางานและตอนทำงาน คือมีคนรู้จักในบริษัทจนข้ามขั้นคัดกรองเรซูเม่เบื้องต้นไปได้เลย แล้วส่งเรซูเม่กับจดหมายสมัครงานที่ปรับมาอย่างละเอียด โดยมีคนที่รู้จักฉันช่วยหนุนหลังอย่างจริงจัง
ฉันรู้ว่าไม่ใช่ทุกคนจะมีอภิสิทธิ์แบบนั้น แต่ฉันก็พยายามสร้างเครือข่ายอย่างต่อเนื่องทั้งในและนอกงาน และโดยรวมแล้วมันช่วยคัดกรองงานแย่ ๆ หรือบทบาทที่ไม่เหมาะออกไป ประหยัดเวลาของทั้งสองฝ่ายได้มากทีเดียว
ฉันกำลังหางานมาหลายเดือนแล้วโดยแทบไม่มีผลลัพธ์ ทุกวันต้องเข้าไปเช็ก LinkedIn กับ Indeed แบบแมนนวลเพื่อหาตำแหน่งใหม่ ดูคุณสมบัติ แล้วตรวจว่าทักษะและประสบการณ์ของฉันตรงไหม
กระบวนการนี้ยังช่วยให้เข้าใจด้วยว่าควรเสริมตรงไหนเพิ่ม จากนั้นก็ไปศึกษาบริษัทและอุตสาหกรรม พอถึงจุดที่ฉันสนใจ คิดว่าเข้ากันได้ดี และพร้อมจะสมัคร ผู้สมัครก็มีไปแล้วหลายร้อยคน LinkedIn แสดงจำนวนผู้สมัคร
ตอนแรกก็คิดว่า “เพิ่งผ่านไปแค่ 3 วันเอง เรื่องแบบนี้เกิดขึ้นได้ยังไง?” แต่เหตุผลก็คือสิ่งนี้เอง
การพยายามโน้มน้าวตัวเองว่าบริษัทนี้ใช่ แล้วสุดท้ายไม่ได้ไปต่อ มันเป็นรถไฟเหาะทางอารมณ์ที่เจ็บมาก และต้นทุนตรงนั้นตกอยู่กับผู้สมัครล้วน ๆ อย่างน้อยก็เป็นเรื่องธรรมชาติที่จะอยากเลื่อนงานนั้นออกไป จนกว่าจะมั่นใจว่ามีโอกาสในระดับที่พอควบคุมได้จากฝั่งตัวเอง
ผลลัพธ์ไม่ได้ขึ้นอยู่กับผลงานและการกระทำของตัวคุณเองทั้งหมดเลย มีตำแหน่งที่ไม่มีงบ บริษัทที่กำลังหยุดรับคน หรือประกาศที่มีผู้สมัครซึ่งเกือบได้แน่นอนอยู่แล้วและรอเพียงข้อเสนออย่างเป็นทางการอีกมาก
ฉันมองว่าความพยายามที่ใช้ไปกับการศึกษาก่อนสมัคร ควรเป็นฟังก์ชันของทั้งความพยายามที่นายจ้างเรียกร้องจากผู้สมัครเพื่อให้ได้ไปต่อในขั้นถัดไป และระดับความเคารพที่นายจ้างมีต่อผู้สมัคร ความพยายามที่ต้องใช้สำหรับการสัมภาษณ์ทางโทรศัพท์นั้นต่ำมาก และความเคารพก็แทบจะเป็นศูนย์
บางคนคิดค่าบริการแบบเหมาจ่ายต่อ 1 ใบสมัคร และบางคนก็รับเป็นเปอร์เซ็นต์จากเงินเดือนก้อนแรกของงานใหม่
https://www.reddit.com/r/slavelabour/search/?q=job+applicati...
ถ้าจะให้คำแนะนำทั้งสองฝ่าย ก็อย่าใช้ บอร์ดประกาศงาน เลย ใช้เว็บไซต์ของตัวเองจะดีกว่า
จำรายละเอียดไม่ได้แล้ว แต่หลังจากนั้นฉันก็เลิกมองมันอย่างจริงจัง
ทุกคนกดปุ่มสมัครไปก่อนมั่ว ๆ เพื่อดูว่าจะมีอะไรติดบ้าง ทำให้อัตราส่วนสัญญาณต่อสัญญาณรบกวนเละเทะมาก ถ้าบริษัทมีหน้ารับสมัครงานบนเว็บไซต์ของตัวเอง ก็ควรให้ความสำคัญกับทางนั้นก่อนเสมอ
เวลาเห็นโพสต์แบบนี้ ฉันมักจะคิดว่าไม่ฉันก็พวกเขาต้องกำลังทำอะไรผิดอยู่แน่ ๆ
ฉันไม่เคยเขียนใบสมัครเป็นร้อยฉบับ เวลาหางานฉันจะหาข้อมูลบริษัทไม่กี่แห่งที่อยากทำงานด้วย แล้วเขียนใบสมัครไม่กี่ฉบับอย่างตั้งใจ ซึ่งโดยมากอย่างน้อยก็จะได้การตอบกลับ และส่วนใหญ่ก็มักได้คำเชิญสัมภาษณ์
แน่นอนว่าฉันมีวุฒิปริญญามหาวิทยาลัย แต่หลายคนที่นี่ก็น่าจะมีเหมือนกัน ฉันอาศัยอยู่ในเมืองขนาดกลางในเยอรมนี ซึ่งถ้าเป็นแบบนั้นก็ดูไม่น่ามีเหตุผลว่าการหางานจะง่ายขึ้นแทนที่จะยากขึ้น
ตอนนี้ไม่ได้ขาดแคลนแรงงานเทคนิคที่มีทักษะอยู่เหรอ? มาตรฐานการรับคนของหลายที่ให้ความรู้สึกเหมือน “ใครก็ตามที่เดินเข้าประตูมา” พวกเราก็น่าจะรับแทบทุกคนที่เขียนโค้ดได้ เชื่อถือได้ และทำงานเป็นทีมได้
ลองนึกภาพว่าคุณเป็นวิศวกรที่ดี คุณสมัครบริษัทหนึ่งไป แต่มีคนอื่นอีก 200 คนสมัครเหมือนกัน บริษัทอาจต้องลบบางใบสมัครทิ้งแบบอัตโนมัติ ทำให้คุณโดนเกณฑ์ heuristic ง่าย ๆ เล่นงาน หรือโชคร้ายจนเขาลบครึ่งล่างทิ้งโดยไม่แม้แต่จะดู แล้วเรซูเม่ของคุณก็ลงถังขยะไป
จากนั้นจะทำยังไงต่อ? สุดท้ายก็กลายเป็นคำถามว่าจะใช้เวลามากในสัปดาห์หน้าเพื่อทำขั้นตอนนี้ซ้ำอีกไหม หรือจะลดมาตรฐานลงแล้วสมัครเพิ่มอีก 200 บริษัท
งานส่วนใหญ่ไม่ได้ถูกประกาศแบบเปิดกว้างขนาดนั้น แต่เป็นแนวเพื่อนบอกต่อกันว่า “รู้จักใครที่ทำสิ่งนี้ได้ไหม”
ถึงแม้ว่าคุณจะเคยทำสิ่งนั้นมาแล้วเมื่อ 5 ปีก่อนก็ตาม และในหนังสือรับรองก็ต้องไม่มีข้อความเชิงลบที่ถูกห่อหุ้มให้ดูเหมือนคำชมเชิงบวก