Tuần trước tôi nhận được một email từ một kĩ sư phần mềm. Anh ấy viết: “Tôi gặp khó khăn để làm cho công ti của tôi cải tiến cách chúng tôi phát triển phần mềm. Tôi đã đọc blog SEGVN của thầy về CMMI và tin rằng nó có thể giúp cho công ti của tôi. Vấn đề là làm cho mọi người bắt đầu cải tiến. Người chủ công ti nói: “Việc đó tốn kém.” Người quản lí nói: “Chúng ta phải thuê tư vấn và điều đó là tốn kém.” Người quản lí dự án nói: “Điều đó yêu cầu nhiều đào tạo và chúng tôi không có thời gian.” Nhiều người phát triển cân nhắc về nó: “Sao lại bận tâm? điều đó là phí thời gian.” Xin thầy cho tôi lời khuyên về cách thay đổi những thái độ này. Rất cám ơn thầy.”

Đáp: Chừng nào cấp quản lí của bạn chưa muốn làm điều đó, chẳng cái gì sẽ thay đổi. Để cải tiến qui trình phần mềm, bạn phải có quyết tâm của cấp quản lí và có đào tạo, bằng không nó sẽ không xảy ra. Nếu người chủ nghĩ cải tiến qui trình là tốn kém, bạn có thể thu thập dữ liệu về số dự án đáp ứng lịch biểu, chi phí và chất lượng và số dự án không đáp ứng. Bằng việc biết con số thực tế, người chủ có thể đổi ý. Nếu ông ấy biết rằng ông ấy có thể tăng lợi nhuận một cách có ý nghĩa khi công ti của ông ấy trưởng thành và phát triển tốt hơn, nhanh hơn và chi phí thấp hơn thì ông ấy có thể đồng ý với bạn.

Ngày nay các công ti sợ cải tiến qui trình bởi vì giá của đào tạo và đánh giá CMMI. Nếu ích lợi của cải tiến là lớn hơn nhiều so với chi phí của cải tiến thì sự việc sẽ thay đổi. Nếu người chủ quyết định cải tiến thì mọi người quản lí sẽ phải tuân theo. Họ có thể không thích điều đó nhưng họ sẽ không bất đồng với người chủ. Tuy nhiên, người quản lí cần hiểu CMMI cũng như có kế hoạch để quản lí hoạt động cải tiến để cho nó sẽ thành công. Đây là chỗ nhà tư vấn tốt và có hiểu biết có thể giúp để chắc mọi người quản lí có quyết tâm đầy đủ để cải tiến qui trình phần mềm của họ. Đây là yếu tố then chốt xác định thành công hay thất bại. Nhà tư vấn “không tốt lắm” sẽ vội vàng trong việc cung cấp đào tạo và tiến hành đánh giá (Đó là chỗ họ được trả nhiều tiền) nhưng nhà tư vấn tốt sẽ không làm điều đó, họ biết rằng họ phải hội tụ vào quyết tâm của cấp quản lí để làm điều đó một cách đúng đắn. Đây là tình huống:

Giả sử công ti bắt đầu cải tiến qui trình. Những người phát triển phàn nàn rằng họ phải tham gia đào tạo CMMI điều lấy đi thời gian của họ làm việc trên dự án phần mềm. Điều gì sẽ xảy ra khi một số dự án bị muộn? Điều gì sẽ xảy ra khi khách hàng không hài lòng bởi vì người phát triển không làm việc trên dự án của họ mà dành thời gian theo lớp học? Điều gì sẽ xảy ra khi người phát triển phải tuân theo cái gì đó mà họ không quen thuộc? Điều gì sẽ xảy ra mà người phát triển phải thu thập độ đo, cái gì đó họ chưa bao giờ làm trước đây? Điều gì sẽ xảy ra nếu người phát triển được bảo làm cái gì đó khác với điều họ vẫn thường làm? Điều gì sẽ xảy ra khi người phát triển tiếp tục phàn nàn? Chừng nào người chủ và mọi người quản lí còn chưa quyết tâm đầy đủ, sự việc có thể thay đổi. Công ti có thể quyết định bỏ cải tiến và coi nó như sai lầm. Trong trường hợp đó, chẳng cái gì sẽ xảy ra lần nữa. Trừ phi người chủ và mọi người quản lí quyết định duy trì quyết tâm của họ thì cải tiến mới có thể xảy ra.

Điều cơ sở nhất của cải tiến là cải tiến cách người quản lí quản lí dự án phần mềm. Thay vì đồng ý với khách hàng về lịch biểu dựa trên yêu cầu được xác định nghèo nàn, người quản lí dự án sẽ nhấn mạnh vào việc có qui trình quản lí yêu cầu để quản lí mọi thay đổi. Họ sẽ phải chắc rằng kế hoạch dự án được xác định tương ứng theo qui trình (ước lượng, thương lượng, thoả thuận) trước khi họ bắt đầu dự án. Mọi dự án sẽ phải thiết lập các vai trò, trách nhiệm được xác định rõ ràng. Bằng việc để cho mọi dự án tuân theo thực hành quản lí dự án, thay đổi sẽ bắt đầu xảy ra trong công ti.

