ประสบการณ์หางานในต่างประเทศ รูปแบบ Virtual Interviews ของ Introverts Software Engineer สุดมึน

Thanaphoom Babparn
16 min readOct 9, 2022

--

ตัวอย่าง Sheet เก็บประวัติ Job application

สวัสดีครับคุณผู้อ่านทุกท่าน ขอบคุณทุกคนที่กดเข้ามาอ่านกันอีกครั้ง หลาย ๆ ท่านที่ติดตามผมมาซักพักมักจะเจอกับ “ประสบการณ์การสอบ X” แต่มาบทความนี้ ไม่ใช่อย่างนั้นครับ ผมจะมีอะไรที่แตกต่างออกไปนิดหน่อย อย่างที่ผมได้เคยบอกไว้ในบทความ [รู้อะไรไม่สู้รู้งี้ ตอนที่ 2] กรณีศึกษาและคำแนะนำสู่บุคคลที่เริ่มต้นในสายงาน Software Engineer ซึ่งได้เกริ่นว่าผมจะลงบทความที่เกี่ยวกับการหางานต่างประเทศโดยเฉพาะ มีแผนจะลงในช่วงเวลาปีใหม่ 2023 แต่เนื่องจากว่ารอไม่ไหว เดี๋ยวลืมก่อน ก็เลยขอลงมันซะตอนนี้เลยละกันครับ 😆

ดังนั้นบทความนี้จะมาเล่าเรื่องราวการหางาน และไปทำงานต่างประเทศ ในเวอร์ชันของตัวผมเอง ผมคิดว่าทุกคนสามารถเข้าถึงได้ เพราะถ้าคุณพื้นฐานดีกว่าผม คุณไปได้ไกลกว่านี้มาก ๆ ซึ่งผมไม่ใช่คนเก่งแบบ Born to be ในสายงานซักเท่าไหร่ Wanna be ก็ยังเหนื่อยลากเลือดอีกตะหาก หากทุกคนพร้อมแล้ว คาดเข็มขัด แล้วเริ่มอ่านสิ่งที่ผมจะเล่าได้เลยครับ

Disclaimer

  • เนื้อหาอ้างอิงจากประสบการณ์ของผมเท่านั้น
  • เป็นประเทศไทยโดยตรงแล้วบิน
  • ไม่มีการ Referral เพราะไม่อยากให้คนอื่นตอบคำถามของผม
  • ไม่มีการ Mock Interviews กับใคร ไม่อยากรบกวนเวลาคนอื่น เพราะเวลาที่เหลืออยู่บนโลกของทุกคนมีค่ามาก ๆ แต่พูดคนเดียวก็มีนะ
  • การ Interview ส่วนใหญ่อยู่ใน EMEA + UK + Japan ไม่มีประสบการณ์สัมภาษณ์ในส่วนของ USA, Canada, Australia, Singapore ดังนั้นขอบอกไว้ก่อนว่าผมไม่มีให้ แนวทางมันอาจจะคล้ายกัน แต่กฎการจ้างงานคงจะต่างกันนะครับ

148 applications | 12 Responsed | 11 Rejection | 1 Offer

TL;DR

และแน่นอน ถ้าบทความยาว ผมมี section นี้สำหรับคนมีเวลาจำกัดเสมอ

Timeline ที่เกิดเรื่องราว => มกราคม 2022 (2565) ถึง มิถุนายน 2022 (2565)

Profile คร่าว ๆ ของผม

  • การศึกษาสูงสุดคือจบ ปริญญาตรี วิศวกรรมคอมพิวเตอร์ จาก ม. ในคลองหก
  • ประสบการณ์ทำงานรวมตอนเริ่ม Timeline คือ 2–3 ปี (ครบ 3 ปีตอน May 2022)
  • ประสบการณ์ผสม Node.js + Java/Kotlin as Backend developer
  • ชอบเรียนรู้อย่างอื่นด้วยนอกจาก Backend Development อย่าง Cloud Computing, Kubernetes, SRE, and etc.
  • I actually can use English in daily life. Normally my grammar might be incorrect.
  • ผมไม่ใช่คนเก่ง แต่ผมเป็นคนบ้า

ผลลัพธ์

My application & Interviews result

จำนวน Fail ในนั้นมี Google, Amazon, Microsoft (🥹 แอบเสียใจนะครับที่ไม่ผ่าน)

General Hiring Process

  1. Online Assessment (OA) ทำโจทย์บน Platform เช่น Hackerrank, CodeSignal, Codility, etc.
  2. Talent discussing (Talent Sourcer or Hiring Manager) คุยเกี่ยวกับประสบการณ์และความเหมาะสม
  3. Phone Interviews
  4. Onsite Interviews

Type of Technical Interviews (Phone + Onsite)

  • Data Structures & Algorithms Questions ด้วย Live Coding + ปากเปล่า
  • System Design Interview
  • Low-Level Design Interview (Object Oriented Design)
  • Building Technical Tasks (Coding Platform หรือ Remote เข้า Server)
  • Finding the bugs in the code + How to optimize
  • Design Pattern Implementation + Refactoring Code
  • Take Home Assignment (ซึ่งผมจะได้เจอ ถ้าไม่ตกรอบ HR Screen ที่นึงไปก่อน)

Type of Behavioral Interviews

  • Role-Play Activity
  • Leadership and Visions of the company

สารบัญ

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

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

เริ่มต้นเข้าสู่เนื้อหาหลัก

สำหรับหัวข้อนี้ จะเล่าถึงความเป็นมา และจุดเริ่มต้นว่าก่อนที่จะได้ไปทำงานต่างประเทศมีอะไรเกิดขึ้นบ้าง โดยอ้างอิงจากโชคชะตาของผม และคัดกรองออกมาเป็นตัวอักษร เรามาเริ่มกันเลยดีมั้ยครับ 😁

จุดเริ่มต้นของเรื่องราว — Recruiter จาก Google ทักมาใน LinkedIn

Time: มกราคม (January) 2022

ช่วงบ่าย ๆ วันนึงเกือบกลางเดือนธันวาคม ในขณะที่ผมกำลังทำ Tasks ต่าง ๆ ตามปกติ รวมถึงการปรับแต่ง Configuration ต่าง ๆ ของการ Deployment นั้น ได้มี Recruiter ทักมาใน LinkedIn ในตอนแรกนั้น ผมไม่ได้สนใจอะไร เพราะโดยปกติจะมี opportunity ใหม่ ๆ ยื่นมาเสมอ เพียงแต่ 90% ที่ผมจะไม่ถูกใจ และถ้าเกิดว่าผมไม่อยากจะย้ายงานก็จะเป็น 100% ที่ผมจะไม่ตอบ ทิ้งไว้ซัก 2 ชม. แล้วมาเปิดอ่าน ก็ทำให้ตัวเองรู้สึกใจเต้นตุบ ๆ มากที่สุด เพราะ Recruiter คนนั้นมาจาก Google branch ใน Asia “ใช่ครับ คนติดตามทุกคนรู้ ผมชอบ Google มาก” ดังนั้นจึงมีการพูดคุยซักพัก และการ Interviews แบบปากเปล่ากับ Recruiter จากนั้นก็ได้รับโอกาสในรอบ Phone Interview ในเดือนมกราคม

แต่วันนั้นผมทำได้ไม่ดี ผมพูดได้เต็มปากเลยครับ ว่าผมทำได้ไม่ดี เพราะนี้คือการ Interviews oversea ครั้งแรกของผม ไม่มี Mock Interview มีแต่ Leetcode การสัมภาษณ์การพูดก็ลนไปหมด ฟังภาษาอังกฤษก็ไม่ค่อยชัด ดังนั้นผลลัพธ์ที่ได้เลยเหมือนคนอกหัก

Result: Fail ❌

  • นี่คือครั้งแรกที่เจอ Technical Interviews เวอร์ชันที่ผมต้องพูดไปด้วย โค้ดดิ้งไปด้วย
  • ผมใช้เวลาช้าเกินไป ในการตัดสิน Solution ซึ่ง Google ต้องตัดสินเฉียบขาด มีเหตุผล และสามารถไปถึงการ Optimize ได้
  • Overall โดยรวม เขาบอกว่าผมมีความสามารถทาง Technical แต่ว่าอาจจะต้องไปศึกษา Data Structures & Algorithms เพิ่มเติม
  • จากกรณีนี้ ผม Failed Phone Interview round ผมไม่สามารถ Apply Google ได้ใน next 6 months

