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.
Câu hỏi: Ý kiến của thầy về lập trình AGILE (mau lẹ) là gì? Tôi
có một tổ muốn thực hiện nó, nhưng họ gần như là theo cách tiếp cận “viết mã
& cho chạy”. Thầy có biết tôi có thể tìm được ở đâu trong ngành công nghiệp
này ví dụ tốt về việc dùng nó thành công không, cũng như kiểu sản phẩm nào là
phù hợp nhất với nó?
Trả lời: AGILE là phương pháp luận thiết kế phần lớn dành cho
nhóm ứng dụng Web, những người lập trình trong JAVA nhưng đã trở thành luồng
chính về sau do sự bùng nổ của Internet và Blog. Đây là ý kiến cá nhân của tôi
về lập trình AGILE:
Phương pháp này là tuyệt hảo cho dự án nhỏ từ hai tới tám người
làm việc cùng nhau và thường xuyên trao đổi với nhau. Khía cạnh then chốt của lập
trình AGILE là từng người làm nhiều điều từ giao tiếp với khách hàng, thu nhận
yêu cầu, làm kiến trúc cho tới thiết kế, viết mã, và đưa ra, điều thực sự là kĩ
năng của Kĩ sư phần mềm chứ KHÔNG PHẢI là người lập trình máy tính (người chỉ tập
trung chủ yếu vào lập trình). Phương pháp AGILE có thể không có tác dụng tốt
trong môi trường yêu cầu dự án lớn hay nỗ lực tích hợp lớn, điển hình có sự
tham gia của hàng trăm người làm việc cùng nhau.
Vì hội tụ của phương pháp AGILE là vào các dự án nhỏ và trong
khuôn khổ thời gian ngắn, phương pháp này yêu cầu có những cá nhân tài năng,
người sẵn lòng và có khả năng thuộc vào loại những nhà tổng quát, có thể làm việc
xuyên qua miền rộng các bước của vòng đời truyền thống. AGILE yêu cầu các cá
nhân đa kĩ năng, người có động cơ cá nhân, biết nghiên cứu, có tính phân tích,
sáng tạo, và có các kĩ năng liên con người rất cao để hiểu vấn đề của khách
hàng. Họ cũng phải là những thành viên tổ rất có kỉ luật và là những kĩ sư phần
mềm có kĩ năng để đưa ra sản phẩm trong khoảng thời gian được phép. (Đây là điều
Kĩ nghệ phần mềm tất cả là gì, hiểu toàn bộ qui trình phát triển và có khả năng
làm việc trong tổ. Tuy nhiên, nhiều lớp học về AGILE đã không dạy điều này mà
chỉ tập trung vào khía cạnh lập trình, điều tôi cho là sai lầm).
Tôi đã nghe nói về những trường hợp người quản lí ra lệnh cho mọi
người dùng phương pháp AGILE trong các dự án nghiệp vụ phức tạp. Vấn để tổng
quát của đổi qui mô và dịch chuyển bị bỏ lại cho người phần mềm làm theo bất kì
cái gì họ thấy khớp. Đó không phải là tình huống tốt bất kể việc phương pháp luận
tốt thế nào. Thiếu hiểu biết về dùng phương pháp nào áp dụng vào môi trường nào
thực sự tạo cho phương pháp này thành cái tên xấu.
Cũng vậy, như với các phương pháp luận trong quá khứ, nếu phương
pháp AGILE được quảng cáo đủ để bắt đầu thuyết phục các nhà quản lí rằng nó có
thể làm cho các dự án được hoàn thành nhanh hơn và rẻ hơn thì nhóm doanh nghiệp
tư vấn về AGILE tất yếu sẽ nhảy xổ vào hỗ trợ cho mối quan tâm đó. Điều này có
lẽ là không tránh khỏi nhưng nó quả có tác động tới việc tạo ra cái búa lớn hơn
– ngành công nghiệp con tư vấn về AGILE – cái sẽ đi tìm những cái đinh sinh lời
về tài chính để đóng.
Tôi tin rằng AGILE là một trong những kĩ thuật tốt được tìm ra,
nó được thiết kế để làm việc trong môi trường rất nhỏ, không then chốt (trang
Web, trạm web) nơi mọi sự phải xảy ra rất nhanh chóng và nếu mọi thứ không làm
việc thì bạn bắt đầu lại toàn bộ vì viết mã là nhanh và rẻ. Tuy nhiên, tôi nghĩ
chúng ta nên rất cẩn thận về AGILE trong các dự án lớn nơi kỉ luật là quan trọng
và tài liệu là then chốt (Hãy hình dung hệ thống tài chính và kế toán mà không
có tài liệu). Sau khi kiểm điểm kĩ càng nhiều dự án, lớn và nhỏ trong công nghiệp,
tôi không được thuyết phục rằng AGILE có miền kinh nghiệm được cần tới để làm
cho việc sử dụng nó có hiệu quả trong mọi môi trường. Nói riêng tôi không nghĩ
nó có thể được dùng trong các dự án lớn và trong môi trường nghiệp vụ điển
hình.
______________________________________
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—-
Question: What is your opinion of AGILE programming? I have a
team that want to do it, but they are most likely doing “code & go”
approach. Do you know of anywhere in industry where I might find a good example
of it’s successful use, as well as what type of products is it best suited for?
Answer: AGILE is a methodology design mostly for Web
applications group who program in JAVA but has become mainstream lately due to
the explosion of the internet and Blog. This is my personal opinion on AGILE
programming:
The method is excellent for small project of two to eight people
who work together and communicate with each others often. The key aspect of
AGILE programming is each person does many things from customer interfaces,
obtain requirements, architect to design, code, test, and release which is
really a skill of Software Engineer and NOT Computer programmers (Who only
focus mostly on programming). AGILE method may not work well in environment
which require large project or large integration efforts which typically
involve hundred of people working together.
Since the focus of AGILE method is on small projects and short
time frame, this method requires talented individuals who are willing and able
to be the kinds of generalists that can work across a broad range of
traditional life cycle steps. AGILE requires multi-skilled individuals who are
self-motivating, investigative, analytical, creative, and possess very strong
inter-personal skills in order to understand their customer’s problems. They
also must be very disciplined team players and skilled software engineers in
order to release a product within the time allowed. (This is what Software
Engineering is all about, understand the entire development process and be able
to work in team. However, many AGILE class did not teach this but focus only on
the programming aspect which I think is a mistake).
I’ve already heard of cases where manager orders people to use
AGILE method in large complex business projects. The overall problem of scaling
and translation is left to the software people to do whatever they see fit.
That’s not a good situation regardless of how good the methodology is. The lack
of understanding on which method to use in which environment to apply is really
give this method a bad name.
Also, as with other past methodologies, if AGILE method receive
enough publicity to start convincing managers that it can get projects complete
faster and cheaper then a group of AGILE consulting business will inevitably
spring up to support that interest. This is perhaps unavoidable but it does
have the effect of creating a large hammer -the AGILE consulting
sub-industry-that will be looking for financially lucrative nails to hit.
I believe that AGILE is one of the good techniques to come
along, it is designed to work in a very small, not critical environment (Web
page, web site) where thing must happen very quick and if things do not work
you start all over again since coding is fast and cheap. However, I think we
should be very careful about AGILE in in large projects where discipline is
important and documentation are critical (Imagine finance and accounting
systems with no documentation). After carefully reviewing many projects, large
and small in the industry, I’m not convinced that AGILE has the range of
experience needed to make its use effective in all environments. In particular
I don’t think it’s can be used in large projects and in typical business
environments.