ช่วงต้นเดือนมี.ค. 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
- Single Responsibility Principle (SRP)
- Open Closed Principle (OCP)
- Listkov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency 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)
- DEVSECOPS - คือ อะไร แนะนำ Tools ที่ใช้ GitLab (Free Tier + Self Host) / SonarQube)
สุดท้ายเสริมด้วยเรื่องอื่นๆ
- การวางแผนทางการเงิน - ออมก่อนได้เปรียบกว่านะ อย่างเราเอง 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.