Category Software Engineering

Software Engineering, Software Process, Software Testing, Software Design, Design Pattern, Software Architecture Guide

[Case Study] เมื่อ User บอกว่าพี่ใช้มานาน มันทำได้อยู่แล้ว ทั้งที่จริงมโนล้วนๆ

พอดีเห็นโพสของ KongRuksiam Studio เลยนึกได้ว่าหลายปีก่อนมีเรื่องเคสคล้ายกับ Meme นี้ เลยคิดว่า เอามาจดลง Blog ไว้ดีกว่า เพราะมันเป็นประสบการณ์ตรงที่เจอมาเหมือนหลายปีก่อน ที่เกือบทำให้โปรเจกต์เกือบ 20 ล้านพัง เพียงเพราะการรับปากมั่วๆ และความพยายาม “ลักไก่” ของ User ครับ เลยมาแชร์ บันทึกไว้ครับ จุดเริ่มต้น: “ทำไมไม่มีปุ่ม Approve ใน Email?” เหตุการณ์เกิดขึ้นกลางห้อง UAT เมื่อ User ท่านหนึ่งโวยวายหนักว่า ระบบส่ง Email แจ้งเตือนมันใช้งานไม่ได้จริง เพราะหัวหน้าเขาต้องกดปุ่ม Approve ได้ทันทีจากในเมล พร้อมมีตารางข้อมูล 1…

ถ้าได้เข้าไปดูระบบนี้ใหม่ จะเริ่มยังไง

พอดีเห็นข่าว ประกันสังคมเสนอแผนสำรองโยกกลับไปใช้เมนเฟรม หลังระบบใหม่รองรับโหลดไม่ไหว เห็นข่าวแล้วหงุดหงิดเลย เพราะผมเคยย้ายระบบเก่า แต่ Scale ไม่ได้ใหญ่ขนาดนี้ แต่พอย้ายแล้วมีสะดุด จนโดนผู้ใหญ่มาตำหนิใช้ระบบใหม่ทำไม ของเดิม VB6 ใช้มา 20-30 ปีไม่เกิดปัญหาเลย พอปรับแล้วลูกค้าบ่นยับ หน้าที่การเก็บเงินงวดนี้ 1x ล้านคุณต้องรับผิดชอบนะ แต่จริงๆแล้ว เราต้องมาปรับ Mindset กันก่อนเลย จากนั้นค่อยมาทำความเข้าใจระบบ และเอา Pattern + Constraint ไปเสียบตามนี้ ปรับ Mindset ใช้มา 20-30 ปีไม่เกิดปัญหาเลย จากระบบเดิมที่ผมเคยดูมา ปัญหามันมีเพียบ แต่เสียงจาก User อาจจะไม่เข้าไปถึงผู้ใหญ่ หรือ…

Frozen Caveman Anti-Pattern

Frozen Caveman ถ้าเป็นสั้นๆ มนุษย์ถ้ำ Frozen Caveman Anti-Pattern (Frozen Caveman Syndrome) เรียกว่าเป็นอาการของคน หรือทีม ที่ไม่เต็มใจ (unwillingness) หรือ ไม่มีความสามารถ (inability) ที่จะเรียนรู้ และเข้าใจเทคโนโลยี หรือ วิธีการใหม่ๆ แม้ว่าจะช่วยให้งานเดิมนั้นดีขึ้น หากปล่อยไว้นานๆมัน คนกลุ่มนี้จะพวกที่ต่อต้านการเปลี่ยนแปลง (resistance to change) ซึ่งอาจจะส่งผลกับการแข่งขันได้ หรือ แม้แต่การมองภาพเดิมๆ ทำให้ไม่เห็นปัญหาที่เกิดขึ้น ยกตัวอย่าง เราไปออกแบบ System ตัวนึง แต่ไป Focus จุดเล็กๆ ที่เกิดขึ้นได้น้อยมาก จนทำให้ภาพการ…

Unit Test เตือนเรื่องพวก Concurrent / Thread ได้นะ

หลังจากหักดิบ ให้ Jenkins ถ้า Test Fail ให้ระบบตี Fail เลย เรียกว่าหักดิบจริงๆแหละ เพราะคนในบริษัทไม่ค่อยเห็นด้วยเท่าไหร่ ยังเชื่อมั่นในทุกคนจะมาตรวจเองด้วยมือ และ QA ตรวจทุกรอบ และวันนี้เจอเคสแปลกๆ เข้าตามรูปครับ จากเคสนี้จะเห็นว่ามัน Test Fail แบบแปลกๆ ผ่านหมด / fail 1 -7 สุ่มกันไป และสุ่ม Agent ด้วย ถ้าเราเข้ามาดูลึก มันจะเป็นเรื่องของ Concurrent / Thread ได้นะ แยกกันทำ แล้วทำงานไม่ได้ ซึ่งถ้าหากไปดูที่ Service…

มาลองเรียน Observability in Action: Beta รุ่น 1 @SCK Dojo

