ชีวิต Full-stack Software Engineer ที่ Agoda

Share this article:

For English version, click here.

Thammarith working on a laptop

เคยสงสัยไหมครับว่าชีวิต Software Engineer (หรือโปรแกรมเมอร์นั่นแหละ) ที่ Agoda เป็นอย่างไร? ในบทความนี้ผมจะมาเล่าให้ฟังถึงประสบการณ์ทำงานว่า จากการทำงานที่นี่มา 1 ปี เป็นอย่างไร (ตำแหน่งของผมคือ Full-stack Engineer แต่ตำแหน่งสายไอทีอันอื่น ๆ ก็จะคล้าย ๆ กันครับ)

สวัสดี Agoda

ก่อนจะมาทำที่ Agoda ผมทำงานอยู่ที่ ViaBus ซึ่งเป็น start-up เล็ก ๆ แต่ทำแอปติดตามรถเมล์ และรถสาธารณะที่ไม่เล็ก แอป ViaBus มีผู้ใช้หลักแสนคน ตอนทำอยู่ที่ ViaBus ก็สนุกดี คนที่ทำงานด้วยเป็นกันเอง มีพาไปกินเลี้ยงกันทุกเดือน

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

ช่วงปลายปี 2019 โอกาสนึงก็เข้ามา อโกด้าจัดการแข่งเขียนโปรแกรม ผมก็ลองสมัครไปเล่น ๆ ถ้าจำไม่ผิดก็สมัครวันสุดท้ายด้วยมั้ง 🤣 ตอนแข่งก็มีโจทย์ประมาณ 5-6 ข้อ เป็นโจทย์ทั้งด้านอัลกอริธึม กับโจทย์ที่วัดทักษะการแก้ปัญหา (problem solving) ของเรา การแข่งให้เวลาประมาณ 3 ชั่วโมง คะแนนผมอยู่ลำดับที่ 50 กว่า ๆ

พอแข่งเสร็จผมก็ไม่ได้คิดอะไร แอบลืมไปแล้วด้วยซ้ำว่ามีแข่ง จนกระทั่งเดือนสองเดือนให้หลัง ก็มีเบอร์แปลกหน้าโทรเข้ามา เสียงปลายสายบอกว่าเป็นทีม recruitment ของอโกด้า แล้วก็บอกว่ามีตำแหน่งเปิดอยู่หลายตำแหน่ง สนใจไหม แล้วเขาก็ส่งเว็บมาให้เลือกตำแหน่งที่สนใจ ผมก็เลือก Client-side Engineer กับ Full-stack Engineer ไป

หลังจากคุยไปคุยมา 2-3 ครั้ง รู้ตัวอีกที ผมก็อยู่ที่ออฟฟิศของ Agoda เพื่อเริ่มสัมภาษณ์แล้ว

การสัมภาษณ์

ผมสัมภาษณ์ไปทั้งหมด 3 รอบใน 1 วัน รอบแรกสัมภาษณ์กับพี่ senior engineer 2 คน เขาก็ถามถึงงานที่ทำที่เก่า แล้วก็มีโจทย์ปัญหามาให้ ให้ลองตอบดูว่าถ้าจะเขียนโปรแกรมเพื่อแก้ไขปัญหานี้ เราควรใช้ data structure แล้วก็ algorithm แบบไหน แล้วพอผมทำเสร็จ พี่เขาก็ถามว่าเราจะสามารถทำให้มันดีขึ้นไปมากกว่านี้ (optimize) มันได้ไหม?

หลังจากผ่านรอบแรกไป ผมก็สัมภาษณ์ต่อกับ manager ของทีม data เขาให้ฟังก์ชันมา 5-6 อัน แล้วให้ใช้แค่ฟังก์ชันที่ให้มาในการแก้โจทย์ เสร็จแล้วเขาก็ให้ optimise เหมือนรอบแรก

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

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

