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.
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.
Hope it helps.