Saladpuk.com
🏆 เนื้อหาหลัก
🏆 เนื้อหาหลัก
  • 💖สลัดผัก
  • 📰มีอะไรใหม่บ้าง
    • 2020
      • 2020-11
      • 2020-10
      • 2020-09
      • 2020-08
      • 2020-03
      • 2020-02
      • 2020-01
    • 2019
      • 2019-12
      • 2019-11
      • 2019-10
      • 2019-09
      • 2019-08
  • 🤔อ่านเรื่องไรดี ?
  • มือใหม่หัดเขียนโค้ด
    • 👶เขียนโค้ดด้วยภาษา C#
      • เกิดมาไม่เคยเขียนโค้ดมาก่อนเบย
      • 👶พื้นฐาน
        • 1.โปรแกรมที่ต้องลง
        • 2.โครงสร้างของโค้ด
        • 3.ชนิดของข้อมูล
        • 4.การสร้างตัวแปร
        • 5.คำสั่งพื้นฐาน
        • 6.การแปลงข้อมูล
        • 7.การเปรียบเทียบค่า
        • 8.การตัดสินใจด้วย IF statements
        • 9.การตัดสินใจด้วย Switch statements
        • 10.การทำงานซ้ำๆด้วย While
        • 11.การทำงานซ้ำๆด้วย Do While
        • 12.การทำงานซ้ำๆด้วย For
        • 13.การแก้โจทย์จากรูป
        • 14.มารู้จักกับ Array กัน
      • 🧑ระดับกลาง
        • 15.Value type vs Reference type
        • 16.ลดงานซ้ำๆด้วย Method
        • 17.มารู้จักกับ Class & Field กัน
        • 18.มารู้จักกับ Constructor กันบ้าง
        • 19.มาเขียน Method ใน Class กัน
        • 20.มารู้จักกับ Property กัน
        • 21.ลองใช้คลาสแบบจริงจังบ้าง
        • 22.การสืบทอด Inheritance
        • 23.Polymorphism
        • 24.Abstract Class
        • 25.Interface
        • 26.Namespace
        • 27.Enum
        • 28.Exception handler
        • 29.ลงลึกกับ string
        • 30.StringBuilder เพื่อนคู่ string
      • 👨⏳ระดับสูง
        • Generic
        • Delegates
        • Action & Func
        • Lambda expression
        • LINQ
        • พระคัมภีร์การใช้คำสั่ง LINQ
      • 💡Tips
        • 💡C# version 8.0
        • 💡Boxing & Unboxing
    • 👶Algorithm
      • 👾Algorithm Big-O
      • 👽Algorithm P & NP
    • 👦OOP
      • 💖Abstraction
      • 💖Encapsulation
      • 🏆Abstraction & Encapsulation
      • 💖Inheritance
      • 💖Polymorphism
      • 🏆Inheritance & Polymorphism
      • 📝ลองเขียน OOP ดูดิ๊
      • 👑OOP + Power of Design
      • 🥰เทคนิคในการออกแบบ
    • 👶บทสรุปฐานข้อมูล
      • เก็บรูปในฐานข้อมูล
      • Database indexing
      • การลบข้อมูล
    • 👦Communication Patterns
    • 👦Design Patterns
      • 🤰Creational Patterns
        • 🏭Factory Method
        • 🏭Abstract Factory
        • ☝️ Singleton Pattern
        • 🏗️ Builder Pattern
        • 🎎Prototype Pattern
      • 🧱Structural Patterns
        • 🔌Adapter Pattern
        • 📪Proxy Pattern
  • Puzzle
    • 🧠Challenges
      • 🐴Google ม้า 25 ตัว
      • 🌉Amazon เสา 2 ต้น
      • 🥇ทองเก๊
      • 💊ยาต้านโควิด
      • 🎩CP หมวก 5 ใบ
      • 🧓Einstein's Riddle 01
  • พื้นฐานที่ควรต้องรู้
    • 🐳Docker
      • 📦Docker Containers
      • 🃏Docker Exercise 01
      • 🛠️ Docker Tools
      • 🗃️ Docker Registry
      • 🖼️ Container Image
      • 📢Docker Push
      • 🔄WSL
    • 👶Clean Code
      • 🧓Uncle Bob - Clean Code
      • 🧓Uncle Bob - Comments
      • 🧓Uncle Bob - Naming
      • 🧓Uncle Bob - Mindset
      • 🧓Uncle Bob - TDD
    • 👶Code Smells
    • 👶สิ่งที่คนเขียนโค้ดมักเข้าใจผิด
    • 👶AI พื้นฐาน
    • 👶Git พื้นฐาน
      • Git branching strategy
    • 👶Cloud พื้นฐาน
    • 👶UML พื้นฐาน
      • Activity Diagram
      • Class Diagram
      • Sequence Diagram
      • Use case Diagram
      • บทสรุปการใช้ UML
    • 👶Data Scientist
      • การเลือก Algorithms ให้ AI (1/5)
      • การเตรียมข้อมูลให้ AI (2/5)
      • หลักการตั้งคำถามให้ AI (3/5)
      • แฉความลับของ AI Model (4/5)
      • หัดเขียน AI จาก AI ของคนอื่น (5/5)
    • 👶DevOps พื้นฐาน
    • 👶Docker ขั้นพื้นฐาน
      • Image and Container
      • แชร์ Docker Image ที่สร้างไว้
    • 👶Microservices พื้นฐาน
      • Microservices ที่ดีมีลักษณะยังไง
      • Microservices Tips
      • จาก Monolith สู่ Microservices
    • 👶ความรู้พื้นฐานในการทำเว็บ
    • 👦Bottlenecks of Software
      • หัวใจที่สำคัญที่สุดของฐานข้อมูล
    • 👦Agile Methodology
      • Agile in a Nutshell
      • Software Development Life Cycle
      • Code Review
    • 👦Security พื้นฐาน
      • การเก็บรหัสผ่านที่ถูกต้อง
      • Security in actions
        • Hash function
      • Security Principles
      • 😎The Matrix 1
      • 😎The Matrix 2
      • HTTPS in a nutshell
    • 👦SOLID Design Principles
      • มารู้จักกับ SOLID กันดีกว่า
      • Single-Responsibility Principle
      • Open/Closed Principle
      • Liskov Substitution Principle
      • Interface Segregation Principle
      • Dependency-Inversion Principle
  • Cloud Computing
    • 👶Microsoft Azure 101
      • สมัคร Microsoft Azure
      • รู้จักกับ Resource Groups
      • สร้างเว็บตัวแรกกัน
      • สร้าง Virtual Machine กัน
      • ประเภทของคลาว์เซอร์วิส
      • มาสร้าง Logic App กัน
      • มาสร้าง Function App กัน
      • คลาว์คิดเงินยังไง ?
      • Cloud Native
      • Guideline for Cloud scaling
      • Auto Scaling
    • 👶Azure App Services
    • 👶App Service Plan
    • 👶Azure Storage
      • Blob storage
        • ลองสร้างที่เก็บไฟล์กันเลย
        • เข้าใจ Blob storage ให้มากขึ้น
        • ลองเขียนโค้ดอัพโหลดไฟล์กันบ้าง
        • สร้างเว็บจากที่ฝากไฟล์บนคลาว์
    • 👶Azure Bot Service
      • Bot เข้าใจเราได้ยังไงกันนะ
    • 👶Azure Cognitive Services
      • การสร้าง Cognitive Services
      • การ Login ด้วยใบหน้า
      • อ่านลายมือจากรูปเป็นตัวอักษร (OCR)
      • เขียน AI แยกของต่างๆทำยังไง?
      • เขียนแอพ ทายอายุ บอกเพศ ง่ายจิ๊ดเดียว
      • เขียนแอพให้ AI อธิบายรูปเป็นภาษาคน
    • 👶Machine Learning Studio
      • มาสร้าง AI ของแท้ตัวแรกของเรากัน
      • สร้าง AI ตัดสินใจอนุมัติบัตรเครดิต 💳
      • ลองเรียกใช้ AI ของเรากัน
    • 👶Azure Service Fabric
      • สร้าง Service Fabric กัน
    • 👶Blockchain
      • Blockchain ทำงานยังไง ?
      • Consensus Algorithm คืออะไร ?
      • สร้าง Blockchain ใช้เองกัน !
      • หัดเขียน Smart Contract กัน
    • 👶Power BI
    • 👶Azure Web App
      • เซิฟเวอร์บนคลาว์ ราคา? ต่าง?
    • 👶Azure DevOps
      • เล่น Azure DevOps กัน
      • เล่นกับ Repository
      • ลองทำ Continuous Integration (CI)
      • ลองทำ Continuous Delivery (CD)
      • เล่น Kanban Board
    • 🤠Cloud Playground
      • การป้องกันความลับหลุดตอนที่ 1
      • การป้องกันความลับหลุดตอนที่ 2
      • การป้องกันความลับหลุดตอนที่ 3
      • การป้องกันความลับหลุดตอนจบ
  • Software Testing
    • 👦Test-First Design
    • 👦Test-Driven Development
      • 1.มารู้จักกับ TDD กันดีกว่า
      • 2.Test cases เขาเขียนกันยังไงนะ
      • 3.เครื่องมือในการทดสอบ
      • 4.การใช้ Theory และ InlineData
      • 5.โค้ดที่ทดสอบได้
      • 6.Mantra of TDD
      • 7.Functional & None-Functional testing
      • 8.Manual vs Automation testing
      • 9.Automation Frameworks in .NET
      • 10.Mock Framework
      • 11.มาเรียนการใช้ Moq กันเถอะ
      • 12.สรุป
  • Web
    • 👦Web API
      • 1.Web API คืออะไร
      • 2.ติดตั้ง .NET Core SDK
      • 3.สร้าง Web API ตัวแรกกัน
      • 4.Verbs
      • 5.Swagger เพื่อคู่ API
      • 6.การใช้ Model
      • 7.เรียก Web API ผ่าน Postman
      • 8.มาจัดกลุ่ม API กัน (1/2)
      • 9.มาจัดกลุ่ม API กัน (2/2)
  • Software Design
    • 🤴Design Patterns
      • 🦈Creational patterns
        • Abstract Factory
        • Builder
        • Factory Method
        • Prototype
        • Singleton
      • 🦈Structural patterns
        • Adapter
        • Bridge
        • Decorator
        • Facade
        • Proxy
      • 🦈Behavioral patterns
        • Chain of Responsibility
        • Command
        • Iterator
        • Mediator
        • Memento
        • Observer
        • State
        • Strategy
        • Template Method
        • Visitor
