Life purpose and scalable design

Chris
Chris’ Dialogue
Published in
1 min readApr 25, 2019

สัปดาห์ที่ผ่านมาผมได้สอนเรื่องการออกแบบระบบให้ Scalable กับทีมหนึ่ง

เรื่องแรกที่ผมหยิบมาพูดก่อนที่จะลง Technical เลยคือ

“เราต้องประเมินก่อนว่าระบบแบบนี้จะรับโหลดหน้าตาแบบไหน เท่าไหร่”

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

เพราะการออกแบบให้รับได้มากที่สุดเท่าที่รับได้ มันตามมาด้วย Complexity มากมาย และการดูแลก็ยากขึ้น การจัดการบริหารก็ยากขึ้น

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

การเผื่อไว้ก่อนไม่ได้มีแต่ข้อดี

ถ้าเราเผื่อไว้มากๆ ความซับซ้อนของระบบมาก การพัฒนาฟีเจอร์ การทดลอง Experiment เล็กๆ ก็จะทำได้ยากขึ้นเรื่อยๆ

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

เมื่อเรารู้ว่าเราต้องการรับโหลดเท่าไหร่ เราก็ออกแบบให้พอดีโหลดได้

เมื่อเราออกแบบพอดี เราก็จะได้ระบบที่ดูแลง่าย แก้ไขง่าย รันง่ายกว่า

ผมคิดว่าชีวิตก็เหมือนกัน

ถ้าเรารู้ว่า ชีวิตของเรา Lifestyle เป็นอย่างไร เรารู้ว่าแต่ละวันเราอยากทำอะไร เรารู้ว่าเราอยากจะอยู่ใช้ชีวิตที่ไหน กับคนแบบไหน

การออกแบบชีวิตก็ง่ายและตรงไปตรงมา

และจะได้ชีวิตที่ดูแลง่าย แก้ไขง่าย จัดการง่าย

แต่ตรงข้าม ถ้าเราไม่รู้ว่าเราต้องการอะไร แล้วเราพยายามออกแบบชีวิตโดยให้ได้ Option มากที่สุด เผื่อเยอะที่สุด

มันก็จะได้ชีวิตที่ดูแลยาก แก้ไขยาก จัดการยาก

ระบบที่ออกแบบมาโดยไม่มีปลายทางว่าต้องการให้รับโหลดเท่าไหร่ เอาให้เยอะที่สุดไว้ก่อน เผื่อๆ ไว้ก่อนส่งผลให้ได้ระบบที่ซับซ้อนจนดูแลจัดการยากฉันได้

ชีวิตที่ออกแบบมาโดยไม่มีปลายทางว่าต้องการใช้ชีวิตอย่างไร เอาให้เยอะที่สุด เผื่อให้เยอะที่สุดไว้ก่อน ก็จะได้ชีวิตที่ซับซ้อนจนดูแลจัดการยากฉันนั้น

การออกแบบระบบ ซักวันเราอาจจะเจอโหลดที่ไม่คาดฝัน

ผมก็แนะนำว่าถึงตอนนั้นคือเราต้อง Refactor อยู่แล้ว

แต่การออกแบบเผื่อไว้ทุกอย่าง ไม่ใช่คำตอบ เพราะมันสร้างความซับซ้อน

จนแม้แต่โหลดเล็กๆ เรายังรับมือยากในแง่อื่นๆ มีความยากในการดูแลรักษา การจัดการ จนทำให้มีปัญหาอื่นๆ ที่ไม่ใช่โหลดการใช้งานตามมา จนทำให้เราไปไม่ถึงขั้นที่จะต้อง Refactor ระบบ เพราะเจ๊งก่อน

เราควรจะเผื่อให้มันพอดี

ชีวิตก็เหมือนกัน

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

ถึงวันนั้นเราก็ต้อง Refactor ชีวิตเหมือนกัน

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

เราจึงควรเผื่อให้มันพอดีเช่นกัน

ผมยกตัวอย่างง่ายๆ เลยนะ มีบ้านใหญ่โต ก็ต้องใช้เวลาดูแลมาก

มีรถแพงๆ ก็เสียค่าดูแลเยอะ

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

ดังนั้น การออกแบบชีวิต จึงไม่ได้เริ่มจากการที่หาว่า วิธีการไหน ท่าไหน ทำให้เรารับโหลดได้มากที่สุด มีทางเลือกมากที่สุด เผื่อได้มากที่สุด

แต่เริ่มจากการที่รู้ว่า เราจะใช้ชีวิตแบบไหน ในแต่ละช่วงเวลาครับ

--

--

Chris
Chris’ Dialogue

I am a product builder who specializes in programming. Strongly believe in humanist.