Scalable architecture

วันนี้ตอนทานข้าวกลางวันในทีม คุยกันเรื่องว่า Software architect ต้องทำอะไร

ประเด็นนึงที่บอกให้น้องในทีมฟัง คือว่า ถ้าเราออกแบบ Architecture แบบนึงที่ Prove ได้ว่า Scalable ตามหลักการละ แล้วพอเรายื่นโค้ดนั้นไปให้คนในทีม ทุกคนบอกว่า โอย ไม่ไหว ไม่อยากสเกล ไม่อยากแตะด้วยซ้ำ

แล้วแบบนี้จะเรียกมันว่า Scalable ได้เหรอ คือ มีแค่โค้ดสวยๆ ก้อนนึง มีแค่ Tech stack ดีงามก้อนนึง แต่มันไม่มีใครจะลงมือ Scale จริง

แล้วมัน Scalable ยังไง คำว่า Able มันมาจากไหน มันไม่มีคนทำ มันก็ไม่ Able จริงๆ สิ

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

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

แต่ประเด็นสำคัญที่ผมมั่นใจคือ ตราบใดที่เงื่อนไขไม่ครบ คือ Codebase scale ได้ Tech stack scale ได้ แล้ว Team พร้อมลงมือ Scale พรุ่งนี้เลย มันก็ยังเรียกว่า Scalable architecture ไม่ได้หรอก

ถ้าบอกแค่ว่า Refactor ตามหนังสือแล้ว ตามทฤษฎีแล้ว วางตามทฤษฎีหมดแล้ว ดังนั้นนี่คือ Scalable แล้วนะ ผมว่ามันก็โลกสวยไปหน่อย มันไม่ได้ Able จริงๆ นี่นา

แล้วก็เลยแอบฝากน้องเขาไปเผยแพร่ศาสนาด้วยว่า เป็น Software developer คิดถึงปัจจัยเรื่องคนให้มากๆ

เอาเป็นว่า จากประสบการณ์ ผมพบว่าการเป็น Developer ต้องยุ่งกับคนยุ่งกับมนุษย์ มากกว่าที่หลายๆ คนมองภาพไว้แต่แรกละกัน ว่าเป็น Developer จะยุ่งกับคอมเป็นหลักอ่ะ