Sometimes it’s just a bad day.

ประโยคด้านบน เป็นประโยคคู่ใจของผมเวลาปลอบตัวเองเวลาเกิดเรื่องไม่ดี ใครจะเอาไปใช้ ผมก็ไม่หวงครับ

โอกาสครั้งที่ 2 — Amazon

Time:
- OA & Phone Interview & Preparation Session — กุมภาพันธ์ (February) 2022
- On-site Interview — มีนาคม(March) 2022

หลังจากที่ Failed ที่ Google นั้น ผมก็รู้สึกว่า ไหน ๆ ตัวเองก็เตรียมตัวเรื่อง Technical Interviews มาขนาดนี้แล้ว ก็ลอง Apply บริษัทอื่น ๆ ไปด้วยเลยละกัน

ซึ่งผมก็อยากไป Amazon อยู่เหมือนกัน ดังนั้นก็เลยลองสมัครใน Job Portal โดยตอนนั้นที่สมัคร ผมวางไว้ที่ UK, Germany, Spain, Canada คิดไว้ว่า ท้ายท่ีสุดเราจะเลือกสัมได้แค่ที่เดียว จาก 4 ที่นี้ แต่เอาเป็นว่า ให้เขาตอบรับมาก่อนดีกว่า 55555555

แต่หลังจากนั้นก็ได้รับ Email จาก Amazon หัวข้อ Invitation ให้ทำ Online Assesments ซึ่งผมก็ได้ใช้วันเสาร์ ในการทำ Online Assesments ก็ผสมทั้ง Coding Exercise + System Design + Playrole หลังจากนั้นก็ได้รับคำเชิญให้ไปในลำดับถัดไปตามลำดับด้านล่าง (ทั้งหมดทำผ่าน Amazon Chime)

  • Phone Interview รอบนี้มีประสบการณ์จากครั้งที่แล้ว ก็เลยแบบรักษาเวลามาก ๆ พูดก่อนว่าเราคิดอะไรในหัว จากนั้นเขียนโค้ดพร้อมอธิบายไปด้วย หยุดพักให้ความคิดเห็นว่าทำไมเราถึงเขียนแบบนี้ สุดท้ายจบด้วยการ Dry-run code ผลลัพธ์เป็นที่น่าพอใจของ Interviewer มาก
  • อันนี้พิเศษของที่ผมสัม Amazon เหมือนเขามี Session เชิญ Candidate จากหลายที่มารวมกัน เพื่ออธิบาย Overview ของ Onsite Interview ให้ฟัง รวมถึงความคาดหวัง
  • Onsite Interview เป็นเกือบ 5 ชั่วโมงที่เหนื่อยมาก ๆ ครับ โดยผมได้รับ
    - 1 Data Structures Interview : การจัดการ Data ธรรมดา (Normal)
    - 1 Algorithms Interivew : ผมจำได้ขึ้นใจ เพราะผมได้ Dynamic Programming เรื่องที่ผมกากที่สุด (โอกาสออกน้อยมาก ๆ ก็ยังโผล่มาได้)
    - 1 System Design Interview : บอกไม่ได้ แต่ให้ Design ใน scale region
    - 1 Low-Level Design Interview : บอกไม่ได้ แต่เป็นการออกแบบ Tools ในองค์กร

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

ในไม่กี่วันให้หลัง ผลก็ออกมาว่าผมไม่ผ่านรอบ Onsite Interview กับ Amazon ฝั่งผมก็ได้ขอบคุณ Recruiters ที่ทำงานร่วมกับผม ที่ให้โอกาสผมสัมภาษณ์ รวมถึงถามเรื่อง Cooloff period เช่นกัน ซึ่งเป็น Onsite ดังนั้น Cooloff คือ 1 ปี

Result: Fail ❌

  • จากกรณีนี้ ผม Failed Onsite Interview round ผมไม่สามารถ Apply ทุกอันในเครือ Amazon เช่น Amazon, AWS, Audible, etc ได้ใน 1 ปี
  • เป็นครั้งที่ได้ Onsite Interview ครั้งแรกในชีวิต เหนื่อยมาก ๆ เลยครับ มันติดต่อกันหลายชั่วโมงมาก ๆ
  • ผมมองว่าครั้งนี้ผมเรียนรู้เยอะมาก ๆ เลยครับ ทั้งวิธีการพูดยังไงให้คนเข้าใจมากขึ้น การเรียงประโยคแบบใหม่ ๆ ให้เขาเข้าใจมากขึ้น ทำไงได้ ผมคะแนนสอบอังกฤษไม่มีซักอัน 5555555 TOEIC ก็ไม่ได้สอบ

หลังจากนั้นรู้สึกว่าใช้โอกาสไป 2 ครั้งแล้ว ยังไม่ได้เลย รู้สึกตัวเองกากมาก ๆ คนที่รู้จักผมจะรู้เลยว่า ผมชื่นชอบ Google (Dream job เลยก็ว่าได้) แต่ก็สนใจใน Amazon/Microsoft/Apple/Netflix/Uber พอไม่ผ่าน 2 ตัวที่ว่าติดกัน มันทำให้ผมเริ่มดูถูกความสามารถตัวเองอีกครั้ง ว่าเรามันไม่เก่งพอรึเปล่านะ กลายเป็นว่าผมมองว่ามันโคตรไกลเกินเอื้อมของผมไปมาก ๆ เลย ถ้าเต็ม 7/10 คะแนนคือ average ของคนใน Big Tech ผมให้ตัวเอง 1/10 ไปเลยในตอนนั้น จิตตกมาก

แต่ก็นั่งจดเอาไว้ว่าตรงไหนเราทำผิดพลาด ตรงไหนเราเล่าเรื่องไม่ดี สารส่งไปไม่ถึง เราพูดแบบนี้แล้วเขาเข้าใจแบบไหน แล้วก็ปลอบใจตัวเองด้วยวลีสุดฮิตของตัวเอง

Sometimes it’s just a bad day. (2nd)

คราวนี้ก็คิดว่าจะหาบริษัทแบบไหนที่ Support เรื่อง Work Visa + Relocations ได้ สรุปคือตอนนั้นยอมแพ้ในปี 2022 ไปแล้วครับ แล้วจะรอแก้มือใหม่กับปี 2023 ในการหาโอกาสไปทำงานต่างประเทศ 🥲

เริ่มคิดวางมือหางานต่างประเทศในปีนี้ ของปี 2022

[หมายเหตุ] ถึงตรงนี้ผมเริ่มคิดถึงเรื่องบ้าน คอนโด หรือเรื่องรถด้วย หากผมลงมือซื้อ, ผ่อน, กู้, ทำสัญญาอะไรต่าง ๆ ในช่วงนี้ จะทำให้ผมขยับตัวหลังจากนี้ยากขึ้นมาก ๆ ซึ่งผมขอบคุณตัวเองมากที่ยังไม่ได้ลงมือทำลงไป

จุดเริ่มต้นความบ้าคลั่ง

Time: เมษายน (April) — มิถุนายน(June) 2022

หลังจากที่ตัดใจไปแล้ว แต่ด้วยความที่ว่า มันเคยชินตอนนั่งไล่อ่าน Job Descriptions เพื่อดูว่าแต่ละ Company เขาใช้ TechStack แบบไหน มีตัวไหนที่มันใหม่ หรือเรายังไม่รู้อีกบ้าง แล้วก็ไปสะดุดกับที่ที่นึง ที่เป็น E-Commerce ชื่อดังใน Germany และ HQ อยู่ USA มีข้อความนี้ปรากฎ “Relocations supports” ก็เลยลองสมัครดู และได้รับการตอบกลับในวันต่อมา รวมถึงการนัด HR Screening Interview ใน 2 วันถัดไป

