เบื้องหลังการสร้างเกมจำลองธุรกิจของ BASE : The Business Playhouse [Part 1]

What’s were the decision and process?

เมื่อวันอาทิตย์ที่ผ่านมาในคลาส Business For Youngster Vol.2 ทีม BASE นำ Business Simulation ออกมาใช้งานจริง หลังจากการพัฒนากว่า 6 เดือน! เป็นความน่าตื่นเต้น (อย่างน้อยก็สำหรับทีม dev ฮ่าาา) อย่างมากจริงๆ

บรรยากาศการเล่น Business Simulation

ทุกอย่างผ่านไปได้ด้วยความสมบูรณ์แบบ หลายๆคนอาจจะมองว่า “อ่าว ก็เขียนแอพแค่นั้น ไม่เห็นจะยากเลย” วันนี้ผมจะเล่าเบื้องหลังของการพัฒนาว่า กว่าจะมาเป็น Application ให้เราได้ใช้กัน ต้องผ่านกระบวนการกลั่นกรองอะไรมาบ้าง

Project.init() : IDEATE

โปรเจคนี้แรกเริ่มเดิมทีเป็นไอเดียที่จะสร้าง “จุดเด่น” ของ course สอนธุรกิจของเรา ที่จะให้ประสบการณ์ที่หาจากที่อื่นไม่ได้ ไอเดียหลักๆคือ

“ทำยังไงให้น้องๆที่เข้ามาสามารถ ทดลองทำธุรกิจจริงๆได้โดยไม่ต้องเจอกับความเสี่ยงจริงๆ”

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

พี่ ChomPoo Chimes ได้ตอบคำถามว่าทำไมถึงต้องเป็นเกมไว้แล้ว ลองอ่านกันดูครับ น่าสนใจมากๆ

MVP = Project.build() : IDEA => USEFUL STUFF

Our “Minimum Viable Product”

มีคำพูดนึงของ Casey Neistat ที่ผมชอบมากๆเลย เขาพูดไว้ว่า

Ideas are cheap. Ideas are easy. Ideas are common. Everybody has ideas. Ideas are highly, highly overvalued. Execution is all that matters.

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

MVP ตัวแรกใช้เวลา develop แค่เดือนเดียวเท่านั้น โดยมี process ที่ค่อนข้างคล้ายกับ Agile ที่มี sprint ระยะเวลา 1 week ซึ่งทั้งหมด track ด้วย Kanban board (เป็นบอร์ดจริงๆไม่ใช่แอพนะเออ)

การทำงานของทีมเริ่มจากการลิส feature ต่างๆของ simulation ไว้ทั้งหมดแล้ว assign งานให้แต่ละคนในทีมไปพัฒนาต่อ และตอนท้าย sprint มีการกลับมาเจอกันเพื่อ integrate ระบบและ testing และด้วยความที่ว่าตัว simulation เอง requirement ทุกอย่างค่อนข้างตายตัว การ integrate และ testing ทุกๆท้ายอาทิตย์ สามารถทำได้ไม่ยาก

MVP เวอร์ชั้นแรกได้ถูกนำไปใช้ใน course ทดลอง และ course Business for Youngster ครั้งแรก ซึ่งมันก็ทำงานได้อย่างน่าพอใจ

Lesson Learned : catch(e) => e.messages.to_setence