Powered by GitBook
On this page
  • 😢 ปัญหา
  • 🔥 Software Development Life Cycle (SDLC)
  • 🤔 SDLC Models มีอะไรบ้าง ?
  • 💀 Waterfall Model
  • ❤️ Agile Model
  • 🤔 Agile ดีที่สุดแล้วเหรอ ?
  • 🤔 ทำซอฟต์แวร์มันยากตรงไหน ?
  • 🎯 บทสรุป

Was this helpful?

Export as PDF
  1. พื้นฐานที่ควรต้องรู้
  2. Agile Methodology

Software Development Life Cycle

🤔 รู้ป่าว 80% ที่โปรเจคล่มก็เพราะเรื่องนี้แหละ!! และเราเข้าใจมันถูกหรือยัง? (อธิบายเป็นภาษาคน)

PreviousAgile in a NutshellNextCode Review

Last updated 5 years ago

Was this helpful?

ในบทความนี้เราจะมาดูกันว่า การทำซอฟต์แวร์มันมีขั้นตอนอะไรบ้าง? รวมถึงข้อเสียถ้าเราไม่ทำหรือข้ามขั้นตอนพวกนั้นจะเกิดอะไรขึ้น?

แนะนำให้อ่าน บทความนี้เป็นส่วนหนึ่งของบทความ หากเพื่อนๆสนใจอยากศึกษาการทำ Agile แบบเต็มรูปแบบก็สามารถกดลิงค์สีฟ้าๆเพื่อเข้าไปดูได้เลยนะ