ทั้งนี้ทั้งนั้น ผลลัพธ์ในครั้งนี้ ก็ Failed ตั้งแต่รอบ HR เพราะว่าสิ่งที่เขาต้องการคือ

  • SWE ที่คุยกับลูกค้าโดยตรง (ซึ่งตอนนั้นผมเคยแต่รับจาก BA/PM/SQ Lead) ไม่ใช่คนดู Task ใน JIRA แล้วมาทำ
  • เขาต้องการประสบการณ์จากคนที่มี Product based mindset มาเข้าบริษัท (ซึ่งในช่วง 3 ปี ผมทำแต่ IT Servicing/Tech Consult company มาก่อนทั้งนั้น)
  • SWE ที่รับ requirements โดยตรงจาก clients ไปจนถึงการดู E2E, การทำ deployment ไปถึง productions ด้วยตนเอง (นี่แหละคือ SWE ในอุดมคติของผมเลย)
  • เข้าใจ SDLC อย่างแท้จริง ให้ความสำคัญกับลูกค้ามาก่อน แม้ว่าผมจะมีประสบการณ์ที่ Support DX ของทีม แต่ก็ไม่ตอบโจทย์สำหรับเขา

ส่งผลให้ในรอบนี้ผมเลย Failed อีกครั้ง ❌ แต่ผมไม่ได้รู้สึกเจ็บมากนัก อาจจะเพราะผมดันอยู่ในโหมดคนหม่นจากรอบก่อน ๆ ไปแล้วก็ได้

แต่ก็ดันกลับมาคิดว่า เอ๊ะ แบบนี้ Resume ของเราก็พอใช้ได้นี่นา ก็ถ้าเรายังสู้กับ FAANG level ตอนนี้ไม่ได้ (MATANA มั้งนะตอนนี้) ก็เอาเป็นบริษัทที่เขาทำอะไรที่สนใจ และ Support relocations ก็ได้นี่นา ก็เลยจัดการเริ่ม Career Portal application ไปเลย โดยมีแผนการ และความเข้าใจในตัวเอง เป็นผลออกมาด้านล่างตามนี้ (ทั้งนี้ทั้งนั้น นี่คือแผนของผม)

  • Apply 5 roles/day (ถ้ามากกว่านั้น ไม่เป็นไร)
  • Priority: UK > EU > Canada > Singapore > Australia > Japan
  • ตอนนี้ยังอยากเป็น Java/Backend Developer อยู่
  • Industry ที่สนใจ: FinTech, Retail นอกจากนั้นก็ยัง apply อยู่ดี

ผมเรียกตัวเองช่วงเวลานี้ว่า ช่วง Bloodlust ❤️‍🔥 🤪 ความหิวกระหาย ความบ้าคลั่ง ถาโถมผมเข้ามา ประกอบกับก็ต้อง Perform ตัวเองให้ดีในงานประจำเช่นกัน เป็นช่วงที่ความเครียดถาโถมเข้ามาสูงมากขึ้น แต่ก็ยังพอจัดการอารมณ์ความเป็นมนุษย์ได้ เพราะผมทำให้ตัวเองเครียดอยู่แล้วจนชิน 😅 ล้อเล่งงงง

นี่คือภาพส่วนนึงของ Sheet ที่ผมบันทึกไว้ว่า ผมสมัครที่ไหนไว้ ประเทศอะไร สมัครเสร็จรึยัง เขาตอบกลับหรือปล่อยเท ผ่านหรือไม่ผ่าน โดยจากช่วงเวลาทั้งหมดนั้น ผมได้โอกาสในการ Interview จากต่างประเทศแบบ Virtual และรัน Parallel process ไปพร้อม ๆ กัน และผมต้อง Handle Concurrency ที่ฝั่งตัวผมในร่างมนุษย์เอง แทนที่จะเป็นตัวโปรแกรม หรือโค้ด Backend 5555555555

ด้านล่างคือภาพบรรยากาศตอนที่ผมซื้อไก่ทอดมากิน โดยที่ไม่รู้ว่าในอนาคตกำลังจะโดดเชือดจาก Interviews ข้างหน้า 🥺

ดูซีรีย์แล้วสะดุ้ง เพราะเมล์แจ้งผ่าน OA ของ Microsoft

หลังจากที่มีคิวสัมภาษณ์กับบริษัท FinTech, Retails และบริษัทที่ผมสนใจ ตามรายชื่อด้านบนแล้ว มีอีเมล์เข้ามาในช่วงที่ผมกำลังพักผ่อนสมอง และทำให้ผมรู้สึกเลือดสูบฉีดอีกครั้ง

ภาพประทับใจส่วนนึงเมื่อได้รับ Result ของ Microsoft On-site interviews แม้มันจะ Failed ❌ ก็เถอะนะ

  • จากกรณีนี้ ผม Failed Onsite Interview round ผมไม่สามารถ Apply role นั้น ของทีมนั้นได้ใน 1 ปี แต่ว่า Microsoft การ Interview จะเป็นทีมนั้น ๆ แปลว่าเราสามารถ Interview กับทีมประเทศอื่นได้ (แต่ที่อื่นไม่ตอบรับผม 🥲)
  • เป็น Onsite Interview ที่ผมมั่นใจในระดับ 75/25 เลย ซึ่งผมคิดว่าทำได้ดีแน่ ๆ ในทุก round แต่รู้สึกว่าน่าจะยังไม่ตอบโจทย์กับสิ่งที่เขาตามหา และผมก็ไม่ชอบการเซ้าซี้มากนัก ก็เลยคิดว่า เราอาจจะทำไม่ดีส่วนไหน แล้วเราดันคิดไปเอง ก็เลยโดน Red Flag เข้าตรงไหนซักที่

เกือบได้ไป Germany แล้วแต่ตกรอบ Behavioral Interviews

เป็น FinTech ที่รู้จักมาก ในระดับโลกเลยก็ว่าได้ ซึ่งผมสมัครที่ Germany branch เป็นที่ที่ผมชอบและจำได้ตราตรึงใจมาก ๆ เลย เพราะผมชอบการสัมภาษณ์ Onsite ที่นี่มาก ๆ เพราะมีอะไรแตกต่างไปมาก ๆ เลย

  • Remote เข้าเครื่อง Instance เพื่อทำ Tasks ที่ใช้ใน Backend ระหว่างนั้นก็พูดไปด้วย ถามไปด้วยว่า โดยปกติแล้วเรียกใช้ Service นี้ยังไง คือเหมือนคุณกำลังเข้าช่วง Probation period ในระยะเวลา 1 ชั่วโมงเลยครับ
  • ผมสามารถแจ้ง edge cases ได้ พร้อมทั้ง case ที่จะเกิด NPE และถ้ามันเกิด เราจะทำยังไงกับมัน
  • สอบถาม Technical เพิ่มเติม พร้อมทั้งผมสามารถแนะนำด้านที่ดีขึ้นได้

แต่แม้ว่ารอบ Technical จะสนุกสนานมากเพียงใด ผมกลับต้องมาตกม้าตายในรอบ Manager (Behavioral Interviews) ไปซะเฉย ๆ ผมใจเจ็บมาก ๆ เลยครับ ยิ่งกว่าอกหักอีก 💔

กึ่งนึงอาจจะเป็นเพราะ ผมพูด Eng งู ๆ ปลา ๆ ด้วยรึเปล่านะ อาจจะใช่ก็ได้ครับ รอบนี้เลยได้บทเรียนที่ดีมาก ๆ เลยว่า ถ้าทำ Technical เก่งแค่ไหน การสื่อสารไม่ได้มาตรฐานของเขา เขาก็ไม่เอา ผมไม่โทษใครนะ ผมโทษตัวเองทุกรอบอยู่แล้ว

ฝั่ง HR เขาดีมากเลยนะครับ ผมติด Cooloff 6 เดือน ก็จริง แต่เขาบอกว่า รอบ Technical คุณดีเกิน Position ไปมาก ในช่วง 6 เดือนนี้ ลองเพิ่มประสบการณ์ด้านการสื่อสารดู แล้วกลับมาใหม่ได้เลยทันทีโดยไม่ต้องมี OA อีกแล้ว ผมก็ขอบคุณเขาที่ให้ความช่วยเหลือผมขนาดนี้ แต่ผมอกหักมาก ๆ เลย 😢

โอกาสสุดท้ายแล้ว เหลือ Onsite Interview ที่ Japan

Failed HR Screening: 2
Failed Online Assesment: 1
Failed Technical: 4
Failed Behavioral: 1
Amount: Failed 8 ❌

