Site icon Thumbsup

สัมภาษณ์พิเศษ: เคล็ด(ไม่ลับ)นักพัฒนาไทยก้าวไกลถึงซิลิคอนวัลเลย์

วันนี้ thumbsup มีบทสัมภาษณ์พิเศษจากทาง Partner ของทาง thumbsup อย่าง e27?ซึ่งเป็นการสัมภาษณ์คนไทยที่เพิ่งจะได้เข้าทำงานที่บริษัทพัฒนาโซเชียลมีเดียชื่อดังที่ตั้งอยู่ในสถานที่ที่นักพัฒนาหลายๆ คนใฝ่ฝันที่จะได้เข้าไปสักครั้งในชีวิตอย่าง ซิลิคอนวัลเลย์ สหรัฐอเมริกา โดยจะเป็นการแบ่งปันประสบการณ์ที่ได้เจอในการสัมภาษณ์งานและเคล็ดลับว่าทำไมถึงได้ทำงานที่นี่ กับคุณเอ – ธนินทร์ ณ นคร -?Software Engineer ที่ Twitter

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

ในช่วงเกือบๆ 1 ปีที่ผ่านมา ผมได้ตัดสินใจยื่นสมัครงานเพื่อเป็นวิศวกร, คนเขียนโปรแกรมในบริษัทที่ตั้งอยู่ใน Valley จำนวนทั้งสิ้น 17 บริษัท โดยผมได้รับโทรศัพท์ตอบรับมา 11 แห่ง, ได้ไปสัมภาษณ์ที่บริษัท 3 แห่ง ซึ่งได้แก่ Facebook, Expensify และ Twitter และสุดท้ายผมก็ได้รับข้อเสนอจากสองบริษัทเพื่อเข้าทำงาน ซึ่งได้แก่?Expensify และ Twitter

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

และนี่คือสิ่งที่ผมอยากจะให้คนอ่านได้รู้เรื่องนี้ก่อนที่จะไป มีดังนี้ครับ…

การเขียน Code เพื่อการสัมภาษณ์

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

การสัมภาษณ์เพื่อให้ได้งานในบริษัทที่อยู่ใน Valley ในตำแหน่งเป็น?software engineer ไม่ว่าบริษัทใดก็ตาม มักจะมีคำถามที่ใช้ในการสัมภาษณ์ที่ต้องเขียน Code เพื่อตอบคำตอบนั้น โดยที่คุณต้องไม่ตกใจกับความยากง่ายและรูปแบบของคำถาม เพราะคุณมีเวลาคิดและเขียนคำตอบเพียง 10 นาทีในการแก้ปัญหาต่อหนึ่งข้อ

และเว็บไซต์ที่ผมแนะนำให้ใช้สำหรับการฝึกเขียน Code ก่อนการมาสัมภาษณ์ ได้แก่ xorswap.com และ?leetcode.com

ในช่วยของการสัมภาษณ์ ผู้ที่สัมภาษณ์เราจะถามคำถามและให้คุณเขียน Code โดยใช้เว็บแอพพลิเคชันที่ใช้เขียนข้อความ Text Editor ผ่านอินเทอร์เน็ตเช่น collabedit?เปิดขึ้นบนหน้าจอโทรศัพท์ และเขียน Code บนกระดานหากว่าเป็นการสัมภาษณ์ในบริษัท ซึ่งก็แน่นอนว่าทั้งสองวิธีในการนี้มันยากกว่าตอนที่เราจะนั่งเขียน Code กันธรรมดาที่หน้าจอคอมอยู่แล้ว และหากซึ่งถ้าคุณไม่เคยทำ(เขียน Code บนกระดานหรือพิมพ์ผ่านโทรศัพท์) โอกาสที่คุณจะเขียนติดๆ ขัดๆ หรือถูกมองกลายเป็นคนโง่คนหนึ่งมีแทบจะ 100% ซึ่งผมเองก็เคยเขียน Code บนกระดานแบบติดๆ ขัดๆ ในการสัมภาษณ์ที่ Facebook (ซึ่งนั่นก็คือครั้งแรกที่ผมสัมภาษณ์งานที่เต็มไปด้วยความเครียด!)