ระบบการทำงานที่ใช้อยู่ ณ ตอนนั้นมีปัญหาอยู่หลายอย่าง ที่เห็นได้ชัดเลยคือ

  1. No centralisation
    สิ่งที่ทุกคนทำคือการแยกกันไปเขียน ซึ่งไฟล์ของแต่ละคนจะเป็นคนละเซทกัน ทำให้มีปัญหาเวลานำมา integrate บาง dependency จะไม่เหมือนกันทำให้ integration ลำบาก
  2. No version control
    การย้อนกลับไปกลับมาของ simulation ทำได้ยาก คือถ้าไม่มีการเซฟไฟล์ไว้เป็น version จะไม่สามารถกลับไป version นั้นได้เลย แล้วมี version แยกย่อย ของแต่ละคนอีก ทำให้เกิดปัญหาเวลาจะปรับ function บางอย่างที่เคยทำไปแล้ว
  3. No test suite
    การเทสว่าข้อมูลถูกไหมมาจากการกดเครื่องคิดเลขตาม logic ที่คิดไว้ล้วนๆ เวลาแก้บางอย่างก็ต้องกลับมากดใหม่ว่าได้ output เท่าเดิมไหม ทำให้การเปลี่ยนแปลงครั้งนึกมี impact กับเวลามาก เพราะ ต้องกลับมาเช็ค output ใหม่ทุกครั้ง แถมถ้าอยากลองหลายๆ input set นี่คือต้องแบ่งหน้าที่ 1 คนให้เป็นคน test ระบบไปเลย ซึ่งค่อนข้างเสียเวลาพอสมควร
  4. Not scalable
    การจะทำให้หลายคนเล่นได้ทางเดียวคือการ share เจ้า excel ตัวนั้นออกไปซึ่งในทางปฏิบัติแล้วเป็นไปไม่ได้ เพราะ ด้านในมี business logic อยู่ ทำให้ถ้าอยากจะลองเล่นก็คือต้องมาเล่นกับคอร์สเราเท่านั้น ไม่สามารถกลับไปเล่นต่อที่บ้านได้
  5. Long development feedback loop & Manual Integration
    กว่าจะรู้ว่าฟังชั่นที่เราทำมัน integrate กับคนอื่นได้ไหมต้องรออาทิตย์นึงเท่านั้น เพราะ ไม่มีระบบช่วย integrate กันด้วยมืออย่างเดียว และการนำทุกอย่างมารวมกันทำด้วยมือ ทำให้มีโอกาสมีความผิดพลาดเกิดขึ้นในขั้นตอนการรวมได้สูง เพราะตัวแปรที่ต้องคิดถึงใน simulation มีเยอะมากจริงๆ
  6. Limited Features
    และด้วยความที่มันเป็น excel ทำให้ feature หลายๆอย่างถูกจำกัด ข้อจำกัดที่แย่ที่สุด ณ ตอนนั้นเลยคือ “Run once only” คือไม่สามารถกลับไปดู input ที่เคยเล่นได้ต้องจดไว้หรือไม่ก็ปริ้นเก็บอย่างเดียว ทำให้ไม่สามารถทำข้อมูลที่เล่นมาทำ analytic เพื่อปรับหรือแก้ตัว simulation จาก feedback ได้เท่าที่ควร และยังไม่สามารถเพิ่ม option ของ environment ได้ ถ้าเพิ่มคือต้องเพิ่มถาวรไม่สามารถปรับตาม course ได้
Photo by Korn from BASE team

Don’t Worry be Crappy

อย่างไรก็ตามเจ้า MVP ตัวนี้ก็ทำหน้าที่ของมันได้อย่างดี มันได้ validate idea ของเราในการจัด course ครั้งแรกว่า simulation ของเราสามารถเป็น core ของ course และนำไปต่อยอดได้อีกมาก พวกเราเลยวางแผน migrate มันไปสู่ platform ที่เหมาะสมกว่านี้ เป็นที่มาของการพัฒนา “BASE Simulation Web Application” ที่นำมาใช้ในคอร์ส Business for Youngster Vol.2 นี้นั่นเอง

เล่ายาวมากแล้ว เดี๋ยวคราวหน้าผมจะมาเล่าให้ฟังว่า migration ของเรามี process และ decision อย่างไรกันบ้าง มีการแก้ปัญหาที่พบตอนพัฒนา MVP อย่างไรและได้วาง foundation อะไรสำหรับอนาคตไว้บ้าง?

สำหรับ blog นี้ ก็ขอจบไว้เพียงเท่านี้ครับ ไว้มาคุยกันใหม่นะ

Shy me.

Thank you for reading

My name is Tino Thamjarat. Technical Lead at BASE and Software Engineer at Oozou . I love discussing everything. Business ideas, philosophy, physics, religion, tech, gaming, you name it. I also play League of Legend and a little bit of music once in a while. If you need a website, want to give some advice/comments or just need some guy to talk to, feel free to contact me on my Twitter or Instagram.