ผมเริ่มถอดใจอีกครั้ง เพราะว่าบริษัทต่างประเทศโซนยุโรป เขาต้องการคนที่คุยกับลูกค้าโดยตรงทั้งนั้นเลย ซึ่งผมเป็น Technical guy แบบจ๋ามาก ๆ (ก็คิดไว้ว่าตัวเองจะเป็น Individual Contributor อยู่ก่อนแล้วนี่นา) ก็เลย Failed จากหลาย ๆ ที่ ไม่ว่าจะรอบ HR Screening, OA, Onsite, Behavioral

เป็นเหมือนช่วงพักให้ตัวเองครับ ผมผ่าน OA แล้วล่ะ แต่ว่าเป็นช่วง Golden week ของ Japan ผมก็เลยมีช่วงเวลาให้หายใจ

ครั้งนี้การ Interviews ของผม ผลลัพธ์ออกมาได้ดีมาก ๆ เลยครับ ผมรู้สึกขอบคุณตัวเองมาก ทั้ง ๆ ที่ตัวคำถามทุกรอบ ไม่ใช่ง่าย ๆ เลย แต่ผมก็ฟันฝ่ามันมาได้จนได้ 🥳 ✅

ด้านล่างนี้เป็น Feedback ที่ผมได้รับในแต่ละรอบ ซึ่งผมเก็บเอาไว้ใน Google Doc แล้วมาวิเคราห์อีกเช่นเคย ว่าผมทำได้ดีส่วนไหน และส่วนไหนต้องดูเพิ่ม

ตัวอย่าง Feedback ที่ผมได้รับ และจะนำไปปรับปรุงเพิ่มเติม

รับ Offer เตรียมตัว Relocate

คนที่เขาเก่งกว่าผมมาก ๆ ถึงตรงนี้ เวลาสัมอาจจะมีตัวเลือกมากมาย แต่ผมเป็นคนไม่ค่อยเก่งมากมายนัก เลยมีโอกาสนี้แค่ที่เดียว ก็ทำการตอบรับ offer ไป

หลังจากนั้นก็ทำการ KT ให้กับน้อง ๆ พี่ ๆ ในทีมให้เรียบร้อย ในช่วงเวลาเดียวกัน ก็ดำเนินกับช่วงการทำ Working VISA ไปพร้อม ๆ กันเลย

ถึงตรงนี้ การผจญภัย อาจจะเพิ่งเริ่มต้นขึ้นก็ได้ครับ ผมไม่รู้ว่าจะเรียกตรงนี้ว่า Grand Line หรือการฝึกเพื่อเข้า New World

ยังไงก็ตามแต่ นี่คือบทชีวิตและการผจญภัยของผมที่ผมได้ตัดสินใจลงไปแล้ว ✌️

แผนการและการเตรียมตัว

Goal และ Deadline

  • Goal => เป็น SWE Overseas
  • Goal Best case => Big Tech
  • Goal Average case => Company ที่ตัวเองสนใจ ⬅ ผมอยู่ตรงนี้
  • Goal Worst case => Company ที่ทำไปก่อน
  • Deadline => จบปี 2022 เท่านั้น

Resume Preparation

ในการเตรียม Resume นั้นท่องไว้ในหัวเลยครับ

  • ไม่มี Resume อันเดียวครอบจักรวาล (แต่บางทีผมก็ไม่เปลี่ยนนะ บางทีเหนื่อย)
  • Resume ต้องเปลี่ยนเกือบทุกครั้งหลังจากอ่าน Job Description แก้ไขโดยดึงประวัติของตัวเอง และความสามารถมาใส่ให้มากที่สุด
  • ไม่โกหกใน Resume บอกว่าได้ก็คือได้ ถ้าไม่แน่ใจ ไม่ต้องใส่ ไม่งั้นเละ
  • เคยได้รางวัลอย่าง Hackathon ก็ใส่มา ถ้าแค่เข้าร่วม อยากใส่ก็ใส่ แต่ผมแนะนำเอาพื้นที่ไปใส่ประสบการณ์ทำงานมากกว่า
  • Certificate เรียนจบคอร์สผ่าน ใส่ก็ได้ แต่เขาให้ความสำคัญกับ Course ที่มันเป็น Series จาก Platform อย่าง Coursera, edX หรือ Nanodegree ของ Udacity มากกว่า (ถ้ามี) ซึ่งผมก็ตอบไม่ได้มากนัก เพราะผมไม่มี แต่จากที่ลองใส่อันอื่น ๆ แล้วมันรก Resume เลยเอาออก
  • Certificate จากการสอบ ใส่ก็ได้ แต่เหมือนหางานยากกว่าเดิม ซ้ำร้ายเขาอาจจะให้โจทย์คุณยากกว่าชาวบ้านเขาด้วยนะ 😂 โดยส่วนตัวผมเอา Certificate ออกแล้วได้รับการตอบรับง่ายขึ้น
  • ใช้พื้นที่ให้เป็นประโยชน์ เขาให้ความสำคัญกับ Recent role ของคุณมากที่สุด
  • อย่าเสียดายประสบการณ์เก่า ๆ ที่จะไม่ได้โชว์ คัดมาแต่ที่คิดว่านี่คือ Best version ของเรา ดึงมาเลย
  • ทำ Resume ให้เป็น Sub-part ของ LinkedIn ของคุณ ถ้าเขาอยากดูคุณแบบเต็ม ๆ ให้ใส่ LinkedIn ไว้ใน Resume เดี๋ยวเขาไปดูเอง
  • LinkedIn <=> Resume ต้องคือคุณ ไม่ใช่ใครอื่น ต้องมีเค้าโครงประสบการณ์ Timeline ที่ตรงกัน

คำแนะนำการเตรียม Resume จาก Google ครับ

หลังจากทำเสร็จแล้ว ผมใช้ Resume Worded ในการช่วย Scan ให้ผ่าน ATS

Resume Example (เรื่องรูปตัวเอง บางที่ให้ความสำคัญ สำคัญเรื่องมีกับไม่มีครับ)
ส่วนตัวผมใช้ Template 3 of 12: Senior Software Engineer Resume Example

List ของ Action Verbs เอาไปใส่ตามสถานการณ์ อย่าใช้คำเดิมบ่อย ๆ ใช้มากสุด 2–3 ครั้งเท่านั้น

Job boarding websites

  • LinkedIn => ตัว LinkedIn คุณสามารถที่จะตั้ง Notifications ตามเงื่อนไขที่คุณสนใจไว้ได้ด้วย ดังตัวอย่างด้านล่างที่ผมนำมาแสดง
  • Relocate.me => ชื่อบอกเลยครับ มีแต่งาน Relocate แต่เขาจะรับเรามั้ย นั่นอีกเรื่องนึง 5555555 สิ่งที่ผมชอบมากที่สุดใน Relocate.me คือ Relocation Tip ดังเช่นตัวอย่างด้านล่าง
ตัวอย่างของ Tip for relocating to Germany
  • The Pragmatic Engineer Job Board => เป็นที่ที่น่าสนใจครับ แต่ว่าผมใช้เป็นแหล่งอ้างอิงในการหา Position และจะนำไป Apply ที่ Career Portal

Technical Interviews round prep [My strategy]

  • สำหรับคนที่ใหม่มาก ๆ สำหรับ การ Interviews ตัวผมนั้นเริ่มต้นที่ กลับไปทวน Data Structures & Algorithms คร่าว ๆ จากตอนเรียน ซึ่งเป็น ภาษา C แต่ทางเลือกอื่น ๆ ของคนที่ไม่ได้เรียนสาย CS ผมแนะนำเล่ม Grokking Algorithms ซึ่งผมก็อ่านเล่มนี้เหมือนกันครับ สามารถเข้าไปอ่าน Free ผ่าน Websites ได้ครับ ซึ่งจะเป็น Intro ของ Algorithms ในนั้นถูกเขียนด้วย Python แต่โดยส่วนใหญ่เป็นการอธิบาย Concept ผมว่าเข้าใจง่าย และสรุปได้ดีมาก เพราะมันมีรูปเยอะมาก และเป็นรูปที่ดีด้วย (พยายามเปลี่ยนเป็นภาษาที่ตัวเองถนัดครับ)
  • Element of Programming Interviews (EPI) — (ของผมใช้ Java) อันนี้แล้วแต่คนครับ แต่สำหรับผมรู้สึกว่าอันนี้ก็เปิดโลกผมเหมือนกัน เช่น Java API ต่าง ๆ สามารถเอามาใช้ในโจทย์ได้ โดยที่ให้ลืมเรื่องการใช้ Plain Java ธรรมดา ๆ ที่เร็ว ๆ ใน Leetcode ออกไปก่อน แล้วให้เป็นการเขียนโค้ดที่ทำให้ Interviewers เข้าใจง่าย อ่านง่าย และ Clean มากขึ้น