😢 ปัญหา

เวลาที่เราทำซอฟต์แวร์ผมเชื่อว่าหลายๆคนน่าจะเคยเจอปัญหาคล้ายๆกัน เช่นเวลาที่ไปคุยกับลูกค้า เขาก็จะอธิบายว่าอยากได้ชิงช้าแบบไหน สมมุติว่าเป็นแบบรูปด้านล่างนี้ละกัน

ซึ่งแน่นอนตอนที่เราไปฟังมาแต่ละฝ่ายก็จะเข้าใจไม่เหมือนกัน เช่น หัวหน้าทีมก็อาจจะบอกว่าชิงช้า 3 ชั้นแบบนั้นจะเอาไปทำไม? มันต้องเป็นแบบนี้เฟร้ย

ถัดมาทีมออกแบบก็บอกว่า เจ้าบ้าเอ้ยแล้วมันไกวได้ยังไง? มันต้องเป็นแบบนี้ต่างหากล่ะ ถึงจะทำงานได้

ส่วนพอ developer ได้ยินก็บอกพวกตูมีปัญญาเขียนแค่นี้เท่านั้นแหละ เอาแบบนี้เถอะชิงช้าเหมือนกันนะ :)

จากที่ว่ามาทำให้งานที่เอาไปส่งลูกค้าก็เลยเป็นแบบนี้

