ห้ารอบ. ทดสอบกันห้าทักษะที่คนละเรื่องเลย. ผมเตรียมไปจริง ๆ แค่ประมาณรอบครึ่ง. lol. นั่นแทบจะเป็นทั้งเรื่องแล้ว แต่ขอเล่าให้ครบหน่อยเพราะผมยังประมวลไม่จบเลยว่าเกิดอะไรขึ้นกันแน่.
เพื่อนผม Jake ทำงานอยู่ที่ Stripe. อยู่มาสองปีแล้ว. ก่อนหน้านั้นเราทำงานด้วยกันที่สตาร์ตอัปแถว Valencia ใน Mission, อัดกันสี่คนใน desk pod ของ WeWork อันเดียว, runway สิบเอ็ดเดือน, เผาเงินไปหก. บริษัทเจ๊ง. Jake ลงเอยที่ Stripe ส่วนผมก็ลอยไปเรื่อย. ยังไงก็ตาม Jake จับผมไปนั่งที่ Equator Coffee ใน SoMa วันเสาร์วันหนึ่ง. สั่ง cold brew. แก้วละเจ็ดดอลลาร์. กาแฟนะ. เขาพูดว่า "dude อย่าทำ leetcode เพื่อ Stripe เลย เขาไม่ได้เทสต์แบบนั้นด้วยซ้ำ" แล้วผมก็พยักหน้าบอกเออใช่ แล้วเปิด neetcode ทันทีที่เขาเดินออกไป. เพราะผมเป็นตัวตลกที่ไม่ฟังใคร.
มาที่รอบ integration. อันนี้แหละที่ทำผมพัง และผมไม่ได้พูดเกินเลยแม้แต่นิดเดียว. เขาเปิดเอกสาร API จริงของ Stripe บนหน้าจอแชร์, ยื่น codebase ที่คนอื่นทำค้างไว้ให้ผม, แล้วบอกให้เพิ่มฟีเจอร์นี้เข้าไป. สี่สิบห้านาที. สมองผมไม่ยอมจับจังหวะเลย. เลยจริง ๆ. ผมนั่งหรี่ตามอง function signature ที่ไม่เคยเห็นมาก่อน เลื่อนขึ้น เลื่อนลง เลื่อนกลับขึ้นไปอีก แล้วไม่ซึมซับอะไรเข้าไปเลย. ศูนย์ข้อมูล. รู้ไหมเวลาที่เราอ่านบรรทัดเดิมสี่รอบ? นั่นแหละ. แต่มี interviewer นั่งอยู่ตรงนั้นจดทุกความผิดพลาดที่ผมทำ. ความรู้สึกแย่สุด ๆ. ผมเคยพัง onsite ของ Google หนักจน recruiter หายไปเลยมาแล้ว และอันนี้ยังแย่กว่าอีก.
ทุกบริษัทชอบบอกว่าเขาเทสต์ไม่เหมือนคนอื่นใช่ไหม. Google ก็พูดแบบนั้น. Meta ก็พูดแบบนั้น. สุดท้ายทุกที่ก็โยน medium hard บน CoderPad มาให้แล้วก็ไปต่อ. แต่ Stripe หมายความแบบนั้นจริง ๆ. Jake พูดถูก. ผ่านไปสองเดือนผมยังหงุดหงิดเรื่องนี้อยู่เลย พูดจริง.
เดี๋ยวก่อน ขอถอยกลับไปที่รอบ bug bash ก่อน. อันนี้ต้องมีทั้งย่อหน้าของมันเอง เพราะไม่มีอะไรเลย ไม่มีอะไรเลยจริง ๆ ในหกเดือนของการเตรียมสัมภาษณ์ที่ทำให้ผมพร้อมกับมัน. เขาให้ไฟล์ที่เต็มไปด้วยโค้ดระบบจ่ายเงินของคนอื่น แล้ว interviewer ก็พูดว่า "หาบั๊กมา." หนึ่งชั่วโมง. ได้ข่าวว่าเป็นบั๊กจริงที่ดึงมาจาก codebase จริงของเขาด้วย. เคยมองหน้าหนังสือ Where's Waldo แล้วตาคุณไหลผ่านตัว Waldo ไปเรื่อย ๆ ไหม? แบบนั้นเลย. นั่นแหละคือความรู้สึกตอนอ่านโค้ดระบบจ่ายเงินที่มีบั๊กของพวกเขา. ผมอ่าน validation path เดิมสองรอบ แล้วก็ยังพลาดช่องโหว่นั้นทั้งสองรอบ. ทั้งสองรอบ! อันนี้ไม่ใช่ทักษะอัลกอริทึม. ศูนย์เปอร์เซ็นต์ของทักษะอัลกอริทึม. นี่คือทักษะแบบ "คุณเคยใช้เวลาหลายปีอ่าน production code ห่วย ๆ ตอนตีสองเพราะ PagerDuty ดังแล้วมีอะไรบางอย่างกำลังไหม้ไหม" และสำหรับผม? nope. Jake บอกผมอยู่ตลอดให้ข้าม leetcode แล้วไปฝึกอ่านโค้ดห่วยแทน. InterviewMan ชี้ช่อง validation ที่ผมพลาด. จะว่าอายก็อายที่เครื่องมือราคาเดือนละสิบสองดอลลาร์เห็นสิ่งที่ตาผมไม่เห็น แต่ผมก็ไม่คิดจะพังรอบนั้นเพราะศักดิ์ศรีหรอก.
กลับมาที่ integration. JAKE. Jake เตือนผมเรื่องรอบนี้มากที่สุด. เขาใช้เวลาอยู่ที่ Equator สี่สิบนาทีเพื่อไล่มันกับผม. สี่สิบนาที. ผมนั่งอยู่ตรงนั้นกับ cold brew ราคาโหดของตัวเอง คิดว่าโอเค Jake ใจเย็น มันจะต่างจาก coding round ปกติได้สักแค่ไหนกัน. lol. ผิด. ผิดมาก ผิดจนตอนนี้เกือบจะตลกแล้ว. คุณโดนโยนลงไปในโค้ดที่ไม่เคยเห็น แล้วต้องส่งอะไรที่สะอาดและเข้ากับสไตล์ที่ dev คนก่อนเขียนไว้. ไม่มีอัลกอริทึมสำหรับเรื่องนั้น. ผมหา "stripe integration practice" ใน neetcode แล้วได้ผลลัพธ์เป็นศูนย์ ซึ่งก็น่าจะบอกอะไรได้เยอะแล้ว. Jake พูดเสมอว่าคนที่มัวแต่ grind อัลกอริทึมจะโป๊ะแตกในรอบนี้ และก็ใช่. โป๊ะแตก. นั่นแหละที่เกิดกับผม. InterviewMan พาผมไปที่ API endpoint ที่ถูกต้องก่อนที่ผมจะหาเจอเอง ช่วยเซฟเวลาไปน่าจะห้านาทีได้มั้ง? บอกยากเหมือนกันว่ากี่นาทีเป๊ะ ๆ. ถ้าจะเตรียมรอบนี้ ก็เปิดเอกสาร API ของ Stripe ล่วงหน้าไว้เลย. ไม่ต้องท่องจำมัน. แค่คุ้นกับ layout. PaymentIntents อยู่ตรงไหน. webhooks ถูกเขียนไว้ตรงไหน. อะไรแบบนั้น. แค่นั้นก็น่าจะเซฟห้านาทีเดียวกันได้แล้วโดยไม่ต้องพึ่งเครื่องมือ lol.
รอบ coding. CoderPad. มีสามพาร์ตที่ต่อซ้อนกันไป. พาร์ตแรก basic, โอเค, whatever. พาร์ตสองเพิ่มเรื่อง payment เข้ามา แล้วโอเค ใช่ อันนี้ผมต้องคิดจริงแล้ว. พาร์ตสามเป็น edge case ของ retry logic แล้วโอ้โห. โอ้โห. มันเละเร็วมาก. สิ่งที่ทำผมหลุดใน coding round ของ Stripe คือ interviewer สนใจมากกว่าว่าผมเขียนโค้ดยังไง ไม่ใช่ว่าผมแก้เสร็จเร็วแค่ไหน. เธอดูชื่อ function ของผมแบบจริงจังเลย. ดูว่าผมแยกโค้ดเป็นชิ้นที่อ่านง่ายไหม หรือยัดทุกอย่างเข้า function เดียวไปหมด (ซึ่งผมอาจจะยัดไปบ้าง). ต่างจาก Google มาก ที่คุณแข่งไปให้ถึง O(n) พิสูจน์คณิตให้ได้ แล้วไม่มีใครบนโลกแคร์เลยว่าตัวแปรคุณชื่อ temp2 หรือเปล่า. Jake บอกผมก่อนเข้าลูปว่า "เขียนมันเหมือนเพื่อนร่วมงานที่จุกจิกที่สุดกำลัง review PR ของนายอยู่" แล้วแบบ. คำแนะนำที่ดีที่สุด. ดีที่สุดจริง ๆ ที่ใครเคยให้ผมสำหรับการสัมภาษณ์อะไรก็ตาม. InterviewMan วางพาร์ตสองไว้ให้แล้วตอนที่ผมยังปิดพาร์ตหนึ่งไม่เสร็จ ซึ่งทำให้ผมเดินต่อได้. ถ้าถามว่าผมแก้เองได้ไหม? อาจจะได้. แต่ edge case เรื่อง retry ในพาร์ตสามนั่น ไม่มีทางที่ผมจะไปถึงได้ถ้าไม่ได้เวลาที่เซฟไว้. ไม่มีทาง.
system design. เขาใช้ Whimsical ซึ่งผมชอบนะ เพราะ virtual whiteboard ส่วนใหญ่มันให้ความรู้สึกเหมือนวาดรูปด้วยสบู่ก้อนเปียก lol. rate limiting ระดับสเกลใหญ่. distributed state. เซิร์ฟเวอร์สองตัวที่ไม่เห็นตรงกันว่าลูกค้าแตะ limit ไปแล้วหรือยัง. ไม่ใช่ URL shortener จาก YouTube ที่ทุกคนกับแม่ของเขาซ้อมกันมาแล้วสี่ร้อยรอบ. Jake บอกว่าทีมจริงของเขายังเถียงกันเรื่อง rate limiting ใน standup อยู่เลย ซึ่งพอนึกดูก็โคตรน่าสนใจ. ผมรู้สึกโอเคในรอบนี้เพราะเมื่อก่อน Jake กับผมเคย whiteboard กันที่ Equator อาทิตย์ละสองครั้งตอนที่เขากำลังเตรียมเหมือนกัน. เราวาดไดอะแกรมลงบนกระดาษเช็ดปากเยอะจน barista น่าจะคิดร้อยเปอร์เซ็นต์ว่าเรากำลังวางแผนปล้น.
behavioral. STAR มาตรฐานเลย. tradeoff ระหว่างความเร็วกับคุณภาพ. ถ้าคุณเคยเตรียม behavioral ของ Amazon มาก่อน ก็สบาย. ไม่มีอะไรแปลกตรงนี้.
ดังนั้นนี่คือสิ่งที่ผมสรุปได้จริง ๆ จากทั้งหมดนี้. ห้ารอบ. ห้าความสามารถที่ต่างกันสุด ๆ ถูกเอามาเทสต์. การเตรียมตัวแบบ Google ของผมครอบคลุมได้หนึ่งอย่าง. behavioral ของ Amazon ครอบคลุมอีกอย่าง. การมี แผนเตรียมสัมภาษณ์ ที่แน่นพอสำหรับรอบทุกประเภท คือทางเดียวที่จะรับมือกับความกว้างของ Stripe ได้. bug bash, integration, แล้วก็โจทย์ system design ของจริงที่ไม่ใช่ URL shortener เดิมจาก YouTube สามอย่างนี้ผมไม่เคยซ้อมเลยสักครั้ง เพราะไม่มีบริษัทอื่นเทสต์แบบนี้. จำช่อง validation ที่ผมพลาดสองรอบได้ไหม? InterviewMan จับได้. จำห้านาทีตอน integration ที่ผมหา endpoint ไม่เจอได้ไหม? นั่นแหละคือความต่างระหว่างทำทันกับทำไม่ทัน เพราะทุกรอบของ Stripe มีเวลาแขวนอยู่บนหัว. ตอนรอบ coding มันวางพาร์ตสองไว้แล้วทั้งที่ผมยังอยู่พาร์ตหนึ่ง. ผมเช็ก dock, รายการ process, screen recording ทั้งใน CoderPad และ Zoom. มองไม่เห็นอะไรเลย. เดือนละสิบสองดอลลาร์ในแพลนรายปี. ผู้ใช้ 57,000 คน. stealth features 20 กว่าอย่าง. เครื่องมือที่ช่วยแค่ coding ในราคาเดือนละ 2.99 ดอลลาร์น่าจะครอบคลุมได้แค่หนึ่งในห้าประเภทรอบ และคณิตศาสตร์แบบนั้นมันไม่คุ้มสำหรับ Stripe เลย.
Jake บอกผมให้ข้าม leetcode แล้วไปฝึกอ่านโค้ดห่วย ๆ. เสียดายจริง ๆ ที่ผมไม่ฟังตั้งแต่ครั้งแรก lol.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.
