เมื่อ Manager มาแข่งเขียน Code ในงาน TechJam 2017 by KBTG

รู้จักกันนิดนึง

ผู้เขียนทำงานอยู่บริษัท IT ชื่อดังย่านพระรามสาม ในตำแหน่ง Implementation Manager 3–4 ปีที่ผ่านมางานหลักก็คือ ประเมินงานก่อนรับโปรเจค แล้วก็ทำให้ส่งงาน เก็บเงินให้ได้ ดูแลน้องๆพี่ๆให้มีกำลังใจทำงาน คอยแก้ปัญหาให้

อาวุธคู่กายก็คือ MS Project, Powerpoint, Excel อ้อลืมเครื่องมือหากินหลัก Outlook เวลาจะเขียนโค้ดก็ใช้เสียงเป็นหลัก ตามที่ทุกคนคิดนั่นแหละครับ สั่งน้องๆ SA, BA, Dev เอา

ชักยาวไปแระเริ่มเรื่องเลยละกัน

TechJam by KBTG คืองานอะไร?

TechJam คืองานแข่งที่แบ่งเป็น 3 track คือ code, data, design โดยมีรางวัลใหญ่คือได้ไป Silicon Valley !!

ซึ่งแต่ละ track จะหาคนเก่งในด้านนั้นๆ อย่าง code track ก็จะมีโจทย์ด้านโปรแกรมมาให้แก้

data track ก็จะมี data set มาก้อนนึงแล้วให้ทำนายผลว่า data set ก้อนที่เหลือจะได้ผลแบบไหน เช่น มีข้อมูลการใช้บัตรเครดิต กับเพศคนถือบัตร แล้วให้ machine learn ว่าข้อมูลการใช้บัตรแบบไหนจะเป็นเพศอะไร

design track จะให้ออกแบบ ux/ui ให้ตอบโจทย์กลุ่มคนตามที่กำหนด

แล้ว KBTG คือไคร?

KBTG ย่อมาจาก KASIKORN Business-Technology Group พูดง่ายๆก็คือบริษัทที่แยกออกมาจาก KBank เพื่อทำเรื่อง IT โดยเฉพาะ ตึกเขาอยู่ที่เมืองทองซึ่งเราจะได้ไปแข่งรอบสุดท้ายที่นั่น (ถ้าผ่านรอบคัดตัวนะ)

รอบเรียกแขก TechJam Mixer Event

เป็นการโปรโมทงานแข่ง แต่เล่นใหญ่ตามสไตล์ KBank โดยเชิญพันธมิตร(ไม่ไช่ที่พากหนังนะ) เช่น LINE, Google Developers, Data scientist จากบางมด มาให้ความรู้เรื่อง AI, Machine Learning, Blockchain, Design Thinking จัดที่โรงละครเคแบงก์ สยามพิฆเนศ ชั้น 7 สยามสแควร์วัน

ช่วงแรกจะเป็นผู้บริหารของ KBTG มาเล่าว่าทำไมถึงจัดงานนี้ ส่วนช่วงหลังจะเป็นแยกห้องให้ผู้เชี่ยวชาญแต่ละสาขามาบรรยาย และมี Panel Discussion กัน ผมเข้าห้อง data เพราะสนใจเรื่อง Machine Learning (จริิงๆภรรยาที่เป็น Data Scientist ไปด้วย 55)

ได้รู้ว่าทำไมเมื่อก่อนธนาคารถึงยังทำพวก Bigdata AI ไม่ได้ แล้วทำไมตอนนี้ถึงทำได้และเรื่องนี้จะบูมมากในอนาคตอันไกล้ รายละเอียดดูได้จาก blognone

มี fb live ด้วยนะที่ https://m.facebook.com/story.php?story_fbid=1403124826444339&id=1386124758144346 มีหลายตอนเลย ที่น่าสนใจจะเป็นตอนแยกห้อง

ช่วงสุดท้ายก็มีของกิน และพูดคุยกัน (มีเบียร์ด้วยนะ)