ซึ่งในความเป็นจริงสิ่งที่ลูกค้าอยากได้อาจจะเป็นแค่นี้ก็ได้

เป็นการ์ตูนล้อเลียนที่สะท้อนปัญหาในการทำซอฟต์แวร์ได้ใกล้เคียงกับความเป็นจริงมาก โดยการ์ตูนตัวเต็มเป็นรูปด้านล่างนี้เลย

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

จากปัญหาที่เล่ามา เราเลยต้องมารู้จักกับสิ่งที่จะช่วยแก้ปัญหาโลกแตกนี้นั้นก็คือสิ่งที่เรียกว่า Software Development Life Cycle หรือเรียกย่อๆว่า SDLC นั่นเอง

🔥 Software Development Life Cycle (SDLC)

เพื่อที่จะป้องกันปัญหาที่เล่ามา ตอนที่เราทำซอฟต์แวร์เขาเลยมีขั้นตอนให้เราทำทั้งหมด 6 ขั้นตอน ซึ่งทั้งหมดนี่เราเรียกว่า SDLC ยังไงล่ะ ตามรูปด้านล่างเลย

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

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

SDLC Phases ในแต่ละข้อมันมีรายละเอียดของมันเยอะมากอยู่ ผมขี้เกียจไปลงรายละเอียดไม่งั้นมันจะกลายเป็นตำราหนังสือที่ผมไม่ชอบ ดังนั้นไปหาอ่านเอาเองละกัน

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

🤔 SDLC Models มีอะไรบ้าง ?

เย๊อะม๊วกกก เช่น Waterfall, V-Shaped, Prototype, Spiral, Iterative Incremental, Big Bang, Agile แค่เห็นก็ปวดหัวละ ซึ่งแต่ละตัวก็มีรายละเอียดของมันอีกอื้อซ่าเลย ดังนั้นไปหาอ่านเอาเองละกัน แต่เรื่องที่เราควรจะต้องรู้คือ

💀 Waterfall Model

ตัวแรกที่คนที่เรียนสายคอมจะต้องรู้จักคือการทำซอฟต์แวร์ที่ชื่อว่า Waterfall หรือ แบบน้ำตก นั่นเอง ซึ่งส่วนใหญ่ทุกคนที่เรียนจะจำมันได้ และเอามันไปใช้ในการทำซอฟต์แวร์กัน

เรื่องตลกร้าย ตัว Waterfall model ถูกพูดเป็นโมเดลตัวแรกในการพัฒนาซอฟต์แวร์ และสิ่งที่เขาพูดไว้คือ อย่าเอามันไปใช้นะเฟร้ยยยยย เพราะมันจะทำให้โปรเจคเราพังในระยะยาวยังไงล่ะ

เชื่อไหมเกิน 50% ของบริษัทซอฟต์แวร์นั้นใช้ Waterfall model กันอยู่และแม้แต่บริษัทเปิดใหม่ก็มีแนวโนมจะใช้มันด้วย!! ดังนั้นเรามาดูกันหน่อยว่า waterfall model มันเป็นยังไง ซึ่งก็ตามรูปด้านล่างเลย

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

🤔 แล้วมันไม่ดียังไง ?

เพราะมันไม่สอดคล้องกับความเป็นจริงยังไงล่ะ! เราเคยเห็นงานตัวไหนที่ลูกค้าจะไม่ขอแก้ไขเพิ่มเติมบ้างป่าว? ... ไม่มีหรอก ซึ่งถ้ามันต้องแก้นั่นหมายความว่าเราต้องไล่เก็บ requirement ใหม่ ออกแบบใหม่ หรือพูดง่ายๆทำขั้นตอนพวกนั้นใหม่นั่นเอง ... จะบร้าเหรอ! แล้วกว่างานจะได้เริ่มทำนะนู่นปาเข้าไปขั้นตอนที่ 3 (implementation) ซึ่งกว่าจะทำขั้นตอนที่ 1-2 เสร็จใช้เวลากี่เดือน? เราจะตอบลูกค้าว่า งานที่ทำอยู่ 6 เดือนผมกำลังทำความเข้าใจและออกแบบอยู่ครับได้ด้วยเหรอ? และอีกสารพัดปัญหาของมัน ดังนั้นทีมไหนที่กำลังใช้ Waterfall model อยู่จงรีบประชุมเปลี่ยนแผนโดยด่วน