หลังจากสัมภาษณ์เสร็จ ก็มีอีเมลโจทย์ให้กลับไปทำที่บ้านเพิ่มอีกข้อ โจทย์ให้เลือกใช้ภาษาใดก็ได้ที่ถนัดเพื่อเขียนโปรแกรมแก้ปัญหาที่โจทย์ให้มา พร้อมเขียน tests ทดสอบโปรแกรมของเรา

ผมเคยถามเพื่อนร่วมงานคนอื่นว่าสัมภาษณ์กันกี่รอบ บางคนก็แค่รอบเดียว บางคนก็สัมภาษณ์ 5 รอบ คำถามก็แตกต่างกันไปตามทีม และประสบการณ์ของเรา

วันแรกที่อโกด้า (จากที่บ้าน)

หลังจากสัมภาษณ์เสร็จประมาณอาทิตย์นึงได้ก็มีสายเดิมโทรเข้ามาว่าอโกด้าตกลงรับผมเข้าทำงานในตำแหน่ง Full-stack Engineer ผมก็ตอบตกลงไป แล้วเขาก็นัดวันให้ไปรับโน้ตบุ๊คและอุปกรณ์ต่าง ๆ ที่ออฟฟิศ

วันที่ไปรับอุปกรณ์ เขาก็ให้โน้ตบุ๊ค Dell มา พร้อมอุปกรณ์พวก docking station แล้วก็ welcome kit เป็นของที่ระลึก ถ้าทีมที่เป็นฝั่ง backend, data หรือทีมที่ต้องใช้ MacBook ก็จะได้ MacBook แทน

วันทำงานวันแรกของผมเป็นช่วงปลายเดือนมีนาคม 2563 ช่วงนั้นทุกคนน่าจะจำได้ดีว่าเป็นช่วงที่มีการล็อคดาวน์ ทำให้วันแรกของผมที่ Agoda กลายเป็นเริ่มจากที่บ้าน (work from home)

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

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

หลังจาก WFH ได้ประมาณ 3 เดือน เราก็ได้เวลากลับไปทำงานที่ออฟฟิศที่รักกันแล้ว เดี๋ยวผมจะมาเล่าให้ฟังว่าประสบการณ์ทำงานที่ออฟฟิศมันเป็นยังไง

ทีม ทีม แล้วก็ทีม

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

ทีมแรกของผมก็คือทีม white label เป็นทีมที่คอยซัพพอร์ต JTB ที่เป็นพาร์ทเนอร์ของอโกด้า ทีมนี้ก็จะช่วยทำเว็บให้ JTB และบางทีก็เรียนรู้จากฟีเจอร์ของมาปรับในเว็บของอโกด้าเหมือนกัน ผมทำทีมนี้ไปได้ประมาณ 3 เดือนนิด ๆ ก็ย้ายทีมไปอีกทีม

ทีมที่ย้ายมาก็เป็นทีม YCS ซึ่งเป็นระบบที่ให้โรงแรมเข้ามาจัดการข้อมูล ราคาของโรงแรมบนเว็บของอโกด้า ในทีมนี้ผมก็ได้โอกาสที่ design ระบบเก็บข้อมูลภายนอกต่าง ๆ ของโรงแรมด้วย ผมอยู่กับทีมนี้ประมาณครึ่งปีได้ แล้วก็ย้ายไปทำอีกทีม

ทีมที่สามเป็นทีม SEO หน้าที่ของทีมนี้ก็คือทำยังไงก็ได้ให้เวลาคนค้นหาที่พักบนเว็บอย่าง Google แล้วผลลัพธ์จะโชว์ Agoda เป็นอันดับต้น ๆ โปรเจคที่ผมทำก็คือย้ายระบบ indexation ที่ของเก่าเขียนเป็น stored procedure ให้มาเป็น ETL บน Hadoop แล้วก็สร้างตัวที่ปั้น sitemaps.xml ขึ้นมาใหม่ ซึ่งระบบใหม่จะลดเวลาทำงานจากเดิมที่ใช้เป็นวัน ให้เหลือแค่ไม่กี่ชั่วโมงก็ทำงานเสร็จแล้ว