รอบ Online Audition

หลังจากงาน Mixer Event ก็เว้นช่วงให้สมัครและเตรียมตัวกันประมาณ 1เดือน(นานไปไหม)

ผมตัดสินใจลง code track เพราะรู้ว่าลง data track ไม่รอดแน่ๆ มีทีมเข้าแข่ง 204 ทีม จะลงเดี่ยวหรือคู่ก็ได้ใช้กติกาเดียวกัน ซึ่งผมเลือกลงเดี่ยวเพราะอยากจะวัดศักยภาพตัวเองว่าจะได้แค่ไหน

หลังจากสมัคร ก็ค่อยๆรื้อฟื้นวิธีเขียนโค้ด ลองของใหม่ๆ พวก react, firebase

ลอง ide พวก vs code, intellij

ลอง ภาษาใหม่ๆเช่น go แต่อันนี้ยังไปไม่รอด

เรียนวิธีเขียนเทสจาก กูโค้ด https://youtu.be/q0wdEt1IMiY อันนี้แหละช่วยชีวิตผมเลย ช่วยให้ทำโจทย์รอบแรกได้แบบมีระบบ (พี่ Roof สอนดีมาก)

ถึงเวลาแข่งขัน

วิธีการแข่งก็คือ กรรมการจะบอกโจทย์ตอน 6โมงเย็นวันศุกร์ มีเวลาทำจนถึงเที่ยงคืนวันอาทิตย์ รวมมีเวลาทะ 54ชม. ถ้าไม่นอนอะนะ

โจทย์มี 5ข้อ คะแนนไม่เท่ากันตามความยากง่าย มีตั้งแต่ 5 คะแนนสองข้อ 6คะแนนสองข้อ และ 7คะแนนหนึ่งข้อ กติกาก็คือจะเอาข้อที่เราทำคะแนนมากสุด 3 ข้อ โดยข้อไหนทำผิดแม้แต่ Testcase เดียว คะแนนจะเป็น 0 ทันที พูดง่ายๆว่ามีแต่เต็มกับศูนย์

กรณีคะแนนเท่ากันคนที่ส่งก่อนจะได้เข้ารอบ รอบนี้คัดเอา 50ทีม แปลว่าอีก 150ทีมต้องตกรอบ

ใช้ได้หลายภาษา เช่น java, c#, c++, go ส่ง code ที่ codility.com จะมี testcase อยู่ 1อัน ให้กดรันว่าผ่านหรือเปล่า ถ้าผ่านก็ submit คำตอบได้

ก่อนอื่นก็ต้องตั้งเป้าหมายกันก่อน หรือบางคนอาจจะเรียกกลยุทธ์ พอดูโจทย์แล้วผมเลือกทำข้อ 6คะแนนก่อนเพราะมั่นใจว่าน่าจะทำได้ แล้วถึงทำข้อ 5คะแนน ถ้ามีเวลาเหลือถึงจะทำข้อ 7คะแนน ตามกลยุทธ์นี้ จะได้ 6+6+5=17คะแนน ถ้าพลาดก็น่าจะยังได้6+5+5=16 คะแนน น่าจะเพียงพอในการเข้ารอบ

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

เห็นยิ้มๆอย่างนี้ งอแงนี่เอาเรื่องเลยนะ

พอช่วงเช้าก็ยังวุ่นวายกันอยู่จนมาได้เริ่มทำก็เที่ยง ทำจนเย็น เข้า loop เดิม สาวน้อยงอแงต้องปรอบอีก แต่ก็ทำเสร็จไป 2 ข้อ

พอเช้าวันสุดท้ายเร่งทำจนเสร็จอีก 2ข้อตอนเที่ยง เลยคิดว่ามีเวลาเหลือลองทำข้อยากหน่อยซิ พอทำดูมันก็ไม่ได้ยากมากนักแค่ต้องสังเกตหน่อยนึง สรุปทำเสร็จหมด 6โมงเย็น ส่งไปแล้วรอฟังผลซึ่งจะประกาศอีก 1 สัปดาห์

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

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

