Tôi đã nhận được vài email liên quan tới việc thực hiện CMMI và việc đạt tới mức CMMI nào đó. Có nhiều “cường điệu” về CMMI và tôi đã viết hàng trăm bài báo về chúng trên website này.

Về căn bản CMMI là khuôn khổ cho cải tiến qui trình mà công ti có thể dùng để cải tiến chất lượng sản phẩm của nó. CMMI bao gồm năm mức từ 1 tới 5 với 1 là thấp nhất không có cải tiến nào và chất lượng thấp. Mức 2 là về cải tiến ở mức dự án vì dự án là cơ sở của công việc trong bất kì công ti phần mềm nào. Nếu bạn không thể cải tiến được dự án, bạn không thể cải tiến được cái gì. Mức 3 hội tụ vào chuẩn hoá các hoạt động trong công ti để đạt tới sự nhất quán trong mọi công việc. Khi mọi dự án được quản lí tương ứng, chất lượng có thể được cải tiến. Mức 4 hội tụ vào việc đo cả sản phẩm và qui trình. Mục đích của nó là quản lí mọi công việc bằng các độ đo và kiểm soát thống kê để giảm biến thiên. Đạt tới điều này nghĩa là công ti có kiểm soát toàn bộ về mọi công việc cả về chất lượng và hiệu năng. Mức 5 hội tụ vào ngăn ngừa khiếm khuyết và thay đổi qui trình và mục đích của nó là để làm tối ưu cách phần mềm được phát triển để đạt tới chất lượng cao nhất có thể.

Bước quan trọng nhất trong cải tiến là xem xét toàn thể việc phát triển phần mềm như một qui trình mà có thể được đo, được kiểm soát và được cải tiến. Công ti phải chọn mục đích rõ ràng cho cải tiến và có khả năng kiểm tra tiến bộ khi cải tiến xảy ra qua thời gian vì bạn không thể làm mọi thứ ngay một lúc. Thuật ngữ “trưởng thành” ngụ ý thời gian điều có nghĩa là sẽ phải mất vài năm để có được kết quả mong muốn. Một công ti không thể có được mức cao nhất ngay lập tức. Cũng như đứa bé phải bò trước khi đi và đi trước khi chạy, cải tiến phần mềm phải bắt đầu từ dự án tới tổ chức và rồi tới toàn thể công ti.

Không may, một số người chủ công ti quá bận rộn và không để thời gian để hiểu các nguyên lí này. Thay vì đặt mục đích cải tiến họ lẫn lộn các mức CMMI như mục đích. Tôi đã thấy công ti đặt mục đích đạt tới mức mà thậm chí không hiểu mức 3 là gì. Đặt mức CMMI như mục đích là thuần tu‎ý dốt nát và chứng tỏ thiếu hiểu biết về khuôn khổ này. Mục đích cải tiến qui trình nên được dựa trên kinh doanh của công ti như giảm chi phí, tăng lợi nhuận, cải tiến chất lượng, và đạt tới thoả mãn của khách hàng. Do đó cải tiến qui trình phải là một phần của chiến lược công ti. Nó KHÔNG phải là cái gì đó bạn làm khi bạn có thời gian. Tưởng tượng một doanh nghiệp đặt mục đích có lợi nhuận nhất nếu có thể. Điều đó có nghĩa là công ti sẽ thường xuyên mất tiền không? Cải tiến KHÔNG phải là cái gì đó bạn làm để tìm ra xem công ti ở mức CMMI nào. Tưởng tượng một doanh nghiệp chi nhiều tiền chỉ để biết liệu họ có là doanh nghiệp hay không. Nhưng điều này không có nghĩa gì cả. Cải tiến qui trình KHÔNG phải là cái gì đó để làm chỉ một lần rồi dừng lại MÀ là hoạt động liên tục không bao giờ chấm dứt. Ngay cả khi bạn đạt tới mức cao nhất như CMMI mức 5, nếu bạn dừng lại thì công ti có thể rơi trở lại mức 1 nhanh hơn bạn có thể tưởng.