Physical Book — EPI (Java) ของผม

คราวนี้เริ่มเข้าโหมดฝึกโจทย์กันเลย ซึ่งหลังจากนี้มันมี resources ที่น่าสนใจเกิดขึ้นมาทีหลังจากนี้อีก ผมจะแปะไว้ที่ section ใหญ่อันต่อไปนะครับ

ก่อนเริ่มต้น เรามาปรับ Mindset กันก่อน คุณกำลังเรียนการใช้งาน Data Structures & Algorithms จากการทำโจทย์ คุณเอามันไปใช้ ไม่ใช่จำไปตอบ แม้ว่าบางครั้งมันอาจจะเหมือนจำไปบ้าง แต่การทำ Leetcode ไม่ได้บอกว่า เอ้ย คุณต้องรู้ก่อน แล้วค่อยไปทำ มันไม่ใช่แบบนั้น บางทีคุณก็เรียนจากโจทย์น่ะแหละ

หลัก ๆ ก็ Leetcode น่ะแหละ ซึ่งจริง ๆ มีคนที่เชี่ยวชาญมาก ๆ เยอะเลยครับในไทย ดังนั้นผมจะอธิบายแบบเบา ๆ ฉบับคนไม่ค่อยเก่งด้านทำโจทย์ซักเท่าไหร่นะครับ ออกตัวแรงเดี๋ยวเขินครับ 555555

ด้านบนคือ Log และวันเวลาที่ผมทำโจทย์ไว้ รวมถึงนาทีที่ใช้ ทั้งนี้ทั้งนั้น ผมสรุปด้วยภาษาตัวเองให้เข้าใจในแบบของตัวเอง เพื่อ Quick Lookup ในอนาคตครับ

  • ผมเริ่มจาก Top 100 Liked Questions ใน Leetcode ครับผม โดยจะเริ่มจาก Easy => Medium => Hard และแยกแต่ละเรื่องออกไปแก้เป็นเรื่อง ๆ ในตอนแรกครับ เพราะจะต้องทำให้คุ้นชินกับหน้าตาโจทย์ก่อน

การทำโจทย์ง่าย ๆ ไม่ได้ในช่วงแรก ๆ ไม่ใช่เรื่องผิด

  • Blind 75 List เป็น List ที่ได้รับการการันตีจากหลายที่เลยครับ ว่าเป็น List ที่ครอบคลุมเนื้อหาการ Interviews หลัก ๆ มากที่สุด แต่ไม่ใช่ว่าจะออกในนี้เสมอไปนะครับ
  • LEETCODE PATTERNS เป็น Website ที่ผมใช้ และแนะนำกับทุกคน เพราะจะทำให้เราเรียนรู้โจทย์จากการทำ Pattern
  • Tips ผมหัดเขียนโค้ดบน Google Doc หัดใช้ Space นับจำนวน Space (2 ที แปะ แปะ จบตัวแปร แปะ เท่ากับ แปะ) เริ่มจำ API ต่าง ๆ ของ Java ในการ Interview ได้แม่นมากขึ้น ซึ่งผมคิดว่ามันช่วยผมได้มากมหาศาลเลย
  • ACM ICPC | CS32 Technical Interview Prep (Winter 2021) จาก UCLA
  • ACM ICPC | Advanced Interview Prep (Spring 2021) จาก UCLA
  • [Optional] ฝั่งผมมีใช้ Educative และ AlgoExpert เหตุเพราะมันลดราคา แล้วเขาบอกว่ามันดีเหลือเกิ้นนนนนน แต่ไป ๆ มา ๆ ก็ไปจบที่ Leetcode ครับ 5555555
    ตัว AlgoExpert ผมให้เรื่องที่ว่า IDE น่าใช้ มีแบบไม่โชว์สี + mode plain text และเก็บ Solutions ให้เราได้
    ตัว Educative ผมให้น้ำหนักมากกว่า เพราะสอนผมในเรื่อง Coding Interviews ในแบบต่าง ๆ และ System Design Interviews Prep ที่แข็งแกร่งมาก ๆ (ปัจจุบันโดนหนังสือ System Design Interviews แย่งตำแหน่งไปแล้ว)
  • อันนี้ Example แต่ว่าหากเขาไม่ Virtual แล้ว อาจจะตามนี้ แนว ๆ นี้ ซึ่งของผมทำใน Platform ต่าง ๆ ซึ่งจะบอกใน section ถัดไป

System Design Interview round prep [My strategy]

ส่วนใหญ่จะเป็นการอ่านหนังสือ + เขียนไวท์บอร์ดที่บ้าน + ใช้โปรแกรมบน Website และอันนี้อาจจะพิเศษที่ว่าผมเคยสอบ Cloud certificate เลเวลเล็ก ๆ น้อย ๆ มาบ้าง ก็เลยพอมีความรู้เรื่องของ High Level + Architect อะไรอยู่นิดหน่อย ที่ต้องเพิ่มก็คือเรื่องการ Estimate, Calculation และการเลือกใช้ Technologies ให้เหมาะสมกับงาน และแต่ละตัวแก้เรื่องอะไร

  • Microservice Architectures
  • Cloud Native Architectures
  • Microservice Communications (Sync, Async)
  • This is My Architecture ของ AWS

Book: System Design Interview — An insider’s guide ❤️
Book: System Design Interview — An Insider’s Guide: Volume 2 ❤️

อันนี้เป็นบทความรีวิวหนังสือที่ผมเขียนไว้

นอกจากนั้นก็มีพวก Youtube Playlist ที่ผมใช้ดู

System Design Primer Course
System Design Interview Preparation Series

LLD Interviews (OOD Interviews) prep [My strategy]

Youtube: Low Level Design Primer Course

  • เรียน UML เรื่อง Use-case, Sequence, Class, Activity diagram
  • หัดมองของรอบ ๆ ตัวแล้วมองมันกลายเป็น OOP

Example ตู้เย็น เพราะตอนที่ผมเขียน ผมมองเห็นตู้เย็น 😂

  • ตู้เย็น เกิดจาก ตู้เย็น extend ElectricEquipStoreItem (ใส่ของ, มีกี่ชั้น)
  • abstract ElectricEquipStoreItem extend Container (Container abstract)
  • ElectricEquipStoreItem implement interface OnOffTrigger
  • ตู้เย็น implement Cooler
  • ตู้เย็น override on/off + cooling + add items
  • ตู้เย็นมี Floor[2] => ตู้เย็นมี 2 ชั้น
  • Floor(List<Item> items) แต่ละชั้นใส่อะไรบ้าง

Behavioral Interview round prep [My strategy]

  • ด้านล่างนี้คือตัวอย่าง Behavioral question ของ Amazon ซึ่งจริง ๆ ก็ใช้แนว ๆ นี้แหละ แต่แตกต่างไปตามวัฒนธรรมองค์กร ขึ้นอยู่กับว่าเขาเน้นไปทางไหน

อันนี้คือตัวอย่าง List of question ที่ผมมีไว้

General Technical [My strategy]

สำหรับผม ผม Interview ด้วย Java ดังนั้นเรื่องต่าง ๆ ก็ต้องดูเรื่องของ Java เป็นหลัก แต่สิ่งที่ต้องดูมากขึ้นด้วยคือ

  • Design Patterns ต่าง ๆ ซึ่งเอาตามตรง ผมก็กากตรงนี้มาก ๆ เลย บางอันก็ทำเป็น และใช้อยู่ทุกวันนะ 55555 เรียกว่าไม่รู้ทุกอันก็แล้วกัน
  • Thread และ Concurrency
  • SQL, ERD ใช้ครับ ไม่ต้องห่วง ใช้แน่ ๆ โอกาสโดนถามสูงมาก

