สวัสดีครับ ผมชื่อแจ๊ค ในบทความนี้จะมาเล่าประสบการณ์ก่อนที่จะมาทำงานที่บริษัทปัจจุบัน PALO IT (Thailand) ที่มีบริษัทแม่ตั้งอยู่ที่ฝรั่งเศสครับ ท้าวความไปตอนเด็กผมชอบภาษาอังกฤษมาก แม้จะเรียนมัธยมสายวิทย์-คณิต แต่ผมมักจะฝึกฟังภาษาอังกฤษผ่านการเรียนวิชาอื่นๆ เช่น คณิต ก็จะมีช่อง Khan Academy กับเว็บ MathIsFun.com ที่เข้าไปบ่อยๆ เลยเป็นการปูพื้นฐานให้เรียนมหาวิทยาลัยคณะวิศวกรรมคอมพิวเตอร์ภาคอินเตอร์ครับ
KBTG
พอเรียนจบมาผมได้ทำงานที่ KBTG เผื่อใครไม่รู้จักนะครับ KBTG (KASIKORN Business-Technology Group) เป็นบริษัทพัฒนาเทคโนโลยีของกสิกร เรียกง่ายๆ ว่าบริษัทลูกน่ะแหละครับ และนับว่าโชคดีมากที่ได้ที่นี่เพราะอยู่ใกล้บ้านผมที่สุดและสมัยนั้นรถไฟฟ้า BTS ใกล้บ้านยังไม่เกิดครับ 555
ทำที่ KBTG ได้ 2 ปี มีทั้งใช้ ReactJS, React Native, NodeJS, NestJS, Prisma, Go web framework อย่าง Echo
โปรเจคที่ชอบสุดตอนอยู่ KBTG คือโปรเจคด้านสุขภาพ ซึ่งต้องเขียนแอพแล้วต่อกับ Apple Health เลยพบว่า Apple ไม่เหมือนเจ้าอื่นๆ คืออย่างพวก Fitbit, Garmin จะเก็บข้อมูลพวก heart rate (อัตราการเต้นของหัวใจ) การนอนหลับ สถิติการออกกำลังกายที่ server ของเค้าและเราสามารถดึงข้อมูลผ่าน API ได้เลย ส่วน Apple จะเก็บที่ iCloud ของ user จริงแต่นักพัฒนาไม่มีสิทธิ์ดึงได้ จึงเป็นความท้าทายที่เราต้องเขียนให้แอพดึงข้อมูลตอนเปิดแอพ แสดงผลบนแอพ แล้วเก็บที่ database ของเรา
Allianz Technology Thailand
หลังจากนั้นผมก็ย้ายไป Allianz Technology Thailand ด้วยเหตุผล 3 ข้อ
- เพื่อนแนะนำว่า work-life balance ดีมาก (พิสูจน์แล้วว่าจริง )
- ที่ KBTG ไม่มีต่างชาติให้คุยภาษาอังกฤษด้วย ผมเจอคนเวียดนามนะครับ แต่เค้าอยู่คนละโปรเจคเลยไม่ได้คุยกันในการทำงาน
- หาประสบการณ์ใหม่ๆ
ตอนทำที่นี่เป็น frontend developer และเขียน Angular อย่างเดียว ไม่เคยเขียนมาก่อน อาศัย On-the-job training เลยครับ
ที่นี่ใช้ Scaled Agile Framework (SAFe) ซึ่งเหมาะมากกับบริษัทใหญ่ที่มีหลายทีมทำโปรเจคเดียวกัน เพื่อไม่ให้บทความยาวเกินไป ขอไม่อธิบายลงละเอียดถึง framework นี้นะครับ
PALO IT (Thailand)
ทำได้อยู่ 1 ปี คุยกับเพื่อนร่วมงานเลยรู้จักคนที่ย้ายไป PALO IT (Thailand) ติดต่อคุยกับเค้า คิดว่าน่าสนใจดีด้วยเหตุผล 3 ข้อ
-
อยากใช้ MacBook Pro ตอนอยู่ Allianz ใช้คอม Lenovo CPU เป็น AMD Ryzen 5 และจอ resolution 1366x768p ถ้าไม่ต่อจอแยกคือดูแล้วปวดตามาก
ผมทำงานที่ Allianz ตอนช่วงโควิด บริษัทอาจจะลดค่าใช้จ่ายพอดีครับ พี่ที่ทำงานใช้ HP จอยังเป็น full hd (1920x1080p) เลย
ยังชอบเขียนแอพอยู่ ตอนอยู่ Allianz เขียนเว็บด้วย Angular v8 ซึ่งเก่ามาก ตอนนั้นล่าสุดน่าจะ v12 แล้ว
อยากเขียน backend บ้าง ตอนอยู่ Allianz เป็น frontend developer จึงเขียนแค่ frontend อย่างเดียว
ผมแอบลังเลก่อนยื่นสมัครงานอยู่เพราะเรื่องนึง คือพี่ที่ทำงานก็เคยทำงานบริษัทขนาดเล็กมาก่อน แล้วเล่าให้ฟังว่าเคยเจอว่าบริษัทหมุนเงินไม่ทัน ขอจ่ายเงินเดือนครึ่งนึง หรือบางที่เลื่อนจ่ายเงินเดือนก็มี โชคดีว่าเพื่อนที่รู้จักทำที่นี่มาปีกว่าแล้ว + บริษัทนี้ไม่ได้ก่อตั้งโดยคนไทยแต่ก่อตั้งโดยคนฝรั่งเศสในปี 2009 และมีออฟฟิศกว่า 10 สาขาทั่วโลก แปลว่าตัดคำว่า startup ออกได้
ตอนผมสัมภาษณ์มี 2 รอบ รอบแรกเป็นคนไทย รอบที่ 2 เป็นคนฝรั่งเศส ทั้งคู่สัมภาษณ์เป็นภาษาอังกฤษและมีโจทย์เขียนโปรแกรมให้ทำ ผมขอสปอยว่าแตกต่างจาก KBTG ที่ใช้ Codility อยากรู้ว่าโจทย์สัมภาษณ์คืออะไรให้สมัครเลยครับ 555
โปรเจคที่ PALO IT (Thailand)
เกริ่นมานาน ขอเข้าส่วนที่ผมชอบมากกับการทำโปรเจคต่างๆ ในบริษัทนี้นะครับ ถ้าเป็นโปรเจคเขียนแอพบนมือถือที่ผมทำอยู่ ในทีมมีถึง 30 คน ได้ใช้ภาษาอังกฤษทำงานทุกวัน ต่างชาติที่มีคนฝรั่งเศส คนเยอรมัน คนฟิลิปปินส์ คนฮ่องกง คนจีน เขียนแอพด้วย React Native และเขียนหลังบ้านด้วย Java Spring Boot ครับ ซึ่งไม่ได้จำกัดว่าทุกโปรเจคเราจะใช้ framework เดียวกัน อยู่ที่การตกลงกับลูกค้าว่าเค้าต้องการอะไรเพื่อไป maintain ต่อครับ
ที่นี่เราจะเป็น full stack developer กัน คือทำได้ทั้ง frontend และ backend ในโปรเจคผมจะเน้น frontend มากกว่าเพราะ requirement ต่างๆ จะหนักทางนั้นครับ
และนี่คือ system architecture อย่างง่าย
BFF ไม่ได้ย่อมาจาก Best Friends Forever นะครับ 555 ย่อมาจาก Backend For Frontend ที่ไม่เรียก backend เฉยๆ เพื่อให้เข้าใจว่าทำมาเพื่อแปลงข้อมูลสำหรับส่งให้ frontend โดยเฉพาะ เช่น เปิดแอพหน้านึงต้องไปต้องเรียกหลังบ้าน 3 เส้น หน้าที่ของ BFF คือเรียก 3 เส้นนั้น เพื่อให้ frontend เรียก BFF เส้นเดียวครับ
Downstream API services คือระบบหลังบ้านของลูกค้า
ตอนพัฒนาแอพบนเครื่อง
End-to-end testing
เพื่อที่จะทำ frontend app ให้มี bug น้อยที่สุด dev ทุกคนจึงต้องเขียน E2E (End-to-end testing) เพื่อต่อกับ simulator (จำลอง downstream api) และยึดตาม acceptance criteria ของ story นั้นๆ หลายคนคงเดาว่า "แบบนี้ก็ต้องมีเครื่องไว้รัน e2e ทุก story สิ" ใช่ครับ เราจะมีเครื่องไว้รันและหมั่นคอยเช็ค report ทุกวันว่าการทำ feature ใหม่ๆ ไปทำให้ของเก่าพังมั้ย
Q: รู้ได้อย่างไรว่า Downstream API ต้องการ request/response body หน้าตาแบบไหน เพราะมีหลาย service มาก?
A: เรายึดจาก API spec ที่ Business Analyst เตรียมให้ครับ หลังจาก sprint demo จบก็จะมี QA เตรียม data ไปทดสอบอีกทีบน UAT
Q: เราทดสอบแอพไปต่อ UAT เองได้มั้ย
A: ได้ครับ วิธีเดียวกับที่ปล่อยแอพให้ tester ทดสอบคือผ่าน App Center ข้อดีของเจ้านี้คือปล่อยให้โหลดได้ทั้ง iOS และ Android
Backend
ฝั่ง backend ก็มีเขียน test ต่อกับ simulator เช่นกัน เป็นการทดสอบว่า logic ถูกต้องไหม เช่น รับข้อมูล A จาก downstream ประมวลผลบางอย่างแล้วควรตอบกลับด้วยข้อมูล B และเราตกลงกันว่า test coverage ต้องเป็น 100%
Management
แน่นอนว่าทีมที่ใหญ่ก็ต้องมีการจัดการที่ดี มี 4 squad แต่ละ squad มี 4-5 คน ก็จะมี scrum master, tech lead และ developer เพื่อดูแล feature ในหมวดนั้นๆ ทุกวันก็มี daily standup ก่อนที่จะเอา story เข้า sprint ก็มี story refinement ก่อนเริ่ม sprint ก็มี sprint planning พอจบ sprint ก็มี sprint retrospective เรียกได้ว่าใช้ Agile methodology ค่อนข้างเต็มรูปแบบเลยครับ
Work from home มั้ย?
คิดว่าหลายคนต้องการคำตอบ ผมเลยแบ่งเป็นหัวข้อใหม่เลยครับ 555 คำตอบคือ Hybrid หมายถึง WFH เป็นหลัก และเข้า office 1 ครั้ง/2 สัปดาห์เพื่อ demo ให้ลูกค้าดู ทั้งนี้ขึ้นอยู่กับโปรเจคนั้นๆ ว่าจำเป็นต้องเข้าออฟฟิศบ่อยแค่ไหนด้วยครับ
โปรเจคนอก PALO IT (Thailand)
ThailandCan
ผมได้โอกาสร่วมพัฒนาเว็บไซต์ https://thailandcan.org/ โดยเฉพาะ landing page ที่ design ใหม่หมดโดย designer ของ PALO IT เอง ก็เป็นโอกาสดีในรื้อฟื้นทักษะการเขียน CSS แบบ responsive ให้ support ทั้งจอคอม แท็บเล็ตและมือถือครับ ตอนเขียนแอพคำนึงแต่มือถือ 555
Workshop
นอกจากโปรเจคที่ได้ทำแล้ว มีโอกาสได้ก้าวออกจาก comfort zone ด้วยการไปช่วยพี่ Paco (Tech Lead) จัด Advanced Prompt Engineering workshop ในงาน KBTG Techtopia 2024
และก็เป็นจุดเริ่มต้นของการจัด workshop เองที่งาน JS Bangkok 2024 ในหัวข้อ From Nodes to Prompts: Exploring Prompt Engineering with Rivet
ถ้าใครพลาดงานไหนไปก็ไม่เป็นไรครับ สามารถกดดูใน GitHub ได้เลย
- Advanced Prompt Engineering 2024 workshop
- JS Bangkok 2024 workshop มีไฟล์ PDF อธิบายใน repo ด้วยนะ
ขอบคุณที่อ่านมาถึงตรงนี้ครับ หากใครอยากรู้เรื่องอะไรเพิ่มเติมสามารถพิมพ์คอมเม้นถามได้เลยนะครับ ถ้าตอบได้ก็จะตอบครับ และยังมีโปรเจคอื่นๆ ที่น่าสนใจอีก ไว้มีโอกาสจะมาเล่าให้ฟังนะครับ
Top comments (0)