ส่วนทีมปัจจุบันของผมคือทีม Personalization ทีมนี้ได้ทำงานกับ data scientists หน้าที่ของทีมนี้ก็คือ เราจะเดาใจคนเข้าเว็บโดยใช้ model ที่ฝั่ง data sci ปั้นมา มาเสนอที่พักที่เขาอาจจะสนใจ

ผมย้ายทีมไปมา 4 ทีมภายในระยะเวลาประมาณ 1 ปี ได้ลองเล่น ลองทำ ลองเรียนรู้ของใหม่ ๆ มากมาย เทคโนโลยีบางอย่าง เช่น Scala หรือ Hadoop ผมก็ไม่คิดว่าจะมีโอกาสได้ทำ แต่ก็ได้ทำ ได้เรียนรู้ ถือว่าเป็นประสบการณ์ที่ดี

เทคโนโลยี

ที่อโกด้า เราใช้เทคโนโลยีหลายตัวมาก ฝั่ง client-side เราใช้ React + TypeScript กัน ส่วนฝั่ง server-side เราใช้ C# (.NET Core) เป็นเซิร์ฟเวอร์ ซึ่ง full-stack engineers ทุกคนก็จะได้ทำทั้ง 2 ตัวนี้

สำหรับฝั่ง backend เท่าที่ผมรู้ก็คือจะใช้ Scala, Hadoop, Spark ฝั่ง database ก็จะใช้ Microsoft SQL, Couchbase พวกนี้

เวลาเราเขียนโค้ดเสร็จ เราก็ต้องเขียนเทสต์ ไม่งั้นก็จะมีคนบอกให้ไปเขียนเพิ่มตอนที่มี code review ฝั่ง React เราใช้ Jest ในการเทส ส่วนฝั่ง C# ใช้ NUnit/xUnit ตอนเขียนเทสก็มีทั้ง unit test, integration test, end-to-end test, Selenium test และก็มีการเทสเว็บที่อยู่บน production อยู่เรื่อย ๆ ด้วย นั่นแปลว่าถ้าคุณเข้าเว็บของอโกด้า แล้วเจอปัญหา พวกเราก็จะรู้ แล้วก็กำลังแก้อยู่!

นอกจากพวกเทคโนโลยีที่เราเคยได้ยินกันทั่วไปแล้ว Agoda ก็มีระบบที่เขียนเอง เช่น ระบบที่ทำ A/B test หรือระบบ BuildFlow ที่จัดการ pull request, CI/CD เพราะเรามี PR เป็นร้อย ๆ ต่อวันเลยทีเดียว

ของเล่นภายในบางอย่าง เราก็ทำเป็น open-source ให้คนภายนอกเอาไปใช้ได้ เช่น Kakao, Samsahai ลองไปดูกันได้บน GitHub ของ agoda-com

ชีวิตในแต่ละวัน

ที่นี่เราใช้ Agile ในการทำงาน โดย Scrum ส่วนใหญ่จะให้เวลา sprint นึง 2 สัปดาห์

ถึงอโกด้าจะเป็นบริษัทใหญ่ แต่ก็ไม่ได้กำหนดเวลาเข้าออกที่ชัดเจน เวลาทำงานที่นี่จะเป็น 9:00 – 18:00 น. แต่ตามจริงก็ค่อนข้างยืดหยุ่น ขอให้ทันเวลา stand-up ตอนเช้า หรือเป็นเวลาที่เหมาะสม

เวลา stand-up ของแต่ละทีมก็จะแตกต่างกันไป ส่วนใหญ่ก็จะอยู่ในช่วง 10 โมงถึงเที่ยง ยกเว้นบางทีมที่อาจจะต้องคุยกับออฟฟิศต่างประเทศ เช่นทีม Personalisation ที่มีบางวัน stand-up กันตอนบ่ายสามครึ่งเพื่อคุยกับออฟฟิศที่อิสราเอลด้วย