สำหรับ Course นี้ ถือว่าเป็นความโชคดีของผมครับ บังเอิญเห็น Feed พอดีครับ(พี่มาร์คช่วงนี้ปิดกั้นบ่อย) เลยได้บริจาคช่วยน้ำท่วม + ส่งข้อมูลเข้าเรียนไปครับ และได้เข้าไปเรียนช่วง 26-27 OCT 2024 ครับ งานอะไรที่เราต้องมีการ “เตือนก่อนวายวอด” จริงๆชอบคำของ Safe T Cut ผมเลยเอามาใส่ด้วย หลักๆ งานที่มันผิดปกติไปจากงานประจำ (น้อยไป หรือ มากเกินไป) เพราะการล่าช้าที่เกิดขึ้น มันส่งผลกับรายได้ และ อาจจะต้องทำตามข้อกฏหมายมาเกี่ยวข้องด้วย เช่น มีคลิปมาพอดี ลองดูประกอบได้เลย Monitor คือ อะไร ? เรามีสิ่งที่สนใจ มีคำถามแหละ…

The Way of Testivus

พอดีไปเจอ Handbook เล่มเล็กๆ ที่อธิบาย เรื่อง การทำ Test ไวได้ดี และสั้นกระชับด้วย 12 หน้าเอง แต่มันใช้ได้ แม้เวลาจะผ่านหลายปีครับ โดยมี 12 ข้อ ดังนี้ครับ Resource

จดจาก Build GraphQL APIs (Go)

สัปดาห์ที่แล้วมาเป็นคนสอน docker สัปดาห์นี้วนมาเป็นนักเรียนบ้างครับ โดยรอบนี้ลองมาฟังตัว GraphQL วางมันจะต่างกับ REST แบบเดิมๆที่ใช้กันยังไง โดย Course นี้สอนโดยพี่ปั๊บ (Dev Mountain) ครับ ได้ความรู้เยอะครับ มีประสบการณ์ที่เจอมาเล่าด้วยนะ สำหรับผมก่อนมาเรียน อยากลองมาไล่ GraphQL ของ GitLab บางทีข้อมูลที่อยากได้มันยิงหลายรอบมาก และมาแก้พวก Get ที่ยิบย่อยที่เจอๆกัน แปะไว้ด้วยดีกว่า มีอีกบทความ / Post ที่บอกอีกมุมมองนึงนะ เอาไว้มาหาคำตอบตอนเรียน ที่เรียนมา ผมมีจดๆบางส่วนมานะ ตามนี้เลย ทำไมต้อง GraphQL ? ปัญหาแบบเดิมๆ แล้วที่นี้ Facebook…

[KBTG-GO] แบ่งปันประสบการณ์งาน Go Intensive Workshop (11-12 May 2024)

สำหรับ Blog ตอนนี้ อยากบอกอย่างแรกเลยว่า ถ้าจัดที่เมืองทอง น่าจะเทตั้งแต่แรก 555 ผมน่าจะได้ออกจากบ้าน ตี 5.45-6 โมง ถ้านั่งรถสาธารณะไปนะ แต่โชดีที่จัดที่ตรงสามย่าน เดินทางสะดวกครับ และได้กลับไปแถวจุฬาฯด้วย หลังจากจบ ป โท มาแล้วหลายปีเลย ถามว่าผมรู้จักกิจกรรมนี้ได้ยังไง อันนี้ผมเองได้ข่าวจากเพื่อนที่เรียน Cloud Camp ครับ เลยลอง ลงตามมาด้วย เพราะเห็นว่าภาษา Go ช่วงนี้เป็นที่แนะนำกันตาม Social ครับ เลยลองมาดู ลงทันด้วย ตอนลงทะเบียนน่าจะช่วง Dec 2023 เริ่มเรียนจริงๆ Feb 2024 ครับ…

[KBTG-GO#06] Refactoring with Go

รอบนี้ยาวเลยมาหลังสงกรานต์ หลังจากเคลียร์งานธุระต่างๆหมด หัวข้อมี ดังนี้ What is Code Smells ? Code Smells are symptoms of poor design or implementation choices Martin Fowler Type Of Code Smells มีเยอะมาก แบ่งได้ 5 กลุ่ม Bloaters – Don’t have to be that big มันใหญ่ไป Tool Abusers…

[KBTG-GO#05] DevOps

สัปดาห์นี้มาช้านิดนึง ไปลองทำ Fun-Ex มา 55 หัวข้อประมาณนี้ 1 .DevOps – Why DevOps Flow เดิม Waterfall ทำเสร็จ กว่าจะ Deploy อีกนาน โดยอาจจะให้ Change Approval Board (CAB) อนุมัติ ก่อนให้ทีม Operation ทำงาน กว่าจะแก้ได้ช้า และมีปัญหาเรื่อง Enviroment DevOps มีคน Idea มาจากฝั่ง Ops ตอนปี 2006-2007 มีคำถาม Migrate ยังแล้วจะรู้ว่าใช้ได้ไหม…