08/07/2013 – Blogs of Prof. John Vu, Carnegie Mellon University
– This article is translated into Vietnamese by Ngo Trung Viet with the English
originals followed.
Quản lí dự án phần mềm là khó bởi vì yêu cầu và công nghệ bao giờ
cũng thay đổi và phần lớn những người quản lí không được đào tạo chính thức nào
về cách quản lí dự án phần mềm. Những người quản lí có kinh nghiệm biết cách
dành thời gian từ lúc bắt đầu dự án để gặp gỡ với khách hàng để hiểu nhu cầu của
họ và mong đợi của họ. Một số khách hàng coi lịch biểu là quan trọng khi những
khách hàng khác coi chất lượng là quan trọng hơn. Với việc biết yếu tố nào là
quan trọng, họ có thể lập kế hoạch dự án tương ứng.
Người quản lí thiếu kinh nghiệm có xu hướng kết thúc việc lập kế
hoạch nhanh chóng để cho họ có thể viết mã. Đó là lí do tại sao nhiều người
trong số họ không thành công bởi vì họ không biết đích xác điều khách hàng muốn.
Người quản lí có kinh nghiệm biết cách cân bằng các yếu tố mấu
chốt của dự án như các mục tiêu chức năng, ngân sách, lịch biểu và chất lượng.
Bằng việc xem xét cẩn thận từng yếu tố với kế hoạch dự án; họ có thể thương lượng
với khách hàng về những thay đổi trong lịch biểu, chi phí và tài nguyên. Thương
lượng là một trong những kĩ năng quan trọng nhất của người quản lí dự án
nhưng hiếm khi được dạy trong trường. Người quản lí có kinh nghiệm biết cách
làm việc với khách hàng và thương lượng về điều thực tế có thể đạt tới được. Họ
bao giờ cũng lập kế hoạch, thương lượng, cân đối, hỏi và nghe bởi vì họ biết họ
càng dành nhiều thời gian cho lập kế hoạch, họ càng mất ít thời gian phải giải
quyết vấn đề về sau.
Người quản lí thiếu kinh nghiệm thích viết mã, nhưng không thích
lập kế hoạch.
Người quản lí có kinh nghiệm bao giờ cũng phân rã công việc dự
án thành những nhiệm vụ nhỏ hơn để cho họ có thể ước lượng được chính xác hơn.
Họ kiểm các ước lượng của mình với thành viên tổ, hỏi ý kiến của họ, hợp nhất dữ
liệu trước khi lập kế hoạch lịch biểu. Họ cũng dùng danh sách kiểm và trang
tính lập kế hoạch cho những nhiệm vụ này, những điều bao quát tất cả các bước cần
thiết.
Người quản lí thiếu kinh nghiệm không biết cách phân rã hay ước
lượng, họ chỉ đoán hay tuân theo bất kì lịch biểu nào khách hàng đưa cho họ.
Không có thời gian đúng và lịch biểu không hợp lí, họ không bao giờ hoàn thành
dự án đúng hạn.
KHÔNG có dự án nào hoàn hảo. Gần như mọi dự án đều có vấn đề,
trong kiểm điểm kĩ thuật hay kiểm thử; sẽ có lỗi hay các vấn đề khác phải được
làm lại. Người quản lí có kinh nghiệm biết cách lập kế hoạch để làm lại bằng việc
đặt ra một số thời gian phụ trong toàn thể kế hoạch dự án để cho tổ dự án sẽ có
đủ thời gian sửa chữa vấn đề và không vội vàng vào các hoạt động khác.
Người quản lí thiếu kinh nghiệm không biết cách lập kế hoạch để
làm lại, họ giả định mọi sự đều tốt cho tới khi cái gì đó xảy ra, họ hoảng hốt.
Vì họ không biết cách kiểm soát vấn đề, vấn đề sẽ kiểm soát họ.
Người quản lí có kinh nghiệm hiểu tầm quan trọng của đào tạo. Họ
xác định các thành viên tổ cần bao nhiêu thời gian để cải tiến kĩ năng của mình
và chuẩn bị thời gian và ngân sách cho họ. Họ hiểu rằng tổ có kĩ năng cao là
nhân tố then chốt cho thành công và sẵn lòng đầu tư cho người của họ.
Người quản lí thiếu kinh nghiệm không đánh giá được giá trị của
đào tạo. Họ coi nó là “tốn kém” cho nên họ không gửi tổ của họ đi đào tạo bổ
sung. Ngay cả người giỏi nhất cũng sẽ cần đào tạo và không có đào tạo, kĩ năng
của họ có thể trở nên lạc hậu vì họ không theo kịp những thay đổi công nghệ.
Không dự án nào có thể thành công với “người thiếu kĩ năng”.
Theo nghiên cứu mới nhất, chỉ 23% dự án phần mềm được hoàn thành
đúng thời gian, theo ngân sách với mọi chức năng được yêu cầu. 77% dự án phần mềm
bị chậm, vượt quá ngân sách với ít chức năng hơn và cần nhiều thời gian hơn,
nhiều tiền hơn để sửa chữa vấn đề.
Trong 35 năm làm việc trong công nghiệp của mình, tôi chưa bao
giờ thấy một dự án thất bại bởi vì tổ dự án không thể viết được mã mà tôi đã thấy
bao nhiêu dự án thất bại vì người quản lí không có kĩ năng được cần tới để quản
lí dự án.
Đây có phải là lúc dạy nhiều về quản lí dự án phần mềm cho sinh
viên hơn là để họ dành cả ba năm học vào việc viết mã?
______________________________________
Giáo sư John Vu, một người Mỹ gốc Việt, là một nhà khoa học nổi
tiếng nước Mỹ thuộc trong Top 10 những người sáng tạo nhất thế giới. Ông từng
là Phó Chủ tịch của Boeing. Sau khi rời Boeing, GS John Vu hiện là viện trưởng
Viện Công Nghệ Sinh Học ÐH Carnegie Mellon. Ông là dịch giả/tác giả bộ sách
Hành Trình về Phương Ðông, Ðường Mây Qua Xứ Tuyết, Ngọc Sáng Hoa Sen, Trên Ðỉnh
Tuyết Sơn,… và cuốn mới nhất 2016 là Khởi Hành.
______________________________________
—-English version—-
Project Management
Managing software projects is difficult because requirements and
technology always change and most managers do not receive any formal training
on how to manage software project. Experienced managers know how to spend time
at the beginning of the project to meet with customers to understand their
needs and their expectations. Some customers consider schedule is important
when others think quality is more important. By knowing which factor is
important, they can plan the project accordingly.
Inexperienced managers like to finish planning quickly so they
can code. That is why many of them do not succeed because they do not know
exactly what customers want.
Experienced managers know how to balance project’s critical
factors such as functionality, budget, schedule, and quality objectives. By
carefully consider each factor with the project plan; they can negotiate with
customers for changes in schedule, costs and resources. Negotiation is one of
the most important skills of project manager but rarely taught in school.
Experienced managers know how to work with customers and negotiate on what is
realistically achievable. They always planning, negotiating, balancing, asking,
and listening because they know the more time they spend in planning, the less
time they have to solve problem later.
Inexperienced managers like to code, but do not like to plan.
Experienced managers always decompose project works into smaller
tasks so they can estimate more accurately. They check their estimates with
team members, asking their opinions, consolidate data before plan the schedule.
They also use checklists and planning worksheets for these tasks that cover all
the steps needed.
Inexperienced managers do not know how to decompose or estimate,
they just guess or follow whatever schedule the customer give to them. Without
proper time and unreasonable schedule, they never complete the project on time.
There is NO perfect project. Almost all projects will have
problems, during technical reviews or test; there will be defects or other
issues that have to be reworked. Experienced managers know how to plan for
rework by set aside some extra time in the overall project plan so the project
team will have enough time to fix problems and not hurry into other activities.
Inexperienced managers do not know how to plan for rework, they
assume everything is fine until something happen, they get panic. Since they do
not know how to control the problems, the problems will control them.
Experienced managers understand the important of training. They
determine how much time team members need training to improve their skills and
prepare time and budget for them. They understand that a highly skilled team is
the key factor for success and willing to invest in their own people.
Inexperienced managers do not value training. They consider it
as a “cost” so they do not send their team for additional training. Even the
best people will need training and without it, their skills may become obsolete
as they do not keep up with technology changes. No project can succeed with
“unskilled people”.
According to latest study, only 23% of software project
completed on time, on budget with all required functionalities. 77% of software
project are late, over budget with fewer functionalities and need more time,
more money to fix problems.
In my 35 years working in the industry, I never see a project
failed because the project team can not code but I have seen so many projects
failed because project managers do not have the skill required to manage
project.
Is it about time to teach more software project management for
our students rather than having them spend three years in coding?
______________________________________