เวลาพักเที่ยงก็อยู่ราว ๆ 12:00 น. แต่จะไปพักก่อน หรือหลังก็ได้ (ถ้าไม่ติดประชุม) คนส่วนใหญ่ก็จะเลิกงานประมาณหกโมงเย็นถึงทุ่มนึง แต่ถ้างานเสร็จ ไม่มีอะไรจะทำแล้ว จะกลับก่อนก็ไม่มีใครว่า หรือจะอยู่ต่อเล่นเกม ไปวิ่งกับเพื่อน ๆ ก็ได้

ที่นี่ฝั่ง engineer จะไม่ค่อยประชุมกันพร่ำเพรื่อ ส่วนใหญ่ก็จะเป็นแค่ grooming, retro, design review เท่านั้น แล้วก็จะพยายามจบกันไม่ยืด เพราะมีคนรอใช้ห้องต่อ

วัฒนธรรมการทำงาน

ด้วยความที่เป็นบริษัทนานาชาติ เราก็จะได้เจอเพื่อนร่วมงานหลายเชื้อชาติ บรรยากาศการทำงานก็รู้สึกอยู่ร่วมกัน ไม่มีการเหยียดเชื้อชาติหรือสีผิว การทำงานส่วนใหญ่ก็จะใช้ภาษาอังกฤษในการทำงาน แต่ก็เห็นชาวต่างชาติส่วนใหญ่พูดไทย dai nid noi หลังจากอยู่ไปสักพัก (เขาใช้ 555 เป็น)

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

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

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

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

วัฒนธรรมฝั่งเทค

หนึ่งในคำที่ได้ยินบ่อยที่สุดตอนทำงานก็คือ experiments (การทดลอง) ผมได้ยินคำนี้ตั้งแต่รอบสัมภาษณ์ คนสัมภาษณ์เล่าให้ฟังว่า ถ้าเรามีฟีเจอร์อะไรสักอัน เราก็จะสร้าง experiment อันนึงขึ้นมาวัดผลฝั่ง A/B ว่าฟีเจอร์นี้ให้ผลตามที่เราคิดไว้หรือเปล่า ถ้ามันให้ผลตามที่ต้องการจริง เราก็จะ integrate (ผนวก) โค้ดลงไปในโค้ดหลักของเรา

อีกคำนึงที่ได้ยินบ่อยก็คือ data เราเชื่อใน data และการตัดสินใจหลาย ๆ อย่างก็ตัดสินใจจาก data ที่มี ซึ่งการที่จะได้ข้อมูลเหล่านี้มานั้น เราก็ต้องมีการวัดค่าต่าง ๆ เช่น จำนวนการจองโรงแรม, การคลิกของผู้ใช้ ฯลฯ แล้วนำข้อมูลดิบเหล่านั้นมาใช้วัดผลและตัดสินใจ

(รู้ไหมว่า?) ที่อโกด้า เรามีการเก็บข้อมูลแม้กระทั่งจำนวนข้อความที่ส่ง จำนวนการประชุมในช่วง WFH เทียบกับช่วงที่ทำงานในออฟฟิศเลยด้วยซ้ำ

บรรยากาศการทำงาน

ออฟฟิศแต่ละชั้นก็จะมีห้องสวรรค์ เรียกว่าห้อง pantry ในห้องนี้ก็จะมีกาแฟสดกดจากเครื่องเอาได้เลย หรือจะชงชา ตักซีเรียล หยิบคุ้กกี้ ผลไม้ไปกินก็ได้ (แต่ต้องรีบหน่อย กล้วยหมดไวมาก!)

ถ้าเบื่อของกินที่ออฟฟิศ จะลงมาแวะร้านกาแฟ ร้านขนม ร้านชานมไข่มุกที่ Central World ก็ได้ ร้านของกินมีมากมาย ลองกันไม่หมดไม่สิ้น ตอนที่คิดว่าจะลองครบแล้วก็มีร้านเปิดใหม่มาให้ลองต่อ ส่วนมื้อเที่ยง หลายร้านก็สามารถใช้ส่วนลดพนักงานได้ เพียงโชว์บัตรพนักงานก็ได้ส่วนลด 10-20% เลยทีเดียว

