Tại sao dự án phần mềm thất bại?
Trong bài viết này, chúng ta sẽ định nghĩa thất bại của các dự án phát triển phần mềm thành 4 loại và các giải pháp xử lý dự án thất bại của bạn

Mọi dự án phát triển phần mềm thường bắt đầu với những mục tiêu cao cả và tầm nhìn hoành tráng. Thật không may, theo nghiên cứu của Standish Group về hơn 50.000 dự án công nghệ, hai phần ba kết thúc với thất bại một phần hoặc hoàn toàn.

Mọi người cứ nói về cách phát triển phần mềm thành công, nhưng chỉ một số ít trong số họ thực sự thảo luận về nguyên nhân gây ra một dự án CNTT thất bại. Không thể đáp ứng các yêu cầu thị trường luôn thay đổi hoặc mã triển khai không biên dịch được là hai lý do điển hình khiến các dự án phần mềm bị hủy bỏ. 

Với nhiều năm kinh nghiệm trong việc trợ giúp các doanh nghiệp trên toàn thế giới sắp xếp các dự án phần mềm của họ và bàn giao đúng hạn cũng như trong phạm vi ngân sách, chúng tôi đã xác định được một số cạm bẫy phổ biến và phát triển các chiến lược để tránh chúng. Trong bài viết này, chúng ta sẽ định nghĩa thất bại của các dự án phát triển phần mềm thành 4 loại: 

Lập kế hoạch chi phí và thời gian không phù hợp bao gồm:

1. Các mốc thời gian không thực tế

Một dự báo thời gian ngắn có thể dẫn đến sự phát triển vội vã, trong đó chất lượng bị ảnh hưởng để đáp ứng thời hạn. Điều này có thể làm cho phần mềm của bạn trở nên không ổn định, không đáng tin cậy và dễ bị treo, gây tổn hại đến danh tiếng của tổ chức và dẫn đến thất bại trong dự án. 

Hơn nữa, các dự án phát triển phần mềm thường liên quan đến những thách thức và thất bại không mong đợi. Nếu thời gian không phù hợp, có thể không có đủ thời gian để giải quyết những vấn đề này. Nghiêm trọng hơn, nó có thể dẫn đến tình trạng kiệt sức, tinh thần sa sút và giảm năng suất ở các kỹ sư CNTT khi phải làm việc dưới áp lực đáng kể để đáp ứng thời hạn.

Giải pháp: Để đảm bảo có thể đạt được mốc thời gian, đây là một số bước mà bạn có thể xem xét:

  • Thu hút tất cả các bên liên quan tham gia vào quá trình lập kế hoạch: Điều này là cần thiết để đảm bảo rằng các nhu cầu và mong đợi của họ được ghi nhận rõ ràng và từ đó có một kế hoạch rõ ràng với các mốc thời gian thực tế.
  • Tiến hành nghiên cứu khả thi: Trước khi thiết lập thời gian biểu, bạn nên đánh giá mức độ phức tạp của dự án, nguồn lực sẵn có và bất kỳ rủi ro hoặc thách thức tiềm ẩn nào.
  • Sử dụng các công cụ quản lý dự án: Bằng cách sử dụng biểu đồ Gantt hoặc mẫu quản lý dự án (template), bạn có thể theo dõi tiến trình của dự án và đảm bảo mọi sửa đổi đối với dòng thời gian được quản lý hiệu quả.Odoo Gant Chart

2. Bỏ Qua Chi Phí Trì Hoãn

Chi phí Trì hoãn (CoD - Cost of Delay) tính toán tác động tài chính của việc trì hoãn dự án đối với một công ty. Ví dụ: nếu nhóm phát triển của bạn đang lên kế hoạch cung cấp một tính năng bổ sung mới được dự đoán sẽ mang lại cho bạn 20.000 đô la mỗi tuần, thì việc phát hành bị hoãn lại mỗi tuần sẽ khiến công ty của bạn phải trả số tiền này.


Xem xét CoD cho một dự án phần mềm có thể cung cấp cho bạn một bức tranh rõ ràng hơn về cách phân bổ nguồn lực, từ đó, sắp xếp thứ tự ưu tiên cho các nhiệm vụ và mốc thời gian để cải thiện ROI. 

Giải pháp: Điều quan trọng là phải ước tính CoD và thông báo nó với mọi người có liên quan. Đây là phương pháp tính toán chính xác:

  • Xác định lợi nhuận/giá trị dự kiến ​​hàng tuần của dự án
  • Ước tính thời gian cần thiết để đưa công việc của bạn vào thực tế
  • Chia lợi nhuận theo thời gian dự án đo lường.

3. Phân tích các giai đoạn Khám phá yêu cầu (Discovery) và Phát hành (Delivery)

Nếu quá trình thu thập yêu cầu và phát hành đầu ra được xem xét độc lập, nó có thể dẫn đến các mục tiêu và kỳ vọng không phù hợp giữa nhóm phát triển và các bên liên quan. Điều này có thể dẫn đến việc không thể đáp ứng các yêu cầu của các bên liên quan (stakeholder), đồng thời làm mất niềm tin và sự tin tưởng vào nhóm phát triển.


Hơn nữa, điều này có thể dẫn đến sự thiếu linh hoạt trong dự án khi cần thay đổi, ảnh hưởng đến khả năng đáp ứng ngày bàn giao đã định trước của bạn.

Giải pháp: Bằng cách đưa quy trình khám phá vào kế hoạch dự án, các tổ chức có thể đảm bảo các kết quả có thể đo lường được phù hợp với mục tiêu và kỳ vọng, đúng thời gian và trong phạm vi ngân sách.  