ส่วนตัวผม ผมมีเล่มนี้อยู่ ก็เล่มนี้ใน Topic แรก ๆ เป็นการสอน Java ที่ไม่ใช้ Coding Interviews Questions ซึ่งคอยสอนเรื่องต่าง ๆ รอบ ๆ Java ได้เป็นอย่างดี

Physical Book — The Complete Coding Interview Guide in Java ของผม

การฝึกตั้งคำถามกับผู้สัมภาษณ์

ใช่ครับ คุณอ่านถูกต้องแล้ว ถึงเวลาที่เราต้องถาม Interviewer กลับ ว่าสิ่งที่คุณตามหา ใช่บริษัทที่คุณกำลังสัมภาษณ์อยู่รึเปล่า โดยปกติเขาจะมักเปิดโอกาสให้ถามในช่วงท้ายของการ Interview

  • ถามที่เป็นประโยชน์ในงาน ถามที่เป็นประโยชน์ต่อทีม
  • ถามเรื่อง Technical ฝั่งเขาไปเลย เราอยากรู้อะไร เขาใช้แบบนี้ยังไง
  • ถ้าเกิดปัญหาแบบนี้พวกเขาทำยังไง Black Friday จัดการกันยังไง
  • อย่าบอกว่าไม่มีคำถาม แม้ว่าคุณจะรู้ตัวแล้วว่านั่นคือ Failed Interview (มันคือโอกาสที่เราจะเรียนรู้บริษัท)

ด้านล่างคือตัวอย่างคำถามที่ผมเตรียมไว้

การแบ่งเวลา — วันธรรมดาที่ทำงาน

  • ก่อนเริ่มงาน 1 hr อ่านบทความใน Medium เพื่อตามข่าวสาร หรืออะไรที่สนใจ
  • ทำงานก็ทำงาน ทุ่มเทให้กับงาน ไม่โยนเกมในเวลางาน
  • หลังเลิกงาน กินข้าวให้เรียบร้อย ล๊อคห้อง
  • 2–3 pomodoro 50/10 mins สลับ 45/15 mins
  • ช่วงแรกเป็นช่วงอ่านหนังสือ Take full control ไปเลย
  • ช่วงสลับอ่านหนังสือกับทำโจทย์ แบ่งเวลา 1 hr อ่านหนังสือ 2 hr โจทย์ (หลัง ๆ มันยากขึ้นง่ะ)
  • ช่วงต้องผสมระหว่าง System Design + LLD/OOD
    1 hr SDI Pratice => อ่านหนังสือ + วาด component ด้วยตัวเอง + estimation
    1 hr Leetcode => ช่วงนี้เริ่มอยู่ตัว บางทีก็วนกลับไปทำโจทย์เดิม แต่หาวิธีการใหม่ ๆ ที่ทำให้อ่านง่ายขึ้น เช่น ใช้ ArrayDeque<> แทน Stack<>
    1 hr LLD/OOD => คิดอะไรซักอย่างที่มันมีอยู่จริงเช่น ตู้เพลง ลานจอดรถ
  • ช่วงใกล้ Interview จะเน้นไปในส่วน Behavioral มากขึ้น

การแบ่งเวลา — วันหยุดสุดสัปดาห์ และหยุดนักขัตฤกษ์

วันหยุด ถ้าตึงไป ให้ออกไปคลายเครียด หรือพักออกไปหาเพื่อนบ้าง เพราะนั้นคือสิ่งที่คืน Mental Health ของคุณกลับมา เรียกง่าย ๆ ว่า สุขภาพของคุณ

  • ตอนเช้ามาก ๆ อ่านบทความใน Medium
  • Before Noon เน้นไปที่ Leetcode
  • [อาทิตย์ 9:30–11:00] Leetcode Contest ทำได้ 1–3 ข้อ ไม่เคยทำได้ 4 ข้อ 5555
  • 1PM — 2PM เน้นไปที่ System Design + LLD/OOD
  • 3PM — 5PM หาอะไรดูตามใจ กรณีผม ผมลองดูพวก Enterprise concepts ที่ใช้ในงาน เช่น Kubernetes, Observability tools, Cloud computing เป็นต้น
  • [เสาร์ เวลา 4 โมงเย็น] ถ้าฝนไม่ตกจะออกไปเล่นบาสกับเพื่อน
  • ตั้งแต่ 2 ทุ่ม เป็น 2–3 pomodoro 50/10 mins สลับ 45/15 mins
  • เหมือนวันธรรมดา แต่ผสม Behavioral Practices เข้าไป 1 hr
  • ช่วงใกล้ Interview จะเน้นไปในส่วน Behavioral มากขึ้น

Resources ที่น่าสนใจ

ที่เหลือนอกจากนี้ เป็น Resources ที่ผมพอมีติดตัวอยู่บ้าง สามารถนำไปดู หรือนำไปใช้ได้ตามสไตล์ ซึ่งผมจะใส่ comment ไว้ให้บางตัว

⭐️ — ถ้า Interview ครั้งหน้า ผมจะใช้มาช่วยเตรียมตัวในอนาคต
📚 — สนใจจะเรียนรู้เพิ่ม แม้ว่าไม่ได้เตรียมตัว

Free resources [Text-based]
Tech Interview Handbook
Grind 75 questions ⭐️
NeetCode 150 ⭐️
Strivers A2Z DSA Course/Sheet 📚
LeetCode's Interview Crash Course ⭐️
Techie Delight
GeeksforGeeks
Educative Interview Prep

Free resources [Video-based]
การออกแบบและวิเคราะห์อัลกอริทึม 📚โดย รศ.ดร.สมชาย ประสิทธิ์จูตระกูล ภาควิชาวิศวกรรมคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัย
MIT 6.006 Introduction to Algorithms, Spring 2020
CSE 373 — Fall 2020 📚 by Steven Skiena (Algorithms Design Manual)

Coding Interview Platform
Codewars
CodeSignal
InterviewBit

System Design Interviews
ByteByteGo 📚
System Design 📚
System Design — High Level 📚

Behavioral Interviews (Culture Fits)
Grokking the Behavioral Interview

Transparency Process from Big Tech
ด้านล่างเป็นแค่ส่วนนึงของโลกใบนี้ แต่ละที่แตกต่างกันออกไป
Google Interview tips
Interviewing at Amazon (Software Development Interviews)

ลองติดตาม Life at ???
Life at Spotify
Engineering at Uber | Uber

Resources ที่รวบรวมไว้ให้ตัวเองในอนาคต

จัดไว้ให้ใน Github Public Repository เพื่อผมจะได้กลับไปอ่านเองในอนาคต และจะได้ทบทวนตัวเองไประหว่างทำ Repo และใช้ทบทวนตัวเองในอนาคต

ส่วนใหญ่เป็น Java แต่โยกย้ายความรู้ได้ ใน community ส่วนใหญ่แนะนำให้ใช้ Python เพื่อใช้ Interview ได้ง่ายขึ้น (แต่ภาษาที่ดีที่สุดคือภาษาที่คุณถนัดที่สุด ถ้าคุณมีเพียง Google Doc)

ด้านล่างผมทำ Review หนังสือที่เกี่ยวกับ System Design เอาไว้ สามารถไปอ่านดูกันคร่าว ๆ ได้เลยครับ

Insight แบบไม่ได้ลงสถิติ จนผมต้องมาเขียนบทความกันตัวเองลืม

ซึ่ง Insight นี้มาจากการที่ผมอ่าน Job Description เป็นร้อยเป็นพัน และการ Apply ทั้งหมด 148 ครั้ง ตามรูปกราฟด้านล่าง โดยผมจะสรุปออกมาเป็นหัวข้อย่อย ๆ

Technologies Relate Overview

