3 วันกับการ Hackathon ในบริษัท

Surasak
2 min readApr 19, 2019

สำหรับบทความนี้ ผมขอแบ่งปันมุมมองเล็กๆ ต่อการเขียนโปรแกรมแบบ Hack ๆ (ขอใช้ไม้ยมกนะจ๊ะ)

โจทย์ที่ต้องทำให้เสร็จภายใน 3 วัน (17–19 เมษายน 2019) ก็คือ ทำหน้าเว็บง่าย ๆ มา 1 หน้า แล้วเอาอะไรบางอย่างของธนาคารมาแปะลงไป จากนั้นก็เอาหน้านี้ให้ลูกค้าใช้ เพื่อจ่ายเงิน ให้เราได้สะดวกยิ่งขึ้น โดยสิ่งที่จะต้องทำมีสองส่วนหลักๆ คือ จะต้องปรับ Flow ของโปรแกรมที่บริษัทมีอยู่แล้ว ให้สามารถใช้งาน feature นี้ได้ และการขึ้น Project ใหม่ เพื่อทำเรื่อง Payment โดยเฉพาะเลย

ปร๊ะ ดูไฮโซ …..

แต่ในความไฮโซ โอ้โห มีน้ำตาซ่อนอยู่ …..

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

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

ต่อมาก็ช่วยกันระดมความคิด วาด UI ดิบๆ ง่ายๆ ออกมาก่อน ว่าต้องมีข้อมูลอะไรไปแสดงบ้าง แล้วก็ออกแบบ ER-Diagram

ถึงกระนั้นก็เถอะ ตอนที่เริ่ม Hackathon กันแล้ว ก็ยังต้องมีปรับ มีแก้ดาต้าเบสกันอยู่เรื่อยๆ จนค่อย ๆ นิ่ง

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

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

สรุปว่า ….

Flow นิ่งจร้า พร้อมเขียนโปรแกรม

สิ่งที่ได้เรียนรู้ เรื่องแรกเลยก็คือ ถ้า Flow ชัดเจนตั้งแต่แรก การเขียนโปรแกรมมันจะไม่ยากเลย นั่นล่ะคือ Goal ของพวกเรา

เช้าวันที่สอง ตอนสาย ๆ ทุกคนก็เริ่มแบ่งงานกันเลย

มาทำงานที่เรารักกันเถอะ 5555555555555555555555555555555

งานหลักๆ ในช่วงเช้าวันที่สองก็คือ การขึ้น Database, DevOps, User Acceptance Criteria, Short link

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

ช่วงเช้า เราตั้ง Goal ไว้เลยว่า

  • Database ต้องสามารถเชื่อมต่อได้ด้วย tools อื่นๆ ก่อนจะเริ่มต้นเขียนโปรแกรม
  • ลงมือเขียนโปรแกรมง่ายๆ เพื่อทดสอบว่าต่อกับ Database ได้จริง
  • ลอง Deploy ของขึ้น Server และลองเข้าเว็บไซต์ด้วย Domain ที่เรากำหนดไว้สำหรับเทสในการ Hackathon ครั้งนี้ เพราะพวกเราจะไม่เปิด Localhost ให้ลูกค้าเล่นแน่นอน

ช่วงบ่าย วันที่สอง ค่อนข้างวุ่นวาย เพราะแต่ละคนเริ่มลงมือเขียน Core logic ของแต่ละส่วน เพื่อจะเตรียมเอามาเชื่อมต่อกัน

พวกเรามี Agenda ชัดเจน ว่าเราจะทำอะไรกันบ้าง สำหรับในแต่ละวัน

แต่พอเอาเข้าจริงๆ แทบจะไม่ได้เป็นไปตาม Agenda เลย เพราะอะไร ?

  • เราพบปัญหาใหม่ๆ เข้ามาตลอด และต้องคอยแก้ และ research ตลอดเวลา มีทั้ง human error และ technical error ซึ่งทุกคนจะเจอปัญหาแบบนี้เป็นระยะๆ
  • Document ของธนาคาร อ่านรอบเดียวแล้วเขียนโปรแกรมเลย เป็นไปไม่ได้ ไม่มีทาง ทำไปสักพัก จะถึงจุดที่ว่า ต้องกลับมานั่งย้อนอ่านใหม่อีกรอบ อ่านให้แตก ทำความเข้าใจให้ละเอียดขึ้น ก็เลยต้องเสียเวลาไปบางส่วน
  • สิ่งที่คิดไว้ กับสิ่งที่ได้ ไม่ตรงกัน เขียนโปรแกรมแบบเดิม ได้ผลแบบเดิมมาตลอด พอลองเขียนแบบเดิม กับโปรเจ็กใหม่ อ้าวววว ทำไมไม่ได้ !!!! ก็ต้องมานั่งไล่หาสาเหตุว่าทำไม ก็เสียเวลาไปอีก
  • ตามกำหนดการ เราเผื่อเวลาเอาไว้เทสโปรแกรมกันด้วย แทบจะเป็นวัน พอเอาเข้าจริง มีเวลาเทสก่อนนำเสนองาน แค่ครึ่งชั่วโมง อันนี้พีคมาก
  • ช่วงแรก โปรแกรมเมอร์เดือด ช่วงหลัง เทสเตอร์ เดือดจร้าาาาาาาา ผลัดกันเดือด

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

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

พอถึงเที่ยงคืน พวกเราถึงแยกย้ายกันกลับบ้านไปพักผ่อน เพราะพรุ่งนี้เช้าน่าจะพร้อมเอาทุกอย่างมาเชื่อมกันละ

แล้ววันที่สองก็ผ่านไป ….

วันที่สาม วันสุดท้าย ทุกคนจะรู้สึกว่า ทำไมเวลาวันนี้ มันสั้นจัง

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

ทำไปแก้บั๊กไป deploy ไป เดือดในเดือดอีกที

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

โอ้โห สามวัน กับการทำ Hackathon เพื่อคลอดสิ่งใหม่ ให้กับบริษัท สนุกดีนะ ท้าทายดี ได้เจอปัญหาใหม่ๆ ซึ่งถ้าไม่ได้ลองมาทำ จะไม่มีทางได้รู้เลย

ในส่วนตัวของผมเองนั้น มีเรื่องที่ต้องเอากลับไป research เพิ่มเติม นั่นก็คือ AWS Network Load Balancer แล้วเดี๋ยวผมจะเอามาเล่าให้ฟังเป็น Case Study ครับ ถ้าได้ลงมือทำแล้ว

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

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

ขอบคุณครับที่สละเวลาอ่านบทความนี้ แฮ่ๆ แล้วพบกันใหม่ โอกาสหน้า

--

--

Surasak
Surasak

Written by Surasak

Innovative Leader inspiring creativity and driving change to achieve business objectives and customer satisfaction.

No responses yet