Quản lý dự án không hiệu quả bao gồm:

4. Thiếu ưu tiên trong thực thi nhiệm vụ, công việc

Nói chung, hầu hết các dự án phần mềm sẽ có một danh sách các tính năng và nhiệm vụ cần phải hoàn thành. Người lập kế hoạch sẽ sử dụng danh sách này để phân công nhiệm vụ cho các thành viên trong nhóm theo thứ tự quan trọng. Tuy nhiên, các ưu tiên không phải lúc nào cũng phù hợp với thực tế của việc thực hiện chúng. Trong trường hợp xấu nhất, các tính năng quan trọng nhất là những tính năng khó phát triển nhất. 

Vì vậy, các nhà phát triển nhóm của bạn nên tiến hành như thế nào? Nếu họ tập trung vào các tính năng quan trọng nhất, tiến độ có thể kéo dài hơn dự đoán và cuối cùng không cung cấp được chức năng nào. Tuy nhiên, loại bỏ những cái đơn giản có thể lãng phí thời gian và công sức của họ cho những sản phẩm vô giá trị. Hãy nhớ nguyên tắc "Keep it simple, but significant".


Giải pháp: Dưới đây là một số phương pháp hay nhất để bạn ưu tiên các nhiệm vụ hiệu quả hơn:

  • Xác định các mục tiêu và yêu cầu của dự án: điều này bao gồm phân tích các mục tiêu, ràng buộc và tiêu chí thành công của dự án , có thể được sử dụng để xác định thứ tự của các nhiệm vụ khác nhau. Tầm nhìn kiến ​​trúc phải tính đến các yêu cầu và chi phí cung cấp các tính năng đó.
  • Sử dụng số liệu ưu tiên: bạn có thể xem xét phương pháp công việc ngắn nhất có trọng số trước (WSJF) để phân loại các nhiệm vụ dựa trên giá trị của chúng, rủi ro liên quan đến việc không hoàn thành nhiệm vụ hoặc nỗ lực cần thiết để hoàn thành nhiệm vụ.

  • Xem xét phương pháp Agile : lợi ích chính của quản lý dự án nhanh là nó nhấn mạnh việc đánh giá lại thường xuyên và điều chỉnh các ưu tiên để đảm bảo rằng nhóm phát triển có thể cung cấp các chức năng và tính năng làm việc đúng hạn. Vì khuôn khổ của mô hình linh hoạt (Agile) chỉ đề cập việc phân tách công việc thành các đợt ngắn (iteration) hoặc các phần nhỏ (thường là chạy nước rút trong 2 tuần), nên toàn bộ nhóm sẽ dễ quản lý hơn.

5. Số lượng nhân sự không phù hợp

Nếu nhóm phát triển thiếu nhân lực, điều đó có thể dẫn đến thời gian thực hiện các nhiệm vụ lâu hơn, trễ hạn và làm chậm trễ toàn bộ dự án. Các nhà phát triển có thể cảm thấy làm việc quá sức do không có đủ thời gian để kiểm tra và gỡ lỗi mã kỹ lưỡng, dẫn đến chất lượng phần mềm giảm sút.

Ngược lại, nếu nhóm phát triển có quá nhiều nhân viên, điều đó có thể dẫn đến chi phí lao động quá mức và tăng chi phí chung, dẫn đến vượt chi phí.

Giải pháp: Cần đánh giá chính xác các yêu cầu của dự án để xác định quy mô phù hợp của nhóm phát triển. Điều này sẽ giúp đảm bảo rằng nhóm có quy mô phù hợp để đáp ứng nhu cầu của dự án. 

Vì một số dự án có thể mở rộng, bạn nên thường xuyên xem xét quy mô của nhóm phát triển để giảm thiểu tình trạng làm việc quá sức hoặc sử dụng không đúng mức và đảm bảo rằng dự án luôn đi đúng hướng.

6. Chiến lược kiểm tra không phù hợp

Các dự án phát triển phần mềm phải trải qua quá trình kiểm thử kỹ lưỡng để đảm bảo rằng phần mềm đáp ứng các yêu cầu và hoạt động trơn tru như mong đợi. Nếu thử nghiệm không được thực hiện đúng hoặc không đầy đủ, nó có thể dẫn đến việc phát hành các sản phẩm có lỗi, điều này có thể dẫn đến giảm sự hài lòng của khách hàng và tăng chi phí hỗ trợ.

Ngoài ra, nếu các lỗi được phát hiện và giải quyết muộn hơn trong chu kỳ phát triển, nó có thể làm tăng tổng chi phí để thực hiện lại việc kiểm tra và gỡ lỗi.

Giải pháp: Để tránh những hậu quả tiêu cực này, bạn nên đảm bảo rằng việc kiểm tra được xem xét đầy đủ ngay từ đầu trong quy trình phát triển phần mềm. Điều này có thể bao gồm việc đầu tư vào các công cụ kiểm tra tự động, xây dựng một kế hoạch kiểm tra toàn diện và dành đủ nguồn lực cho các hoạt động kiểm tra. 

Via: Viện CNTT T3H


Luật Brook và thuật ngữ "ramp-up"​
Quy tắc Brooks (Brooks’ Law) khá nổi tiếng cho rằng trong việc phát triển phần mềm, thêm người vào dự án khi nó bị trễ hạn sẽ càng làm cho nó bị trễ hạn nhiều hơn