ส่วนนี้ผมขออภัยทีม Frontend เป็นอย่างมากนะครับ เพราะตอนอ่าน Description ที่ต่าง ๆ นั้นผมข้ามของ Frontend ไปเยอะมากเลยครับ ดังนั้นตรงนี้ก็เลยจะเน้นไปที่ Backend เป็นหลักนะ และถึงแม้จะ Backend ก็เป็นพวก Java ซะส่วนใหญ่ ดังนั้นผมจะใส่ให้เท่าที่จะใส่ได้ครับ

  • Cloud Native Architectures และ Microservices Architectures เป็นสิ่งที่ความสำคัญสูงมากของ Job Prerequisites
  • Germany, Netherlands สาย Java Dev รับคนเขียน Kotlin จำนวนมาก ซึ่งแปลว่า เขาเริ่มทยอยไปใช้ Kotlin ใน Backend ด้วย Spring Boot กันเยอะแล้ว รวมถึง Framework อื่น ๆ เช่นกัน
  • UK, Germany มี Scala ปะปนอยู่พอสมควรเลย และสิ่งที่ตามมาคู่กัน มักจะเป็น Apache Spark และบวกอัด Python (PySpark) เข้าไปอีก
  • Java จะอยู่ในสาย Open Banking, Retail, Financial Services
  • Go ถูก Apply ที่ FinTech ซะส่วนมาก แต่ที่อื่น ๆ ที่เจอใน Job Description นั้นก็มีใน Industry อื่นเช่นกัน ในตำแหน่ง Backend ก็เดาว่าก็เอาไปทำเป็น Microservices
  • Rust ยังคงเห็นน้อย ใน Job Description ไม่ใช่ว่าไม่นิยม แค่กำลังอยู่ในช่วง transform และผมก็มองว่า Rust คือ Future languages ของ Distribute Systems หัดเขียนตั้งแต่ตอนนี้ แล้วจะได้ไม่เสียใจในอีก 3–4 ปีข้างหน้า
  • .NET มี Demand ก็ไม่แพ้กันกับที่อื่น ๆ โดยจะเป็น .NET Core ซึ่งผมเดาว่าน่าจะเอาไปทำเป็น Microservies ซะส่วนใหญ่
  • แต่ละประเทศที่ห่างไกลความต้องการของภาษาไม่เท่ากัน เช่น อีกที่เน้น Java อีกที่เน้น .NET อีกที่ PHP
  • Kafka > RabbitMQ ก็แปลว่า เป็นเรื่องของ Streaming > Pub/Sub > Message Queue
  • RESTful ไม่ได้แย่ครับ เขารับกันเต็มไปหมด แต่เพราะมันเต็มไปหมด มันเลยเป็นสิ่งที่คุณควรจะรู้เลยล่ะ ส่วน GraphQL และ gRPC มีปะปนครับ
  • เรื่องของ Cloud Computing นั้น AWS เป็นเจ้าตลาดอย่างแท้จริง ตามมาด้วย Azure และ GCP ในระดับที่เท่า ๆ กัน มี Alibaba, IBM, Oracle Cloud บ้างประปราย
  • การพัฒนา Mobile Application แบบ Native ด้วย Kotlin กับ Switft ไปเยอะมากแล้ว ส่วน Java ไม่แน่ใจ แต่ Objective-C เขาบอกเป็น Bonus
  • การพัฒนา Mobile Application แบบ Cross Platform — React Native นำ Flutter อยู่ แต่โดยส่วนตัวคิดว่า Flutter จะยังคงขึ้นต่อไป
  • Web Application จากที่ดูด้วยตา ก็เป็น React, Angular, Vue, jQuery ใช่ครับ jQuery ยังใช้กันอยู่นะ
  • Python ผมอาจจะตอบไม่ได้มาก เพราะผมเลื่อนดูไม่นาน แต่พอเก็บข้อมูลได้ ถ้าไม่นับสาย Data Science/Data Engineer — ตัว Django ไม่ได้นำโด่งมากนัก แต่ที่มาแบบโคตรโหดเลย คือ FastAPI และ SWE/SDE (Infrastructure) จะรับคู่กับคนที่ได้ภาษา script เช่น Ruby
  • Databases ที่ใช้ RDBMS ยังนำอยู่ ไม่ว่าจะเป็น PostgreSQL, MySQL, SQL Server, etc. แต่ผมให้มองแบบนี้ครับ เมื่อ Cloud Native Architectures เข้ามา เขาจะรัน Compatability กับตัวด้านบนเช่น Vitess, YugabyteDB, TiDB ดังนั้น เรียนรู้ SQL ไว้เสมอครับ
  • NoSQL อันนี้เลย Redis > DynamoDB > MongoDB > Cassandra แบบเห็นเป็น General เลยล่ะ
  • Blockchain Development จากที่อ่านด้วยตาตัวเองนั้น Solidity Dev รับเยอะมาก (Ethereum) และ Private Blockchain อย่าง Hyperledger ก็ร่วมตลาดด้วยเช่นกัน

รูปแบบของ Online Assessment ที่ผมพบเจอจริง ๆ

  • โจทย์ Algorithms => FAANG/MATANA level เตรียมกุมขมับได้เลย มีแต่ Normal — Hard
  • โจทย์ Algorithms => โดยส่วนใหญ่พอทำได้ เป็น level Easy — Normal แต่ก็มีที่ทำให้ผมกุมขมับที่ให้ Hard มา
  • Arrays, LinkedList, Graph, Hash Value, Binary Search Tree เป็นพวกนี้ซะส่วนใหญ่
  • Platform ที่อยากให้ทุกคนได้สัมผัสก่อนไปสมัครที่ไหน ๆ (ในไทยก็ใช้นะ ผมเข้าใจถูกใช่มะ) ทำให้คุ้นชินกับ Platform ว่าตัวไหนมันรันยังไง มันต้องรับ Input จาก Console อีกมั้ย หรือแค่ implement function/method
    Codility
    HackerRank
    CodeSignal
    Qualified (by Codewars)
    นอกจากนี้แล้ว ยังมี Internal OA Systems ด้วยเช่นกันครับ อันนี้ไม่น่าจะฝึกได้

รูปแบบของ Technical Interviews ที่ผมพบเจอจริง ๆ

  • Data Structures & Algorithms Questions ด้วย Live Coding จะใช้ Platform ต่าง ๆ อย่างเช่น Codility, HackerRank, CodeSignal, Qualified นอกจากนี้แล้ว ยังมี Internal OA Systems
  • Live Coding ด้วยการใช้ Google Doc
  • Live Coding ด้วยการแชร์ Screen แล้วใช้ IDE ที่ตัวเองถนัด โดยการรับโจทย์เป็นปากเปล่า
  • Live Coding ด้วยการแชร์ Screen โดยการรับโจทย์แบบ Download เป็น File Word
  • การ Q&A เรื่องทาง Technical และ Tradeoff ทาง Technology
  • หาบั๊กในโค้ด มีทั้งให้สถานการณ์และไม่ให้สถานการณ์
  • Remote เข้าไปที่ Server ทดสอบ แล้วทำ Task ให้ดูหน่อย โดยระหว่างนั้นก็เหมือนแบบเราทำงานไปด้วยกันกับเขา คล้าย ๆ Pair Programming เขาก็ Suggest เรา เราก็คิดยังไงกับ Task นี้ ผมโคตรชอบ Interview แบบนี้เลย ไม่รู้ทำไม
  • Design Pattern Implementation + Refactoring Code เขาเอาโจทย์มาให้ใน Coding platform ให้สถานการณ์ เราจะทำยังไงกับโค้ดนี้ ให้เหตุผลมาหน่อย ทำให้ดูดิ๊
  • System Design Interview ผมโดนให้ทำใน 2 Websites ได้แก่
    Excalidraw วาดด้วยมือ รูปแบบเหมือน Freestyle แต่ไม่ Freestyle
    draw.io เป็น diagram สำเร็จรูปให้บ้างแล้ว
  • System Design Interview ด้วย Text visualize แทนก็มีเช่นแบบนี้
    FE => BFF => BE => DB
  • Low-Level Design Interview (Object-Oriented Design) จะถูกแบ่งออกเป็น 2 แบบ แบบทำใน Platform เดียวกับ System Design หรือทำใน Coding Platform โดย represent เป็นโค้ดไปเลย