❤️ Agile Model

หลังจากที่เห็นแล้วว่า waterfall เลวร้ายแค่ไหน ถัดมาก็จะมีคำถามว่า แล้วเราควรใช้อะไรดี? ดังนั้นก็เป็นทีของพระเอกของเรานั่นคือ Agile model นั่นเอง ซึ่งมันเกิดจากการนำ Iterative model และ Incremental model เข้ามาด้วยกัน ซึ่งมันสอดคล้องกับความเป็นจริงในการทำซอฟต์แวร์มากกว่านั่นเอง ซึ่งลักษณะการทำงานแบบ agile model ก็จะตามรูปด้านล่างเลย

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

ในรายละเอียดของ Agile model นั้นเดี๋ยวเราจะไปอธิบายต่อในบทความถัดไปเอานะ

🤔 Agile ดีที่สุดแล้วเหรอ ?

ถ้าเราไปดูหลักในการจัดการซอฟต์แวร์นั้นเราก็จะพบว่ามันมีอีกหลายแบบยั๊วเยี๊ยเต็มไปหมดเลย แต่ผมขอสรุปสั้นๆออกมาเป็นแบบนี้ละกันว่า ไม่ว่าจะเป็นแบบไหนก็ตามมันถูกออกแบบมาจากแนวคิด 2 อย่างคือ

  • คุณภาพงานต้องมาก่อน - โดยแนวคิดนี้ถอดแบบมาจากโรงงานอุตสาหกรรม โดยมองว่าซอฟต์แวร์จะมีคุณภาพดีได้ ขั้นตอนในการทำจะต้องเป็นตามลำดับ 1234 เท่านั้น ดังนั้นใครก็ตามที่ทำตามขั้นตอนนี้ ก็น่าจะได้คุณภาพของซอฟต์แวร์ที่ดีนะ ซึ่งเราจะพบได้จาก model ตระกูลที่ใช้ ISO หรือ CMMI นั่นเอง

  • ซอฟต์แวร์เป็นของที่ดิ้นได้ - โดยแนวคิดนี้มองว่าซอฟต์แวร์มันเปลี่ยนแปลงได้เรื่อยๆตามสถานการณ์ของมัน ดังนั้นเราต้องค่อยๆทำ ค่อยๆปรับตามความเหมาะสม ซึ่งเราเรียกมันว่า Research and Development หรือ R&D นั่นเอง ซึ่งเราจะพบได้จาก model ตระกูล Agile หรือ Lean นั่นเอง

จากแนวคิดทั้ง 2 แบบนี้ ในมุมมองของผมคือ การทำซอฟต์แวร์นั้นเหมาะกับ R&D มากกว่า เพราะมันต้องทำไปพัฒนาไป โดยแม้แต่ลูกค้าก็ไม่รู้หรอกว่าเขาอยากได้อะไร ดังนั้นไม่ต้องถามเลยว่า User ชอบแบบไหน เราอาจจะต้องลองทำไปก่อน แล้วค่อยเอาผลลัพท์มาวิเคราะห์เพื่อปรับแก้ตามความเหมาะสมต่างหาก

🤔 ทำซอฟต์แวร์มันยากตรงไหน ?

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

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

🎯 บทสรุป

Software Development Life Cycle (SDLC) มันเป็นแค่ขั้นตอนที่ช่วยเตือนไม่ให้เราหลงทางในการทำซอฟต์แวร์เพียงเท่านั้น สิ่งที่ทำให้โปรเจคส่วนใหญ่ล้มเหลว หรือไม่สามารถส่งมอบงานให้ลูกค้าได้ตามที่สัญญาไว้ เกือบจะ 80% ก็เกิดจากการที่เราละเมิดหรือลืมทำขั้นตอนใดซักขั้นตอนหนึ่งใน SDLC นั่นแหละ โดยต่อให้เราใช้ Agile model แต่ถ้าเราละเมิดขั้นตอนก็อาจจะพังได้เช่นกัน ดังนั้นเราควรจะต้องเรียนรู้ และ นำมันไปใช้จริงๆจนเราทำมันเหมือนเป็นการหายใจไปเลยนั่นเอง

👦
👦 Agile Methodology
อะไรก็ได้มาให้ตูนั่งแล้วไกวได้ก็พอใจแล้ว
https://makerkit.co/blog/how-important-is-customer-feedback
https://pastorkylehuber.com/?p=15935