ดังนั้นเพื่อป้องกันปัญหาที่ผมได้เจอมา ให้ไปฝึกเขียน Code ด้วยโปรแกรม text editor ที่ไม่มีเครื่องมือหรือตัวช่วยต่างๆ ในการเขียน เช่น Notepad รวมทั้งเขียนลงบนกระดาษด้วยตัวเอง และให้ฝึกพูดขณะที่กำลังเขียน Code ด้วย

เน้นส่วนที่สำคัญของคำถามให้ได้

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

แต่ความเป็นจริงแล้ว คนส่วนใหญ่กลับให้ความสำคัญกับความถูกต้องของคำสั่งโปรแกรม (Syntax), API มากที่สุด ซึ่งที่จริงแล้วมันเป็นสิ่งที่ไม่ค่อยมีประโยชน์ และไม่มีใครสนใจหรอกว่าถ้าคุณจะใส่ semi colon หรือวงเล็บ (parentheses) แล้วโปรแกรมมันจะเป็นอย่างไร (สุดท้ายเราก็ต้อง Debug อยู่ดี)

ตัวอย่างเช่น ผมเคยเขียน Code?“`Hash#each_tuple“` แล้วสั่งให้วน hash loop ใน Ruby…จากนั้นคนที่สัมภาษณ์บอกกับผมว่า

ที่จริงแล้วเราอยากจะให้คุณเขียน Code ว่า?“`Hash#each_pair“` แล้วทำต่อไปโดยไม่ต้องสนอะไรก็แค่นั้น และอีกอย่างนึงที่อยากจะบอกคุณคือ Code?“`Hash#each_tuple“` ที่คุณเขียนมานี่มันไม่มีอยู่จริงหรอก ไม่ว่าจะเขียนด้วยภาษาอะไรก็ตาม…

…ซึ่งผมก็ไม่รู้ตัวหรอกว่าตอนนั้นผมคิดขึ้นมาได้อย่างไร

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

Resume เขียนให้สั้น…แต่โดนใจ

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

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

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

ถ้าผ่านสัมภาษณ์แล้ว เขาจะเรียกร้องหาตัวคุณไม่ว่าคุณจะอยู่ที่ใดในโลก (จริงๆ นะ)

ทุกวันนี้ก็ยังมีความเชื่อผิดๆ ในการเข้าทำงานในบริษัทที่ตั้งอยู่ใน Valley ว่าทางบริษัทไม่อยากจะรับพนักงานที่ไม่ใช่คนในสหรัฐฯ เพราะมักจะมีปัญหาเรื่องวีซา ซึ่งมันไม่ใช่ความจริงทั้งสิ้น …ให้ลองคิดดูว่าค่าตั๋วเครื่องบินของคุณเพื่อมาสัมภาษณ์งานที่บริษัท (บินจากประเทศไทยไปยังสหรัฐฯ) และได้รับวีซาทำงานประเภท H-1B เทียบกับเงินเดือนที่คุณจะได้รับ มันเทียบกันไม่ได้เลยจริงๆ

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

อ่อ มีอีกอย่างนึงที่อยากจะบอก …ผมไม่ได้เรียนจบที่สหรัฐฯ นะครับ ผมยื่นใบสมัครงานมาทำงานที่นี่ผ่านทางอีเมลที่ส่งจากเมืองไทย

…ไม่ว่าจะเป็นอย่างไร อย่าหยุดความฝันที่จะได้มาทำงานใน Valley ด้วยความเชื่อผิดๆ อีกเลยครับ

———————————————————————————————————————————–

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

ธนินทร์ ณ นคร ปัจจุบันเป็น Software Engineer อยู่ที่บริษัท Twitter, วิศวกรอาสาสมัครขององค์กรการกุศลออนไลน์?GIVEasia.org?คุณสามารถติดตามคุณเอ ได้ผ่านทาง Twitter?@tanin47?และเว็บไซต์?http://tanin.nanakorn.com

และทิ้งท้ายเอาไว้กับงาน Startup ที่กำลังจะเกิดขึ้นในไทย?Echelon Ignite: Thailand 2012 ในวันที่ 22-23 พฤศจิกายนนี้ และดูรายชื่อผู้ที่จะเข้าเป็น Speaker ในงานได้ที่นี่ครับ Echelon Thailand 2012 Speakers

สามารถอ่านบทความสัมภาษณ์ภาษาอังกฤษได้ที่ e27