รูปแบบของ Behavioral Interviews ที่ผมพบเจอจริง ๆ

  • การอ้างอิงถึง Vision ขององค์กร เช่น Leadership principles, Corporate Visions
  • การพูดถึงสถานการณ์ต่าง ๆ ในที่ทำงาน รวมถึงการตัดสินใจในรูปแบบของ Team Player และ Team Leader ไม่ว่าจะ Technical หรือ People Management
  • Role-Play Activity
  • Tell me about the time when … แปลว่าคุณเตรียมชาร์จคอรอได้เลย คิดเรื่องในหัวให้ไวที่สุด เตรียมเรื่องมาก่อนจะดีมาก แต่ส่วนใหญ่คำถามไม่ค่อยโดนที่เตรียมมาซักเท่าไหร่ ถ้าตามประสบการณ์ผมนะ

คำแนะนำจากคนล้มขาเหวอะหวะ

  • ไม่รู้ ไม่ใช่ว่าทำไม่ได้ เพียงแค่เรายังไม่รู้ เฉย ๆ
  • บางทีการ Interviews นั้น Interviewers เขาอาจจะอยากทดสอบ Data Structures & Algorithms, System Design, Low-Level Design อันนั้นคือสิ่งที่เราได้ยินมาหนาหู นั่งดูวีดีโอ และอ่านมามากมาย ซึ่งมันก็เป็น Topics หลักแหละ ถ้ามันบังเอิญตรงกับสิ่งที่คุณเจอ ตรงกับคำถามที่คุณเตรียมตัวมา ก็ถือว่าเป็นเรื่องที่ดีของคุณที่เตรียมตัวมาตรงกับการสัมภาษณ์
  • แต่เพราะโลกความจริง Interviewers อยากถามอะไรก็ถามครับ หัวข้อด้านบนเป็นส่วนนึงก็จริง แต่เรื่องพื้นฐานของ OSI Model, TCP/IP, HTTP Protocol ก็โผล่มาเช่นกัน ดังนั้นสิ่งที่ไม่แพ้กันเลยคือ CS Fundamentals และความเข้าใจอื่น ๆ ที่เกี่ยวข้องในงาน
  • จากหัวข้อด้านบนปัจจัยสำคัญของคุณที่ไม่แพ้ตัวอื่นเลย คือโชคชะตา จะเข้าข้าง จะเป็นใจ จะจ้องใส่เดี่ยวคุณ คุณไม่มีทางรู้เลย
  • หาคนมาช่วยทำ Mock Interviews ดีกว่าครับ จะเป็นเพื่อนหรือใครก็ได้ที่เราวางใจ ทั้งนี้ทั้งนั้นผมว่าต้องเป็นคนที่เข้าใจและสามารถให้คำแนะนำ ข้อซักถาม ข้อสงสัย ให้กันและกันอย่างทัดเทียมกันจะดีมาก ๆ ครับ (ตัวผมเป็นคนขี้เกรงใจ เลยไม่ได้ Mock Interview แม้แต่ครั้งเดียว ใช้สนามจริงเป็นตัวฝึกเลย)
  • หากการ Apply สามารถวางแผนต่อได้ ให้เลือกบริษัทที่เราชอบที่สุด อยากไปทำงานที่สุดนำไว้ท้าย ๆ ของลำดับการสัมภาษณ์เพราะเราสามารถนำที่อื่นที่อันดับรองลงมาสัมภาษณ์ก่อนได้ แต่บางที Timing ของชีวิตส่วนที่เราไม่รู้มันก็กำหนดไม่ได้เลยครับ บางครั้งเราก็ต้องใส่เดี่ยวกับจังหวะตรงหน้าแทน
  • การล้มหรือการ Failed ไม่เป็นไรเลยครับ (แต่เราต้องไม่คิดมากว่าทำให้ Company ที่ Interview เสียตังค่า man-hour Engineer) สูดหายใจเข้าลึก ๆ ตอนผลออก มีแค่ 0 ❌ กับ 1 ✅ ไม่ว่าผลจะเป็นยังไง มันผ่านมาแล้วครับ ที่เราทำได้คือเรียนรู้ เงยหน้าและก้าวต่อไปกับสิ่งที่ได้รับ
  • หยิบสมุดหรืออะไรก็แล้วแต่ที่ใช้บันทึก บันทึกลงไปว่า เราทำอะไรได้ดี เราทำอะไรได้ไม่ดี แล้วคิดว่าทำยังไงให้ปรับปรุงได้
  • Career Portal อาจจะเป็นหลุมดำกับหลาย ๆ คน แต่ผมรู้สึกว่ามัน Effective พอสมควร
  • Subscription LinkedIn Premium เป็นทางเลือกที่ผมแนะนำ ประโยชน์คิดว่าอาจจะคือ InMail ก็จริง แต่ถ้าโปรไฟล์ไม่น่าสนใจ หรือไม่เตะตาเขา เขาก็ไม่ตอบคุณ ยิ่งบริษัทใหญ่ Recruiter จะมองแต่ประกายแสง และยิ่งเพิ่มความยากไปอีก แต่ที่ให้ Subscription เพราะเราสามารถดู Insight คร่าว ๆ ได้ว่า Position นี้สมัครกี่คน แต่ละคนมาจากไหน และสกิลที่เราใส่ใน LinkedIn ตรงมั้ย
  • LinkedIn เป็น The best platform ในการหา Job roles หลังจากนั้นขึ้นอยู่ที่คุณว่าจะหา Recruiters ของบริษัทนั้น หรือจะ Apply กับ Career Portal โดยตรง
  • ดูการแข่งขันของแต่ละประเทศ ว่าที่ไหนสามารถออก Work Visa ให้กับเราได้ ในเงื่อนไขที่เรามีอยู่ปัจจุบัน
  • EU Blue Card และ Work Visa ทำงานส่วนใหญ่ ถ้าไม่ใช่คนท้องถิ่นของเขา การขอ Work Visa ต่าง ๆ ต้องจบปริญญาตรี (Bachelor’s Degree) แต่การที่ไม่ตรงสายเกี่ยวข้องมากแค่ไหน ผมตอบไม่ได้ แต่ที่ตอบได้แน่ ๆ คือ เขาต้องการคนที่ทำงานเป็นและเป็น Professional
  • STAR Method เป็น Framework ที่ดีมากนะครับ แต่ไม่ใช่ทุกคำตอบที่จะต้องใช้มัน “Make a conversation” ครับ คุณกำลังสัมภาษณ์งาน คุณกำลังคุยกับคนที่อาจจะเป็นเพื่อนร่วมงานในอนาคต ไม่ใช่กรรมการสอบ IELTS Speaking
  • คนไม่จดจำคำว่าเกือบ คนจดจำแต่ได้หรือไม่ได้ แต่มีแค่เราที่จะรู้ว่าเราแลกกับอะไรไป และได้อะไรกลับมาระหว่างทางบ้าง 🙂

Mindset ที่ผมคิดว่าเหมาะสมกับทุกที่

ซึ่งไม่ได้จะอวยหรืออะไร แต่ยอมรับว่า จากการสัมภาษณ์มา ตัว Amazon Leadership Principles คือตัวที่ครอบคลุม Core skills ในเรื่องของ Product mindset และ Behavioral skills มาก ๆ

บทสรุปส่งท้าย

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

ตัวผมมีเป้าหมายก็จริง แต่ก็ยังไม่รู้อนาคตตัวเองที่แน่นอน 100% ได้เหมือนกัน ไม่รู้เหมือนกันว่าการโดน Redirect Reverse Proxy ในชีวิตครั้งนี้ จะเป็นเรื่องดีหรือไม่ดี ผมก็ไม่สามารถรู้ได้ รู้แค่ว่าผมตัดสินใจไปแล้ว 😁

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

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

ด้านล่างนี้เป็นคลิปวีดีโอสั้น ๆ ที่ผมเอาลง Youtube ผมเป็นคนที่ตัดต่อไม่เก่งเอาซะเลย เลยต้องพึ่ง Application อื่นมาช่วย ตอนเขียนบทความนี้ก็คิดถึงนะครับ และดีใจที่ตัวเองเป็นคนบ้าได้ขนาดนั้น

หากมีข้อสงสัยหรือสอบถามเพิ่มเติมใด ๆ สามารถติดต่อได้จากช่องทางด้านล่างครับ

FB: Thanaphoom Babparn
FB Page: TP Coder
LinkedIn: Thanaphoom Babparn
Linktree: https://linktr.ee/tpbabparn

--

--

Thanaphoom Babparn

Software engineer who wanna improve himself and make an impact on the world.