กลับมาอีกครั้งกับซีรีส์ "สัมภาษณ์คนไทยในซิลิคอนวัลเลย์" ตอนที่แปด มาดูงานสายเครือข่ายกันบ้าง บริษัทที่เราสนใจในตอนนี้คือ Arista Networks บริษัทด้านอุปกรณ์-ซอฟต์แวร์เครือข่ายที่กำลังมาแรง เพิ่งขายหุ้น IPO เข้าตลาดหลักทรัพย์เมื่อปีที่แล้ว รวมถึงติดอันดับบริษัทที่น่าทำงานที่สุดในสายตาพนักงานจาก Glassdoor อีกด้วย
คราวนี้เราได้ คุณอิทธิโชค จ่างใจมนต์ วิศวกรคนไทยในบริษัท Arista Networks จะมาเล่าประสบการณ์การทำงานสายนี้ รวมถึงเทคนิคการหาทุนเรียนต่อ และการหางานด้านไอทีในสหรัฐอเมริกาอย่างละเอียดด้วยครับ
สวัสดีครับ ผมชื่อแบงค์ อิทธิโชค จ่างใจมนต์ ปัจจุบันเป็นวิศวกรคอมพิวเตอร์อยู่ที่บริษัท Arista Networks ครับ
การศึกษา ประถม:โรงเรียนพรประสาทวิทยา มัธยม:โรงเรียนวัดราชโอรส ปริญญาตรี:วิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์
หลังจากจบ ป.ตรี ผมไปทำงานสั้น ๆ ที่ศูนย์วิจัยแห่งชาติ AIST ที่ญี่ปุ่น แล้วกลับมาทำงานวิจัยและดูแลระบบที่ศูนย์ไทยกริดแห่งชาติกับ อ. ภุชงค์ อุทโยภาศ ประมาณ 2 ปีครับ จากนั้นไปเรียนต่อป.โท-เอกในสหรัฐที่ University of Louisiana at Lafayette (ชื่อเดิมคือ University of Southwestern Louisiana) งานวิจัยที่ทำคือ Fault Tolerance สำหรับ Distributed Systems และ Cloud Computing
หนึ่งในปัญหาสำคัญของระบบประมวลผลขนาดใหญ่คือเรื่องของเสถียรภาพของระบบ เนื่องจากมีอุปกรณ์เป็นจำนวนมาก (เป็นแสนชิ้น) จึงมักมีสิ่งใดสิ่งหนึ่งเสียเสมอทั้งในระดับซอฟต์แวร์และฮาร์ดแวร์ (เคยมีงานวิจัยประเมินว่าบางระบบมีปัญหาทุก ๆ 13 ชม. อ้างอิง)
เทคนิคหนึ่งที่ใช้กันคือการ checkpoint (เชคพอยต์) เทคนิคนี้จะเซฟข้อมูลของโปรเซสที่รันอยู่ออกมาเป็นไฟล์ เวลาเกิดปัญหาแทนที่เราจะรันโปรเซสใหม่ตั้งแต่ต้น เราสามารถรีสตาร์ทโปรเซสใหม่จากไฟล์เชคพอยต์ ตัวโปรเซสจะรันต่อจากสถานะที่เซฟไว้ในไฟล์เลย มีประโยชน์มากกับโปรแกรมที่รันนาน ๆ เช่น รันมาแล้วหลายชั่วโมงหรือระดับเดือน
ประเด็นคือระหว่างที่เชคพอยต์ โปรเซสจะต้องหยุดทำงาน (บางครั้งไม่ได้หยุดสั้น ๆ ซะด้วย) ส่วนไฟล์ที่เซฟไว้ บางครั้งก็จำเป็นต้องส่งไปเก็บข้ามเครื่องเผื่อเครื่องที่รันอยู่ตาย ทำให้เปลืองทรัพยากรทั้งแบนด์วิธและพื้นที่เก็บข้อมูล งานวิจัยของผมใช้สารพัดวิธีมาทำให้เชคพอยต์เสร็จเร็วขึ้น สิ้นเปลืองทรัพยากรน้อยลง และทนต่อปัญหาที่รุนแรงหลายระดับ
ตัวชูโรงคือเรามีโมเดลทางคณิตศาสตร์ที่บอกได้ว่าเราควรเช็คพอยต์เมื่อใด ถึงจะเสร็จเร็วและไม่เปลืองทรัพยากร (ของถูกและเร็วมีอยู่จริงในงานวิจัยนี้ครับ ฮา) ดูรายละเอียดเพิ่มเติมได้ที่ (เปเปอร์งานปี 2013)
นอกจากนี้ เราสามารถใช้เชคพอยต์ในงานที่รันบนระบบคลาวด์ได้เช่นกันครับ ที่มีประโยชน์ชัด ๆ คืองานที่รันบน Spot Instance ของอเมซอนซึ่งเป็นบริการที่ให้ผู้เช่าสามารถ bid ราคาเครื่องได้ โดยราคากลางจะเปลี่ยนไปตาม supply-demand เมื่อไหร่ที่ราคากลางต่ำกว่าราคาที่เรา bid ไว้ เราก็จะได้เครื่องไปรันงาน แต่เมื่อไหร่ที่ราคากลางขึ้นไปสูงกว่าเราก็จะเสียเครื่องนั้นไป (รวมถึงงานที่รันอยู่ด้วย)
ข้อดีคือส่วนใหญ่ราคาที่จ่ายจะต่ำกว่าราคาแบบ fixed price มาก แต่ข้อเสียก็คือเราไม่รู้ว่าเมื่อไหร่ราคาเครื่องจะเปลี่ยนไป จนสูงเกินกว่าราคา bid ของเรา งานวิจัยของผมเลยพัฒนาโมเดลคณิตศาสตร์สำหรับ spot instance โดยเฉพาะเพื่อทำนายว่าเมื่อไหร่เราควรจะเชคพอยต์งานที่รันอยู่ (เผื่อราคากลางขึ้น)
โมเดลนี้แม่นและเร็วกว่าโมเดลที่พัฒนามาก่อนหน้ามาก ผลก็คือนอกจากทำให้รันงานเสร็จเร็วขึ้นแล้ว ค่าใช้จ่ายก็ลดลงมากเช่นกัน (คอนเซปต์เดิมครับ ถูกและเร็ว!) สนใจดูรายละเอียดเพิ่มเติมได้ที่ (เปเปอร์งานปี 2015)
ล่าสุด Google เองก็เพิ่งออก Preemptible Instances (ข่าวเก่า) เราสามารถนำงานนี้ไปประยุกต์ใช้ได้เช่นกันครับ (แต่ต้องเก็บข้อมูลและปรับโมเดลนะ)
ช่วงที่ตัดสินใจเรียนต่อลังเลเหมือนกันครับว่าจะไปญี่ปุ่นหรืออเมริกาดี เพราะว่างานวิจัยที่ทำอยู่ช่วงนั้น (Grid Computing) คนเก่ง ๆ อยู่ที่ญี่ปุ่นก็เยอะครับ สุดท้ายตัดสินใจมาอเมริกาเพราะอยากผจญโลกกว้าง ก็เลยขอยืมเงินผู้มีพระคุณกะว่าจะมาเรียนโทแล้วทำงานหาเงินคืน ปรากฏว่าไปเรียนเดือนแรกอาจารย์ที่นี่ถูกใจให้ทุนยาวไปถึง ป. เอกเลย ก็เลยตัดสินใจต่อเอกครับเพราะอยากรู้ว่าเป็นยังไง (บวกกับอาจารย์ภุชงค์ยุด้วยครับ ฮา) เงินที่ยืมมาก็ใช้คืนหมดตั้งแต่สองสามเดือนแรก
พอใกล้จบเอก ผมอยากทำงานในภาคอุตสาหกรรมบ้าง เพราะทำงานแต่สายวิชาการมาตลอด เลยเริ่มหางานโดยคัดบริษัทจากอันดับความน่าทำงานในเว็บไซต์ Glassdoor ครับ ผมสมัครตรงเกือบทุกที่ เพราะว่ารู้จักรุ่นพี่ที่ทำงานในบริษัทที่เล็งไว้ไม่เยอะ บินไปสัมภาษณ์หลายที่เหมือนกันจนมาลงเอยที่ Arista Networks
Arista Networks เป็นบริษัทน้องใหม่ในตลาดหุ้นสหรัฐ (เพิ่ง IPO ไปหมาด ๆ เมื่อปีก่อน) ธุรกิจหลักคือขาย Network switch ให้กับศูนย์ข้อมูล Cloud ขนาดใหญ่ (ระดับถึงแสนเครื่อง) ซึ่งศูนย์ข้อมูลระดับนี้ต้องการทั้งประสิทธิภาพที่สูง ระบบการจัดการที่ดี และระบบที่ฟื้นตัวได้เอง อีกจุดเด่นของผลิตภัณฑ์คือเป็นระบบเปิด ทำให้ลูกค้าสามารถโปรแกรม switch ให้เข้ากับระบบต่าง ๆ ของตัวเองได้รวดเร็วและหลากหลาย
ลูกค้าหลัก ๆ ของ Arista จะเป็นพวก Tech Savvy ที่มีความเชี่ยวชาญและใหญ่พอจนต้องพัฒนาระบบขึ้นมาเป็นของตัวเอง เช่น Microsoft, Google, Facebook, eBay, Netflix และสถาบันการเงินต่าง ๆ
เกร็ดน่าสนใจคือผู้ก่อตั้ง Andy Bechtolsheim และ David Cheriton เป็นคู่หูที่ตั้งบริษัทด้วยกันมาแล้ว 3 บริษัท ที่ดัง ๆ ก็คือ Sun Microsystems
นอกจากนี้ Andy ยังเป็นนักลงทุนคนแรกที่ลงทุนกับ Google อีกด้วย โดยในปี 2541 Andy เขียนเช็ค 100,000 ดอลลาร์ให้ Sergey Brin กับ Larry Page แต่ทั้งสองคนยังเอาเงินไปขึ้นไม่ได้เพราะ Google ยังไม่มีบัญชีธนาคาร ฮา (อ้างอิง)
ขออธิบายสถาปัตยกรรมคร่าว ๆ ก่อนนะครับ ระบบซอฟต์แวร์ของ Arista เป็น publish-subscribe system แบ่งการทำงานแต่ละส่วนออกเป็นโปรเซสต่าง ๆ ซึ่งรับผิดชอบหน้าที่ไม่เหมือนกัน (สมมติเช่น โปรเซสควบคุมพัดลม โปรเซสควบคุม LED) แต่ละโปรเซสจะสนใจข้อมูลบางอย่าง (เช่นอุณหภูมิ) และผลิตข้อมูลบางอย่างที่โปรเซสอื่นสนใจ (เช่น ความเร็วพัดลม) โปรเซสทั้งหลายจะติดต่อผ่านระบบกลางที่เก็บข้อมูลทั้งหมด โดยจะ subscribe ข้อมูลที่สนใจ และ publish ข้อมูลที่โปรเซสอื่นสนใจ สวิตซ์ของ Arista รันอยู่บน Linux มีโปรเซสแบบนี้อยู่หลายร้อยโปรเซสครับ (อ้างอิง)
การแยกงานออกเป็นโปรเซสย่อย ๆ มีข้อดีคือทำให้ระบบเสถียรขึ้นมาก เพราะโปรเซสแต่ละตัวตายแยกกันได้ ส่วนการแยกข้อมูลเก็บแยกออกจากโปรเซสก็ทำให้โปรเซสที่ตายไปฟื้นตัวได้รวดเร็ว เพราะเมื่อโปรเซสเกิดขึ้นมาใหม่แล้วก็สามารถทำงานต่อจากสถานะล่าสุดที่เก็บไว้ในระบบกลางได้เลย
งานที่ผมทำอยู่เป็น framework ที่รองรับระบบ publish-subscribe ดังกล่าว ส่วนใหญ่เน้นไปที่วิเคราะห์และปรับปรุงประสิทธิภาพของระบบ เขียนเครื่องมือตรวจจับข้อผิดพลาดที่พบได้บ่อย ๆ หรือเขียนระบบอัตโนมัติเพื่อแก้โค้ดของโปรเซสทั้งหมดให้มีประสิทธิภาพมากขึ้น
เนื่องจากผมไม่เคยทำงานภาคอุตสาหกรรมที่ไทย จึงเปรียบเทียบแบบเป๊ะ ๆ ไม่ได้นะครับ
หลัก ๆ แล้วที่ประทับใจคือที่นี่เป็นระบบเปิดครับ พนักงานเข้าถึงโค้ดที่บริษัทเป็นเจ้าของได้ง่ายมาก ๆ คือถ้าขยันนี่มีโค้ดดี ๆ ให้เรียนรู้เพียบครับ อีกข้อนึงคือทีมต่างๆ ค่อนข้างเปิดกว้าง ถ้าเราเห็นอะไรไม่ดีเราสามารถช่วยเค้าแก้โค้ดได้เลย (แน่นอนว่าต้องคุยกันก่อนและผ่านกระบวนการรีวิว) วัฒนธรรมแบบนี้ทำให้เวลาเราเจอบักหรือฟีเจอร์อะไรที่กระทบกับเรามาก ๆ เราสามารถช่วยแก้ไขหรือพัฒนาขึ้นมาได้เลยไม่ต้องรอให้ทีมเจ้าของโค้ดมีเวลา ทีมเจ้าของก็ได้ประโยชน์เพราะมีคนมาช่วยพัฒนาโค้ดของตัวเอง win-win ครับ ที่ไทยอาจจะไม่เปิดเท่านี้
ส่วนเรื่องที่ว่าทำงานที่ไทยผู้คนสนิทกันมากกว่าอันนี้ก็จริงบางส่วนครับ คือที่นี่ถ้าใครอยากทำงานอย่างเดียวไม่สุงสิงกับใครก็ได้ครับ แต่ถ้าอยากสังสรรค์หาเพื่อนก็มีช่องทางครับ คือทางบริษัทมีงบให้สำหรับกลุ่มกิจกรรมต่าง ๆ เช่น กลุ่มฟุตบอล กลุ่มบอร์ดเกม ผมเองก็ไปเล่นด้วยบ่อย ๆ เพราะทำให้ได้คุยกับคนจากทีมอื่นและเราได้บริหารร่างกายและสมองครับ แต่ถ้าเป็นที่ไทยผมว่าไม่ต้องใช้ความพยายามครับ มาถึงจับกลุ่มสนิทกันเองอย่างรวดเร็ว น่ารักไปอีกแบบครับ ฮา
อีกเรื่องที่อยากเล่าให้ฟังคือประสบการณ์ในบริษัทสตาร์ตอัพที่ผ่านกระบวนการเข้าตลาดหุ้น (IPO) ครับ ผมเองโชคดีเข้าบริษัทก่อนเข้าตลาดหุ้นประมาณ 3-4 เดือน ช่วงกำลังจะเข้าตลาดหุ้นทุกคนตื่นเต้นกันมาก เพราะส่วนใหญ่แล้วพนักงานจะได้หุ้นบริษัท (แบบให้เปล่า หรือซื้อในราคาถูก) ตั้งแต่ก่อน IPO อยู่แล้ว พอบริษัทเข้าตลาดหุ้นก็เป็นหนทางที่จะขายทำกำไรออกมา เรียกได้ว่าหลายคนทำงานมาหลายปีเพื่อสิ่งนี้ คืนก่อนวัน IPO บริษัทผมเลยจัด hackathon ข้ามคืนฉลองซะเลย ผมเองก็จัดทีมกับเพื่อนอยู่ลุยด้วย ตอนเช้ากลับบ้านอาบน้ำแล้วกลับมาฉลองกันต่อที่บริษัท มีถ่ายทอดสดจากตลาดหุ้นนิวยอร์ค และกิจกรรมต่าง ๆ บรรยากาศฮึกเหิมมากครับ
ข้อดีอีกข้อของบริษัทที่ยังไม่ใหญ่มากคือเรามีโอกาสได้เจอ CTO, VP, Founder บ่อย ๆ ครับ นาน ๆ ทีก็จะมานั่งกินข้าวด้วยกัน ทำให้เรามีโอกาสได้เรียนรู้จากเค้าครับ ถ้ามีเรื่องอะไรก็เดินไปคุยได้ง่าย Andy เองก็โผล่มาคุยกับพนักงานเสมอในงานเลี้ยง (ล่าสุดคุยกันเรื่องน้ำบาดาล) ว่างๆ ผมว่าจะเลียนแบบ Sergey กับ Larry เดินไปขอเช็คจาก Andy บ้างเหมือนกัน :-)
ผมขอเล่าเรื่องวีซ่าการทำงานในสหรัฐคร่าว ๆ ก่อนนะครับ แล้วเรามาดูกันว่าเราจะไปทางไหนได้บ้าง (ขอย้ำว่าคร่าว ๆ นะครับ ตรวจสอบความถูกต้องหรือหารายละเอียดเพิ่มเติมได้ที่ Working in the US หรือปรึกษาทนายครับ)
ส่วนใหญ่เราต้องขอวีซ่าพวกนี้ก่อนถึงจะขอ Green card ให้ทำงานในสหรัฐได้ถาวรครับ
จากข้อมูลข้างต้น ถ้าอยากทำงานไอทีในสหรัฐ มีทางเลือกดังนี้
อธิบายเพิ่มข้อ 3 นะครับ การมาเรียนในสหรัฐมีค่าใช้จ่ายเยอะพอสมควร ทางหนึ่งที่ช่วยได้คือการขอทุนจากมหาวิทยาลัยที่นี่ (มีทั้ง Research Assistantship, Teaching Asisstantship, และ Fellowship) ซึ่งปกติไม่มีข้อผูกพันหลังเรียนจบ ปกติการสมัครขอทุนจะสมัครพร้อมกับการสมัครเข้ามหาวิทยาลัย การตัดสินใจจะแยกกัน เช่น มหาวิทยาลัยอาจจะรับเราเข้าเรียน แต่อาจจะให้หรือไม่ให้ทุนเราก็ได้
อีกวิธีคือขอทุนวิจัยจากอาจารย์มหาวิทยาลัยโดยตรงครับ โดยปกติอาจารย์แต่ละท่านมีทุนวิจัยอยู่แล้ว เราสามารถติดต่ออาจารย์ได้โดยตรงครับ เพราะอาจารย์ก็อยากหาเด็กเก่ง ๆ มาทำงานด้วยเหมือนกัน สิ่งที่ได้จากทุนส่วนใหญ่เป็นค่าเทอม (บางส่วนหรือทั้งหมด) และเงินเดือน ถ้าเราเลือกมหาวิทยาลัยที่ค่าครองชีพไม่สูง เราก็เรียนได้สบาย ๆ แถมมีเงินเก็บด้วยครับ
การสร้างโปรไฟล์ก่อนขอทุนเป็นเรื่องสำคัญครับ ก่อนขอทุน ถ้ามีผลงานวิจัยตีพิมพ์ออกมาในงานประชุมวิชาการหรือนิตยสารในระดับนานาชาติจะช่วยได้มาก ส่วนรางวัลการแข่งขันต่าง ๆ ทั้งในระดับประเทศและนานาชาติ รวมถึงโปรเจคที่น่าสนใจก็ช่วยได้เช่นกัน กรณีที่มีเงินทุนสามารถมาเรียนเองได้ (อาจจะทำงานเก็บเงินก่อน) ผมแนะนำให้หามหาวิทยาลัยที่อยู่ใกล้ ๆ แหล่งที่เราอยากทำงาน หรือมหาวิทยาลัยที่ดังมาก ๆ ไปเลย เพราะจะช่วยให้หางานได้ง่ายครับ
ฝากไว้สุดท้ายคือความเข้าใจจากครอบครัวและคนที่เรารักจะช่วยได้มากครับ ผมโชคดีที่มีทั้งสองอย่าง ขอบคุณครับ :-)