Người phát triển sẽ bắt đầu đòi hỏi nhiều đào tạo hơn, đặc biệt trong khu vực họ cần thực hiện công việc của họ. Người quản lí bắt đầu dùng độ đo để ra quyết định thay vì phỏng đoán. Dự án sẽ có ước lượng tốt hơn về lịch biểu và ít lỗi hơn. Tất nhiên, một số người sẽ hài lòng và một số có thể không hài lòng vì họ quen làm mọi sự theo cách riêng của họ. Tuân theo qui trình chuẩn không phải là điều họ muốn. Những người không thích sẽ bỏ đi và sẽ được thay thế bởi người phát triển mới. Người phát triển mới có thể không biết điều đã xảy ra cho nên họ vẫn theo qui trình được xác định. Qua thời gian, khi hiệu năng dự án tốt dần lên, người chủ sẽ nhận ra rằng lợi nhuận của công ti ông ấy đang cải thiện và nhiều dự án đáp ứng lịch biểu, chi phí và chất lượng. Nhiều khách hàng bắt đầu tin vào cải tiến và yêu cầu nhiều kinh doanh hơn thì bạn đạt tới “thay đổi chính” trong cách công ti của bạn phát triển phần mềm.

Điều quan trọng phải nhận ra là với mọi thay đổi, cấp quản lí là yếu tố then chốt. Chẳng cái gì sẽ được hoàn thành nếu họ không tin tưởng và quyết tâm. Quyết tâm bắt đầu từ hiểu biết và hỗ trợ và nếu họ không hiểu CMMI, nó cần gì, nó cần bao lâu, họ phải quản lí hoạt động nào thì họ có thể không hỗ trợ cho nó. Không có hỗ trợ của họ, cải tiến sẽ không xảy ra.
Do đó, tôi nghĩ rằng chìa khoá thực để cải tiến qui trình thành công là quyết tâm của cấp quản lí. Dù bạn thích hay không, người phát triển không thể làm cho sự việc xảy ra được nếu không có quyết tâm từ cấp quản lí. Đây là chỗ nhà tư vấn tốt và có tri thức sẽ tới để giúp. Khó tìm được nhà tư vấn tốt và họ có thể là đắt giá, nhưng họ thực sự xứng đáng điều đó.

—-English version—-

Process Improvement

Last week I received an email from a software engineer. He wrote: “I have difficulty to get my company to improve the way we develop software. I have read your SEGVN blog on CMMI and believe that it could help my company. The problem is getting people to start the improvement. The company owner said: “It is expensive”. The manager said: “We have to hire consultant and it is expensive”. The project manager said: ” It requires a lot of trainings and we do not have time”. Many developers consider it: “Why bother? it is a waste of time”. Please give me your advice on how to change these attitudes. Thank you very much.

Answer: Unless your management want to do it, nothing will change. To improve software process, you must have management commitment and trainings, else it will not happen. If the owner think process improvement is expensive, you can collect data on the numbers of project that meet schedule, costs and quality and the numbers of project that do not. By knowing the actual number, the owner may change his mind. If he know that he can increase his profit significantly when his company matures and develop better, faster and lower costs then he may agree with you.

Today companies are afraid of process improvement because of the price of CMMI training and appraisal. If the benefit of improvement is much higher than the cost of improvement then thing will change. If the owner decides to improve then all managers will have to follow. They may not like it but they will not disagree with the owner. However, managers need to understand the CMMI as well as having a plan to manage improvement activities so it will be successful. This is where a good and knowledgeable consultant can help to make sure all managers are fully committed to improve their software process. This is the key factor to determine success or failure. A “not-so-good” consultant will hurry in to provide training and conduct the appraisal (That is where they get paid a lot of money) but a good consultant will not do that, they know that they must focus on the management commitment to do it right. Here is the situation:

Assume the company starts the process improvement. Developers complains that they have to take the CMMI training that take away their time to work on software projects. What will happen when some projects are late? What will happen when customers are not happy because developers are not working on their projects but spend time in class? What will happen when developers have to follow something that they are not familiar with? What will happen that developers have to collect metrics, something that they never do before? What will happen if developers are told to do something which is different from what they used to? What will happen when developers continue to complain? Unless the owner and all managers are fully committed, thing can change. The company may decide to quit the improvement and consider it a mistake. In that case, nothing will ever happen again. Unless the owner and all managers decide to stay on with their commitment then improvement can happen.

The most basic of improvement is to improve the way managers manage software project. Instead of agree with the customers on schedule based on poorly defined requirements. Project managers will insist on having requirement management process to manage all changes. They will make sure that the project plan is defined according to a process (Estimates, negotiate, agreement) before they would start the project. Every project will have certain set up with roles, responsibilities clearly defined. By having all projects following a project management practices, a change will begin to happen in the company.

The developers will begin to ask for more trainings, especially in areas that they need to perform their work. Managers begin to use metrics to make decisions instead of guessing. Projects will get better estimates on schedules and less defects. Of course, some people would be happy and some may not because they used to do their own things. Following a standard process is not what they want. Those who do not like will leave and will be replaced by new developers. New developers may not know what has happened so they will follow the defined process. Overtime, as projects’ performance are getting better, the owner will realize that his company profits is improving as many projects are meeting schedules, costs and quality. Many customers begin to believe in the improvement and request more businesses then you achieve a “major change” in the way your company develop software.

It is important to recognize that for every changes, management is the key factor. Nothing will be accomplished if they do not believe and commit. Commitment starts with understanding and support and if they do not understand the CMMI, what it takes, how long it need, what activities they must manage then they may not support it. Without their support, improvement will not happen.

Therefore, I think that the real key to successful process improvement is management commitment. Whether you like it or not, developers cannot make thing happen without that commitment from management. This is where a good and knowledgeable consultant would come in to help. It is difficult to find a good consultant and they may be expensive, but they are really worth it.