The Five Ideals
จากหนังสือ The Unicorn Project ในนั้นจะมีที่ปรึกษาเก่ง ๆ คนหนึ่งชื่อ Erik เป็นเหมือนเซ็นเซหาตัวยาก เดี๋ยวก็มา เดี๋ยวก็ไป ถ้าโชคดีก็จะเจอเค้าว่าง แล้วเค้าก็จะสอนอะไรที่สำคัญ ๆ แต่ฟังดูล้ำ ๆ และลึกซึ้ง
จากหนังสือ The Unicorn Project ในนั้นจะมีที่ปรึกษาเก่ง ๆ คนหนึ่งชื่อ Erik เป็นเหมือนเซ็นเซหาตัวยาก เดี๋ยวก็มา เดี๋ยวก็ไป ถ้าโชคดีก็จะเจอเค้าว่าง แล้วเค้าก็จะสอนอะไรที่สำคัญ ๆ แต่ฟังดูล้ำ ๆ และลึกซึ้ง
บทความนี้จะอธิบายพื้นฐานของ System Design โดยต่อยอดจากตัวอย่าง Gym Application เพื่อให้เห็นภาพว่า เมื่อระบบเริ่มเติบโตและถูกแยกออกเป็นหลาย Service แต่ละ Service จะสื่อสารและทำงานร่วมกันอย่างไร งานแบบไหนควรสื่อสารแบบ Synchronous งานแบบไหนควรประมวลผลแบบ Asynchronous รวมถึงอธิบาย Concept พื้นฐานต่าง ๆ ที่ควรรู้ เช่น API
ผมกำลังอ่านหนังสือ The Unicorn Project ซึ่งเป็นนิยายเกี่ยวกับ developer สาวคนหนึ่งที่ใช้ชีวิตในองค์กรท่ามกลางกระแส digital disruption อ่านแล้วสนุกมาก เป็นเรื่องที่ตื่นเต้น และหลาย ๆ dynamic ที่เกิดขึ้นก็คล้ายกับที่ผมพบเจอในบริษัทซอฟต์แวร์ เลยทำให้
ในช่วงแรก Product เราสามารถออกแบบระบบให้อยู่ใน Server และ Database เดียวกันได้ แต่เมื่อระบบโตขึ้น มีผู้ใช้งานเพิ่มขึ้น ข้อมูลเยอะขึ้น ระบบเริ่มทำงานช้าลดเรื่อยๆ สิ่งที่หนีไม่ได้คือการ Decomposition Service ไปเป็น Distributed System เช่น Member Service, Booking Service, Payment
บทความนี้จะอธิบายพื้นฐานของ Core Infrastructure Concepts ในมุมมองของ System Design โดยเล่าต่อจากตัวอย่าง Gym Application ในบทความ Data & Storage Concepts เพื่อให้เห็นว่า Request หนึ่งจาก Client ต้องผ่านอะไรบ้างก่อนจะไปถึง Backend, Database หรือ Storage จากบทความ Data & Storage Concepts ตอนนี้ Gym
บทความนี้จะอธิบาย Database & Storage Concepts พื้นฐานในมุมมองของ System Design บอกข้อดีและ Trade-off ที่ควรรู้ พร้อมยกตัวอย่างผ่าน Use Case ของระบบ Gym Application บทความอื่นๆ ที่เกี่ยวข้องกัน * Core Infrastructure Concepts - System Design, Simply Explained * Distributed Systems Concepts - System Design, Simply
เวลาผมเจอคำถามว่า “ชอบช่วงเวลาไหนที่สุดในชีวิต?” คำตอบของผมคือ “ช่วงนี้แหละ” ช่วงที่อายุ 44 ปี แล้วเริ่มเห็นร่างกายส่งสัญญาณเตือนต่าง ๆ ว่าเราไม่ใช่คนหนุ่มอีกต่อไป เดี๋ยวนี้เวลาเด็กรุ่นหนุ่มสาวเขาจัด User Segment กัน ช่วงอายุของผมมักจะไปกองอยู
ตอนไป Odd-e Gathering ที่ผ่านมา ทุกวันก็จะเป็น Open Space ที่พวกเราได้แบ่งปันความรู้กัน ทั้งเรื่องการโค้ชและการทำ Software หลังจากทานข้าวเย็นเสร็จ เราก็ไปดื่มกันต่อที่บาร์ใต้โรงแรม แล้ว Terry Yin ก็ได้แบ่งปันเรื่อง The 12
ในองค์กรใหญ่ ๆ อะไร ๆ ก็ช้าลงไปหมด และสิ่งที่ช้าที่สุดคือการตัดสินใจนี่แหละครับ การตัดสินใจกระจายอยู่ในทุก ๆ อณูขององค์กร องค์กรที่มีบรรยากาศสบาย ๆ ทุกคนรู้สึกปลอดภัย ใคร ๆ ก็จะกล้าตัดสินใจและกล้าออกความเห็น แต่พอองค์กรใหญ่
ท้ายหนังสือ Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency ของ Tom DeMarco ได้ให้เทคนิคใหม่ในการจัดการความเสี่ยงกับผม ทอมสอนว่าในการทำงานยุคปัจจุบัน งานมีความเสี่ยงกระจายอยู่เต็มไปหมด ซึ่งในความเสี่ยงนั้น เรามีโอกาสโชคดีและมีโอกาสโชคร้าย การจัดการความเสี่ยงเป็นสิ
ผมเดินทางกลับมาจาก Conference ของ Berkeley ที่ซานฟรานซิสโก เครื่องลงที่สนามบินสุวรรณภูมิประมาณ 22:30 น. กว่าจะถึงบ้านก็เกือบเที่ยงคืน ยังดีที่ขากลับไม่เหนื่อยเท่าขาไป เพราะลองซื้อหมอนรองคอจาก Duty Free ที่ซานฟรานซิสโกมาใช้ดู หมอนเป็นลายการ์ตูน มีรูปสะพาน
อีกบทเรียนที่ผมได้จากหนังสือ Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency ของ Tom DeMarco คือ ทำไมองค์กรใหญ่ ๆ ถึงยึดมั่นกับ Efficiency กันนัก Efficiency คืออะไร? Efficiency แปลว่า "ประสิทธิภาพ" ยกตัวอย่างเช่น
Reflections
ปีนี้ที่อายุ 44 ผม Reflect ตัวเอง และพบว่าหลักการใช้ชีวิตของผมได้มาจากหนังสือ The Seven Habits of Highly Effective People เยอะมาก ใน Habit ทั้ง 7 นี้จะมีเกร็ดเล็กเกร็ดน้อยที่ผมไปศึกษามา แล้วค่อย ๆ เติมเข้าไปเพื่อทำให้ Habit นั
บ่อยครั้งที่เราใช้ชีวิตราวกับกำลังรอคอยที่จะคอมไพล์ (Compile) โปรเจกต์ยักษ์ใหญ่ที่ซับซ้อนและรวมศูนย์เพียงชิ้นเดียว เราวางแผนสำหรับทศวรรษหน้าอย่างพิถีพิถัน เรายึดโยงความสุขไว้กับจุดหมายปลายทางอันไกลโพ้นและเลือนลางของความสำเร็จสูงสุด เราเขียนโค้ดทางความคิดไว้หลายพันบรรทั
ในโลกที่หมุนไปด้วยอัตราเร่งอย่างทุกวันนี้ หลายครั้งเรามักพบว่าตัวเองติดอยู่ท่ามกลางความสับสนยุ่งเหยิง ปัญหาบางอย่างในชีวิตไม่ได้มาในรูปแบบที่เรียบง่าย แต่กลับซ้อนทับกันเป็นชั้น ๆ เหมือนกล่องของขวัญใบยักษ์ที่พอเปิดเข้าไป ก็
growth
อีกบทเรียนที่ผมได้จากหนังสือ Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency ของ Tom DeMarco คือมุมมองใหม่สำหรับการเติบโตของบริษัท ตลอดมา ผมมักจะต่อต้านการแก้ปัญหางานไม่ทันด้วยการเพิ่มคน เพราะการเพิ่มคนเป็นกลยุทธ์ระดับองค์กร แต่งานไม่ทั
ในฐานะซอฟต์แวร์สถาปนิก เรามักถูกฝึกมาให้มองหาโครงสร้างที่ซ้ำซ้อนเพื่อปรับปรุงมันให้ดีขึ้น วินาทีที่เราเปิดเข้าไปเจอซอร์สโค้ดที่รกรุงรังเหมือนสปาเก็ตตี้ สัญชาตญาณแรกของเราคือการสแกนหา Pattern ความผิดพลาด หรือสิ่งที่เรียกว่า Code Smells จากนั้นเราจะเริ่มลงมื
ขอจดโน๊ตที่ไปเรียนวิชา Fundamental of Software Architecture กับพี่รูฟมาค่ะ นี่แค่ day1 555555+ คำว่า Architecture ไม่ได้เริ่มต้นจากโลกของซอฟต์แวร์ แต่มีรากมาจากโลกของการก่อสร้าง เมือง อาคาร และ civil engineering มายาวนานมาก ก่อนที่เราจะเอาคำนี้มาใช้กับ software architecture ในภายหลัง สิ
ลองจินตนาการถึงสถานการณ์ที่คุณกำลังเผชิญในโปรเจกต์ซอฟต์แวร์ปัจจุบัน: ทีมของคุณต้องการความเร็วเพื่อปล่อยฟีเจอร์ใหม่ให้ทันตลาด (Living Forward) แต่ในขณะเดียวกัน โค้ดเก่าที่เต็มไปด้วยหนี้ทางเทคนิค (Technical Debt) ก็กำลังฉุดรั้งให้ทุกอย่างช้
ลองนึกภาพร้านก๋วยเตี๋ยวเจ้าเก่าที่ขายดีมา 20 ปี วันดีคืนดีพี่มาวินมารีวิวลง TikTok แล้วลูกค้าทะลักเข้ามา 10 เท่า เตาเดิม หม้อเดิม พนักงานเท่าเดิม แต่ Order เพิ่มเป็น 10 เท่า หัวข้อ
ในโลกของการบริหารโปรเจกต์ซอฟต์แวร์ เรามักจะหลงรักแผนงานที่สวยงามบนหน้าจอ เราตื่นตาตื่นใจกับ Gantt Chart ที่ลากเส้นต่อกันอย่างเป็นระเบียบ และเรามักจะทึกทักเอาเองว่า ถ้าเรามีจุดเริ่มต้นที่ดี มีทีมงานที่มีความเร็ว (Velocity) และมีระยะเวลาที่กำหนดไว้ ทุกอย่างจะเดินไปถึงเป้
ในโลกของการเขียนโปรแกรม มันจะมีคำว่า imperative กับ declarative มันคืออะไรแล้วมันทำให้การเขียนโปรแกรมของเราเปลี่ยนไปยังไง มาลองถอดบทเรียนกัน เริ่มจากแปลตรงๆ * Imperative (How): ต้องสั่งทีละขั้นตอนว่าต้องทำอย่างไร (เหมือนการบอกทางแบบละเอียด: เลี้ยวซ้าย 100 เมตร, เลี้ยวขวา...) * Declarative (What): บอกแค่ว่าผลลัพธ์
human resource
ในปี 2546 นักศึกษาคณะวิทยาศาสตร์ที่เรียนอยู่ที่ศูนย์รังสิตมาตลอดแบบผม ได้มีโอกาสเข้าเมืองไปเรียนที่ธรรมศาสตร์ ท่าพระจันทร์ เป็นครั้งแรก นอกจากจะตื่นตาตื่นใจกับของอร่อยมากมายรอบมหาวิทยาลัยแล้ว บรรยากาศที่ศูนย์ท่าพระจันทร์มันมีมนต์ขลังแปลก ๆ ตัวผมได้
ในฐานะโปรแกรมเมอร์ เรามักหมกมุ่นอยู่กับการเปลี่ยนแปลง (Mutation) เราสนใจว่า State จะไหลจาก A ไป B อย่างไร แต่เรามักลืมตั้งคำถามที่สำคัญที่สุดคำถามหนึ่ง: “ก่อนที่สิ่งนี้จะกลายเป็นสิ่งนั้น… มัน ‘เป็น’ อะไรมาก่อน?” นี่ไม่ใช่แค่คำถามเชิงตรรกะ แต่มันคื