Việc thiếu hiểu biết về CMMI đã tạo ra nhiều vấn đề, làm nảy sinh phí tiền, mang tiếng xấu và làm tổn hại tới cộng đồng phần mềm. Vài năm trước đây, chính phủ Trung Quốc đặt mục đích thưởng cho công ti phần mềm đạt tới mức CMMI nào đó. Chỉ trong không đầy một năm, hàng trăm công ti công bố thành tựu của họ về các mức CMMI cao. Vài công ti đã được đánh giá bởi những người đánh giá có đủ tư cách nhưng nhiều công ti đã tự tuyên bố hay được tuyên bố bởi nhà tư vấn không đủ tư cách. Phần lớn nhận được phần thưởng như khi công ti nước ngoài tiến hành đánh giá riêng của họ trước khi đầu tư vào những công ti này, kết quả là khác nhiều với những lời tuyên bố thành đạt vì đa số trong họ đều ở CMMI mức 1. Điều này đã tạo ra danh tiếng xấu cho công nghiệp phần mềm Trung Quốc về chất lượng thấp, không trung thực, lừa dối và đã ngăn cản đầu tư vào khu vực này. Thậm chí ngày nay công nghiệp phần mềm Trung Quốc vẫn bị nhiều doanh nghiệp coi là “Không đáng tin cậy” với chất lượng thấp và hiệu năng kém.

Để cải tiến, mục đích phải được gióng thẳng với nhu cầu và chiều hướng của quản lí của công ti. Người chủ công ti phải chỉ định một người quản lí cấp cao chuyên trách để duy trì việc gióng thẳng này và quản lí mọi hoạt động cải tiến. Người quản lí này phải kiểm điểm và chấp thuận kế hoạch cải tiến, nhận tình trạng về hành động cải tiến, và cung cấp hướng dẫn về công việc sắp tới. Mọi hoạt động đều phải được đo và báo cáo cho người chủ công ti. Người quản lí cải tiến phải xây dựng kế hoạch cải tiến nói rõ chiếu hướng và mục đích chính, điều hội tụ vào nhu cầu của công ti như “giảm chi phí 10% đến cuối năm”, hay tăng số bán lên 10% đến cuối năm. Kế hoạch cải tiến phải nhận diện vấn đề mà cấp quản lí muốn giải quyết và các hành động được thiết kế để làm điều đó và chuyển công ti hướng tới mục đích của nó. Với từng khu vực cải tiến chính, bản kế hoạch liệt kê mọi nhiệm vụ mà mọi người làm, kể cả cung cấp đào tạo cho nhân viên. Cải tiến phải dựa trên việc đo. Chẳng hạn, dễ nói rằng chất lượng sản phẩm đã cải tiến khi có một cách đo về chất lượng xảy ra sau. Việc đo cải tiến không phải làm cấp tập mà bất kì cách đo nào trong chi phí, chất lượng, và thời gian cũng sẽ đủ. Chẳng hạn số lỗi trong pha dự án, độ chính xác lịch biểu (khác biệt giữa ngày tới hạn và ngày chuyển giao thực tế) v.v.

Khi kế hoạch này đã được chấp thuận, người quản lí phải theo dõi nó để đảm bảo rằng tiến bộ được thực hiện. Có hai biến cố theo dõi điển hình, phiên họp hàng tuần của tổ cải tiến, và phiên họp trạng thái hàng tháng với người quản lí cấp cao. Mục đích của phiên họp tuần là đảm bảo rằng tiến bộ được thực hiện về nhiệm vụ cải tiến. Tình trạng hàng tháng là để thông tin cho người chủ công ti và người điều hành cấp cao về các hoạt động. Chỉ bằng việc đối xử với cải tiến như một dự án doanh nghiệp thực, việc cải tiến mới có thể xảy ra và làm lợi cho công ti.

—-English verrsion—-

Process Improvement