ถ้าถามความรู้สึกก็ดีใจนะ แสดงว่าเรายังมีตรรกกะที่ดีอยู่ แต่ยังต้องพัฒนาเรื่องเทคนิค

Final Round

จัดที่ตึก KBTG ชั้น 11 เมืองทอง ผมเคยมาตึกนี้ประจำเพราะมีโปรเจคที่ทำให้ที่นี่แต่ไม่เคยได้ขึ้นมาชั้น 11เลย ซึ่งมันแตกต่างกันมาก

K-Stadium
ที่นั่งทำงาน + พักผ่อน

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

เข้าเรื่องดีกว่ารอบตัดสินแข่งวันเดียว ตั้งแต่เช้าถึง 3ทุ่ม แล้วอีกวันจะประกาศผล

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

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

วิธีแบบนี้จะไม่มีการพลิกโผเลย ถ้าคนเก่งจะได้คะแนนเยอะขึ้นเรื่อยๆตามข้อที่ทำได้ ถึงจะผิดบ้างบาง testcase แต่ข้อที่คะแนนเยอะจะมาช่วยให้ชนะได้เอง

ส่วน test case ทั้งหมดที่จะทดสอบก็ให้มาเลย แต่ไม่ได้ให้คำตอบนะ

หลังจากฟังโจทย์แล้วก็ถึงเวลากำหนดกลยุทธิ ถ้าไม่มีโอกาศชนะก็ลองทำดูว่าจะได้เยอะซักเท่าไร แล้วก็ไม่ต้องเครียดมากนัก ทำไป กินไป 55

บางข้อที่ทำไม่ได้ก็ไล่ทำมือแล้ว switch case คำตอบลงไปเลย(ไม่รู้ว่าแบบนี้ผิดกฎหรือเปล่านะ)

สุดท้ายก็ทำได้ประมาณสองข้อครึ่ง ก็น่าจะอยู่กลางๆตารางนะ

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

ตอนบ่ายมีผู้บริหารของ KBank และ KBTGขึ้นมาพูดให้ฟัง ต่อด้วย GDE จากสิงคโปร์ แล้วก็รับรางวัล ถ่ายรูป รับใบประกาศนียบัตร แล้วก็กินเลี้ยงกัน

ต้องขอขอบคุณเจ้าภาพที่จัดงานดีๆแบบนี้ บรรยากาศชวนให้น่าทำงานจริงๆ

ขอบคุณ คุณ @ShiRaTo กรรมการที่ใจดี ใจเย็นมากครับ

ขอบคุณ คุณ @Puny ที่คอยประสานงานให้ผู้เข้าแข่งราบรื่นทั้งเรื่องเดอนทาง อาหารการกิน

สรุปได้อะไรจากงานนี้ ?

เยอะเลย ได้เสื้อมา 2 ตัว ม่ายช่ายย ได้กินอิ่มทั้งสองวัน ก็ไม่ไช่อีกแหละ สาระอะมีไหม?

เอาจริงๆได้ความรู้จากทั้ง 2 รอบ แถมได้ไฟในการทำงาน เพราะมีแต่เด็กเก่งๆเต็มไปหมดเลย

สาเหตุที่ลุกขึ้นมาเขียน เพราะเมื่อวานมีน้องคนนึงถามเรื่องนี้ขึ้นมา อีกส่วนนึงก็อยากเขียนให้คนที่ถูก Demote ให้ไปเป็น Manager แล้วไม่ได้เขียนโค้ดมาอ่าน

สำหรับใครที่สงสัยเรื่อง Demote ลองฟังบรรยาย ที่คลิปนี้ได้ (ดูให้ถึงนาทีสุดท้ายนะครับ) https://youtu.be/SQUyETGZ89E

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

ปล.อันนี้สาระจริง “วันนี้คุณเขียนโค้ดแล้วหรือยัง”

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.