มาลองเป็น Public Speaker เรื่อง OOAD

ช่วงต้นเดือนมี.ค. 2566 ระหว่างเล่น Facebook อยู่ครับ อาจารย์ ศุภชัย ที่ มศว ได้ทักมาว่า คุณว่างที่จะลองมาแชร์ตัว OOAD ทื่ใช้ระหว่างทำงานไหม ? ฝั่งผมก็ว่างอยู่พอดี และอยาก Clear ปมอะไรในใจนิดหน่อย แอบหวังลืกเป็น On-Site ด้วย แต่ได้เป็น Online แทนครับ ^__^

สำหรับหัวข้อที่พูดนะครับ

  • SDLC: Waterfall / Agile ทุกวันนี้ส่วนใหญ่อาจจะทาง Agile กัน แต่ยังมีบางที่ยังอยู่ Waterfall ที่สูงชันครับ ^__^
  • Requirement and Software Crisis - คุยกันไม่เข้าใจ เวลาทำระบบมันอาจจะเกิดความพิกลพิการใน Software ที่ทำได้ครับ กว่าจะหาทาง จูนกันรู้เรื่อง เสีย Resource ไป โดยที่ไม่จำเป็น
  • UML - อธิบายทฤษฏีล้วนๆ
  • UMLที่ใช้จริงตอนทำงาน เนื่องจากเป็น บ เล็กตัวเอกสารทำตัวที่สำคัญ ได้แก่
    - Use Case
    - Activity Diagram
    - Sequence Diagram
    - State Diagram
    - Deployment Diagram
    - Class Diagram เน้นความสัมพันธ์
    Tools ที่ใช้ตัว Draw.io มันมีแบบ Container ให้ขึ้นด้วย หรือทำใน Power Point เลยครับ อ๋อพวก Database ใช้ Data Dictionary + ER-Diagram
    ยกตัวอย่าง การแปลง Requirement มาเป็น Diagram ต่างๆ อันนี้ดูตัวอย่างได้จากใน Slide เลยครับ โดยการทำงานจริง ผมจะเน้น Sequence Diagram + Swagger

ที่เหลือเสริมที่ตัวเองได้เรียน และเอามาปรับใช้ตอนทำงานครับ

  • Domain Driven Design - ของผมเอามาช่วยตัดสิน ว่าอะไรควรอยู่ใน Package ไหน / Microservice ไหน เป็นต้นครับ
  • C4Model
  • Software Architecture Design - ส่วนตัวเลือกมา 4 ตัวนะ
    - Sync/Async
    - N-Tier Architecture - MVC หรือ ตัว Spring ทำมาดีแล้วใช้ของเค้า Test ง่ายดี
    - Microservice - ไม่ได้เชิญชวนให้ใช้นะ เล่าปัญหามากกว่า เพราะแตกเยอะไปเหนื่อย ตอนนี้เหลือแค่ตัว Admin / Notification
    - Event based
  • SOLID
    - S​ingle Responsibility Principle (SRP)
    - O​pen Closed Principle (OCP)
    - L​istkov Substitution Principle (LSP)
    - I​nterface Segregation Principle (ISP)
    - D​ependency Inversion Principle (DIP)
  • DESIGN PATTERN - บอกเล่าตัวที่ใช้ประจำ
    - Singleton / Object Pool-  Object ใหม่ มี 1 Instance //Conection
    - Builder - สร้าง อะไร ซับซ้อน .NET6 Mininal API 
    - Factory + Strategy 
    - Decorator - เพิ่มความสามารถ Object ทำใน Framework เรื่อง Log
    - Adapter - ทำ Interface ครอบ 3Rd Party
    - Façade - หุ่มการทำงาน A B C D เหลือ 1
    - Template Method - มันไรที่มี Step เหมือนกัน แต่ Implememt ต่างกัน
    - Iterator - Loop
  • Test Driven Development (TDD) & Code Coverage - ที่เอา Code Coverage มาดูด้วย ผมว่าทุกคนสังเกตุได้ง่าย ถ้าจะมาสอนแบบ Cyclomatic Complexity / Cohesion VS Coupling มันดูยากไปครับ เสมอด้วยแนวคิด TDD พอเราเข้าใจแล้ว มันจะเกิดความขี้เกียจ เราจะเขียน Code ให้ Test ง่ายๆยังไงนะ ใช่แล้ว Refactor หรือทำให้ Code มันเล็กๆ
  • Bare Metal / VM / Container … Cloud
    - ตัวเราเองผ่านในยุคที่ VM เริ่มนิยม จากนั้น Container เข้ามา //ผมได้ยินจากเพื่อน ป โท ครับ
    - และท้ายที่สุดมา Cloud
    - สุดท้ายพัฒนาที่ไหน มันมีปัญหาเหมือนกัน ไม่ใช่เอา Container มันจะแก้ได้หมดทุกเคส ตาม Meme นี้เลย หลักๆ ต้อง Lock Version + กำหนดรอบ Update (ด้าน Security)

สุดท้ายเสริมด้วยเรื่องอื่นๆ

  • การวางแผนทางการเงิน - ออมก่อนได้เปรียบกว่านะ อย่างเราเอง clear ภาระที่บ้าน3-4 ปี กว่าจะเริ่มออมได้คนอื่นๆมีเงินก้อนไปลงทุน ทำอย่างอื่นกันหมดแล้ว
  • การเปลี่ยนงาน ตัวเองพลาดที่ตัดสินใจไม่ทำ ผมรับภาระมากมาย จาก CS/PM ที่ก่อคดีไว้ตอนปี 2019-2020 มันเป็นส่วนหนึ่งที่ทำให้เราเองจบ ป โท ช้าด้วย เพราะห่วงทีม และงานตอนนั้น ถึงแม้ว่า CS/PM ไม่ขอโทษทางทีมที่สร้างภาระ แล้วโบ้ยว่าลูกค้าผิด แต่ไม่กล้าเถียงบอกกับลูกค้าตรงๆนะว่าทางลูกค้าผิด จนผมเองต้องเปิดถามกับฝั่งลูกค้าเอง
    NOTE ส่วนตัวคิดว่าที่อยู่มาได้นาน เพราะเจอสถานการณ์ COVID-19 ด้วยแหละ เลยไม่ต้องมาเผชิญหน้ากัน

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

  • การไป Tech Meetup ได้ Keyword ใหม่ - ที่ บ ไม่ค่อยเน้นการส่งคนไปเทรนซะเท่าไหร่ การไปงาน Tech Meetup จะช่วยให้เราตามทัน Trend ณ ตอนนั้นได้ สำหรับผมจะเลือกไปงานที่ใกล้เคียงกับงานที่ทำหลักตอนนี้สาย .NET ครับ
  • รวมถึงการเขียน Blog เพื่อเป็น Second Brain ครับ อย่างที่ไป Tech Meetup ดูได้จาก Tag Tech Meetup/Seminar ได้เลยครับ

Resource: Slide


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.