กินข้าวอิ่ม ๆ ขึ้นมาทำงานก็กลัวหลับ เราสามารถขอโต๊ะที่ยกขึ้นยกลงได้ (standing desk) ทีนี้เราก็สามารถยืนทำงาน ไม่ต้องห่วงหลับและออฟฟิศซินโดรมแล้ว แต่ถ้าปวดหลัง ปวดไหล่ ทุกวันศุกร์ก็จะมีคนพิการทางสายตามานวดให้

นอกจากนี้อโกด้ายังมีโปรแกรมที่ชื่อว่า Agoda Choice ให้สามารถเลือกสวัสดิการที่เกี่ยวกับการเรียนรู้ (จะในสายงานหรืออย่างอื่นก็ได้) และการดูแลสุขภาวะ (อย่างเช่น ฟิตเนส สปา ตรวจสุขภาพ) ได้เองอีกด้วย

หลังเลิกงาน เราก็ยังมีกิจกรรมต่าง ๆ เช่น เล่นบอร์ดเกม, FIFA, Nintendo Switch กันตามใจชอบ หรือจะนัดกันไปตีแบต เตะบอล ดำน้ำกับเพื่อนร่วมงานก็ได้ บางคนก็รวมตัวกันไปทำกิจกรรมสาธารณประโยชน์​ (CSR) ร่วมกับชุมชนหรือองค์กรต่าง ๆ

ถ้าคุณคิดว่าทำงานที่นี่แล้วจะเครียด ผมอยากเปิดห้อง #random ใน Slack ให้ดูเลย ในห้องนั้นมีทั้งมีม คุยเล่นให้ดูกันทุกวัน ส่วนบน Facebook Workplace ของเรา ก็มีกลุ่มรวมรูปแมวน่ารัก ๆ จากทางบ้านหรือน้อนรอบ ๆ ออฟฟิศเป็นกำลังใจในการทำงาน ผมบอกได้เลยว่ากลุ่มนี้เป็นกลุ่มที่ดีที่สุด

two cats on a benchน้อนนนนนนน (ภาพ: Sarah Chew)

สำหรับคนที่อยากเพิ่มความรู้ของตัวเอง ก็มีห้อง #dev-knowledge-share, #mastering-scala เป็นที่แบ่งปันบทความ หรือเทคนิคต่าง ๆ ให้กันและกัน หรือจะถามคำถามที่เราอยากรู้ก็ได้

ในทุก ๆ เดือน เราก็จะมี tech talk ภายในที่เปิดโอกาสให้ใครก็ได้มาแชร์ความรู้ เทคนิค หรือโปรเจคเจ๋ง ๆ ให้คนอื่นได้ฟัง ตัวอย่างของ tech talk ก็เช่น workshop เกี่ยวกับด้าน data ว่าเราจะทำ ETL อย่างไร, เราจะหาข้อมูลที่เราต้องการใช้จาก datamarket ของ Agoda ได้อย่างไร เป็นต้น

ฟังดูน่าสนใจ! ถ้าอยากสมัครงานต้องทำยังไง?

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

(กระซิบ) ได้ข่าวมาว่าช่วงกลาง ๆ ปีเราจะมีการแข่งเขียนโปรแกรมกันอีกรอบ ได้เวลาฝึกทำโจทย์กันแล้ว!

Agoda เปิดรับทั้งเด็กจบใหม่และคนที่มีประสบการณ์ทำงานแล้ว หวังว่าจะได้มาเจอกันที่อโกด้านะครับ

 

เกี่ยวกับผู้เขียน

ธรรมฤทธิ์ ลิขิตธีรเมธ เป็น Full-stack Software Engineer ที่อโกด้า