I have received several emails concerning the implementation of CMMI and the achievement of certain CMMI levels. There are many “Hypes” about CMMI and I have written hundreds of articles about them in this website. Basically CMMI is a framework for process improvement that a company could use to improve the quality of its products. The CMMI consists of five levels from 1 to 5 where 1 is the lowest with no improvement and low quality. Level 2 is about improvement at the project level because project is the basic of work in any software company. If you cannot improve the project, you cannot improve anything. Level 3 is focusing on the standardization of activities in a company to achieve consistency in all the works. When all projects are managed accordingly, quality can be improved. Level 4 is focusing on measurement of both products and process. Its goal is to manage all works by metrics and statistical control to reduce variations. Achieving this means the company has total control of all the works in both quality and performance. Level 5 is focusing on defect prevention and process changes and its goal is to optimizing the way software is developed to achieve the highest quality possible.

The most important step in improvement is to consider the entire software development as a process that can be measured, controlled and improved. Company must set clear goals for improvement and be able to check progress as improvement happens over time since you cannot do everything all at once. The term “maturity” implies time that means it will take several years to get to the desirable results. It would be impossible for a company to get to the highest level immediately. Just like a baby who must crawl before walk and walk before run, software improvement must start from project to organization and then to the entire company.

Unfortunately, some company owners are too busy and do not take time to understand these principles. Instead of set goal for improvement they confuse a CMMI levels as the goal. I have seen company sets goal to achieve level without even understand what is level 3. Setting a CMMI level as a goal is purely ignorant and demonstrates the lack of understanding of this framework. Process improvement goals should be based on the business of the company such as reduces costs, increase profits, improve quality, and achieve customer satisfaction. Therefore process improvement must be part of a company strategy. It is NOT something you do when you have time. Imagine a business set goal to be profitable if possible. That means the company will often lose money? Improvement is NOT something you do to find out what CMMI level the company is. Imagine a business spend a lot of efforts just to know if they are a business or not. These things do not make sense. Process improvement is NOT something to do only once then stop BUT a continuous activity that never end. Even when you achieve the highest level such as CMMI level 5, if you stop then the company could go back to level 1 faster than you can imagine.

The lack of understanding of the CMMI has created several issues, resulting in wasting money, bad publicity and hurt the software community. Few years ago, Chinese government set goal to award software company that achieves certain CMMI levels. In just less than a year, hundreds of company announced their achievement of high CMMI levels. Few were appraised by qualified appraisers but many were self declared or by unqualified consultants. Most received the awards but when foreign companies conducted their own appraisal before investing in these companies, the results were much different than the achievement claims as a majority of them were at CMMI level 1. This created a very bad publicity to China’s software industry about low quality, dishonest, cheating and prevented investment into this area. Even today China software industry is still considered by many business analysts as “Not to be trusted” with low quality and poor performance.

To improve, the goals must be aligned with the needs and direction of company management. Company owners must appoint a designated senior manager to maintain this alignment and manage all improvement activities. This manager must review and approve improvement plans, receive status on improvement actions, and provide guidance on upcoming work. All activities must be measured and reported to company owners. The improvement manager must develop an improvement plan that clearly states the major directions and goals that focus on the needs of the company such as “reduce costs 10% by the end of the year”, or increase sales 10% by the end of the year. The improvement plan must identify problems that management wants to solve and actions are designed to do that and move the company toward its goals. For each major improvement area, the plan lists all the tasks that people must do including provide additional trainings to employees. Improvements should be based on measures. For example, it is easier to say that product quality has improved when there is an initial and subsequent measure of quality. Improvement measures do not have to be intensive but any measure in cost, quality, and time would be sufficient. For example number of defects per project phase, schedule accuracy (The different between due date and actual delivery date) etc.

When the plan has been approved, managers must track it to ensure that progress is being made. There are two typical tracking events, a weekly session the improvement teams, and a monthly status session with senior managers. The purpose of the weekly session is to ensure that progress is being made on the improvement tasks. The monthly status is to inform company owner and senior executives on the activities. Only by treating improvement like a real business project, improvement can happen and benefit the company.