12 Jan, 2021
Vấn đề với dự án phần mềm lớn
Khi nhiều dự án phần mềm đang ngày càng lớn hơn và phức tạp hơn, kĩ năng và kinh nghiệm của người quản lí càng trở nên quan trọng hơn.
Bên cạnh các công ti lớn, nhiều dự án của chính phủ cũng trở nên lớn hơn với hàng triệu dòng mã và trị giá từ hàng chục tới hàng trăm triệu đô la. Các loại dự án này sẽ có tác động khổng lồ lên tổ chức và các cơ quan chính phủ, do đó về bản chất chúng yêu cầu người quản lí dự án phải có kinh nghiệm nhiều trong làm việc với các dự án lớn tương tự. Hơn nữa, chúng phải kiểm tra cả tính đáng tin và chất lượng của người quản lí một cách chặt chẽ. Người quản lí dự án phải có chứng chỉ chuyên nghiệp và phải làm việc trong lĩnh vực phần mềm trong một thời gian nào đó.
Vì nhiều dự án lớn thường xô vào đáp ứng hạn chót thời gian cố định, việc đáp ứng các mục tiêu mấu chốt quan trọng hay khi ngân sách sẵn có rất nhiều phải phải chi tiêu, tổ chức thường bỏ qua quá trình tiến hoá rồi chấm dứt với những vấn đề chính về phí tiền bạc, thời gian và ít đạt tới giá trị. Một trong những cớ cho việc thiếu kinh nghiệm của người quản lí dự án là ở chỗ những người quản lí dự án cũ không hiểu công nghệ mới hay phương pháp mới. Câu hỏi của tôi là: Tại sao tổ chức muốn làm việc trên những dự án rất lớn dùng các công nghệ và phương pháp mới mà chỉ vài người mới thực sự hiểu được? Khi tôi kiểm điểm qua hàng trăm dự án lớn thất bại, nhiều dự án trong số đó là ở trong các cơ quan chính phủ Mĩ, tôi thấy rằng các dự án thất bại thường bị quản lí bởi những người không có kinh nghiệm về quản lí các dự án lớn với công nghệ và phương pháp mới mà họ chưa bao giờ dùng trước đây. Nhiều dự án hội tụ vào phần cứng nhiều hơn, đặc biệt công nghệ phần cứng mới nhất nhưng ít chú ý tới phần mềm. Đến cuối họ đem về tất cả những phần cứng tốt nhất nhưng không có phần mềm để chạy. Vì phải mất thời gian nhiều hơn để xây dựng phần mềm, thường vài năm do đó nhiều phần cứng cuối cùng trở nên lạc hậu và mục tiêu không đạt được. Với người quản lí dự án không có kinh nghiệm, phần cứng dễ hiểu còn phần mềm khó hơn, cho nên họ bao giờ cũng bắt đầu dự án với phần cứng, đặc biệt khi có ngân sách cho nên họ bắt đầu bằng công nghệ tốt nhất mà họ có thể gây ấn tượng cho ông chủ của mình và phạm cùng sai lầm như người khác đã phạm phải. Nhiều nghiên cứu về thất bại dự án phần mềm lớn đã thấy rằng 87% các dự án thất bại vì phần mềm chứ KHÔNG vì phần cứng trừ vài tổ chức đang chú ý tới phần mềm và kinh nghiệm của người quản lí dự án phần mềm.
Tôi tin rằng chìa khoá cho thành công của bất kì dự án nào, đặc biệt dự án lớn, là có người đúng với kĩ năng đúng trong việc đúng. Là người quản lí một công ti lớn, khi thuê người quản lí các dự án lớn, tôi thường hỏi những câu hỏi sau: “Có thành viên tổ dự án nào đã xây dựng cái gì lớn thế này không?” “Có thành viên tổ dự án nào dùng phương pháp hay công nghệ này trên dự án lớn thế này không?” “Có thành viên tổ dự án nào đã tham gia vào thất bại dự án lớn không?” “Thành viên tổ có các kĩ năng về lập kế hoạch, kiến trúc, yêu cầu và thiết kế không?” “Có ai đã nghĩ về kế hoạch dự phòng trong trường hợp thất bại không?”
Tôi tin để biết liệu tổ dự án có đủ kinh nghiệm để đảm bảo làm việc trong dự án lớn, tổ chức phải hỏi các câu hỏi này với mọi vị trí chính trong dự án. Họ phải kiểm về các chi tiết chất lượng, kinh nghiệm để đảm bảo rằng tổ có thể giải quyết dự án vì họ đang trao cho những người này cái gì đó rất quan trọng để thực hiện. Tổ chức phải yêu cầu mô tả từ từng thành viên tổ về điều người đó làm khi mọi sự đi sai hay ưu tiên bị thay đổi. Việc hỏi này nên kiểm lại cách thành viên có thể phân bổ nhiệm vụ và phân bố khối lượng công việc. Mọi ứng cử viên nên được hỏi về kinh nghiệm của người đó với các dự án lớn. Làm sao dự án lớn có ứng cử viên làm việc trên đó? Dự án lớn yêu cầu các kĩ năng xác định về lập kế hoạch, lập lịch biểu, kiến trúc, thiết kế và giám sát. Những người quản lí dự án thành công nên biết rằng có sức ép khổng lồ để làm mọi thứ trong một lịch biểu cố định, để đáp ứng các mục tiêu then chốt, và đạt tới thành công đặc biệt nếu dự án sẽ kéo dài vài năm.
Có việc đào tạo quản lí dự án nhưng phần lớn không chuẩn bị cho người quản lí dự án về dự án lớn với những vấn đề duy nhất của nó. Dự án lớn yêu cầu đào tạo đặc biệt với kịch bản và thực hành thực tế. Bạn không thể chỉ học trong lớp và coi rằng bạn đủ phẩm chất cho chức vụ đó. Tôi không chắc người quản lí dự án “có chứng chỉ” ngụ ý gì nếu đích thân bạn KHÔNG thực tế quản lí dự án. Theo quan điểm của tôi, người quản lí dự án lớn phải có kinh nghiệm trong các dự án nhỏ và vừa rồi nhận đào tạo đặc biệt về cách quản lí dự án lớn, đào tạo này nên bao gồm về các kĩ năng qui trình, quyền lãnh đạo và trao đổi bởi vì người quản lí phải biết người của mình đang làm gì và tại sao. Khi họ không thể hiểu được người của họ đang nói gì, hay hiểu công nghệ và phương pháp trong dự án thì họ bị rủi ro. Vì phần lớn các dự án tương lai đều sẽ lớn, đặc biệt với dự án chính phủ. Đào tạo đặc biệt về quản lí dự án cho dự án lớn là mấu chốt.
—-English version—-
Problems with large software project
As many software projects are getting larger and more complex, the skills and experiences of project manager have becoming more important. Beside large companies, many government projects are also getting larger with several million lines of code and worth tens or hundreds of millions of dollars. These kinds of project will have an enormous effect on an organization or government agencies therefore it is essential that they require project managers to have extensive experience working on similar larger projects. Moreover, they should check credentials and qualification of the manager closely. Project manager should have professional certificate and to have worked in the software field for an extensive period.
Because many large projects are often rushed to meet a fixed deadline, to meet important critical objectives, or when budget is available in large amount and must be spend, organization frequently ignores the evaluation process then ends up with major problems of wasting money, time and achieves little value. One of the excuses for a lack of project manager experience is that older project managers do not understand new technologies or new methods. My question is: Why does organization want to work on very important projects using technologies and methods that only a few people really understand? As I have reviewed hundred of failed large projects, many of them were in U.S government agencies I found that failed projects are often managed by those who are inexperienced in managing large projects with new technologies and methods that they never used before. Many projects are focusing more on hardwares, especially newest hardware technology but pay little attention to software. In the end they have bought all the best hardwares in place but no software to run. As it takes much longer for the software to be built, usually several years therefore many hardwares eventually become obsolete and the objectives not achieved. To inexperienced project managers, Hardware is easy to understand and software is more difficult, so they always start at the beginning of the project with hardware, especially when there are budget so they start with the best technology that they can get to impress their boss and making the same mistake as other has made before. Several researches on large software project failure have found that 87% of project failed because of software and NOT hardware but few organizations are paying attention to software and the experience of the software project manager.
I believe that the key to the success of any project, especially large project, is having the right people with the right skills in the right jobs. As a manager of a large company, when hire project manager for large projects, I often ask the following questions: “Has any project team member built anything this big?”, “Has any project team member used this method or technology on a project this big?” “Has any project team member been involved in a large project failure? “Does the team member have planning, architecture, requirements, and design skills?” Has anyone thought about contingency plans in case of failure?”
I believe in order to know whether a project team has enough experience to warrant working on large project, organizations must ask questions for every major position represented in the project. They must check qualifications, experiences in details to ensure that the team can handle the project since they are giving them something very important to do. Organizations must ask for a description from each team member of what he does when things go wrong or priorities change. This questioning should check how the member might allocate tasks and distribute the amount of works. Every candidate should be asked on his experience with large projects. How large a project has the candidate worked on? Large projects require specific skills in planning, scheduling, architecting, designing and monitoring. Successful project managers should know that there is enormous pressure to do things within a fixed schedule, to meet key objectives, and achieve success especially if the project is going to last for a few years.
There are project management trainings but most do not prepare project managers for a large project with its unique problems. Large project requires special trainings with actual scenarios and practices. You can not take a class and consider that you qualify for the position. I am not sure what it means to be a “certified” project manager if you have NOT actually managed a project yourself. From my view, managers of large project must have experiences in small and medium projects then receive specific training in how to manage large project, this training should consists of process, leadership and communication skills because the manager must know what their people are doing and why. When they can not understand what their people are saying, or understand the technology and the method in the project than they are at risk. Since most future projects will be large, especially with government project. A special training in project management for large project is essential.