Hỏi: Thầy có thể cho lời khuyên về làm sao để thành công trong cải tiến qui trình phần mềm?

Đáp: Bước đầu tiên trong cải tiến qui trình hiệu quả là thay đổi hành vi của người quản lí và người phát triển. Là người kĩ sư phần mềm, bạn có thể hỗ trợ cho thay đổi nhưng thay đổi thực sự chỉ xảy ra khi người quản lí chấp nhận thái độ mới đối với cải tiến.

Vấn đề là làm sao để người phát triển phần mềm làm những điều không liên quan trực tiếp tới việc chuyển giao sản phẩm phần mềm? Đây là vấn đề khó bởi nhiều lí do. Thứ nhất, người phát triển bao giờ cũng bận rộn. Thứ hai, họ có thể không hiểu điều bạn muốn họ làm hay tại sao phải làm. Và thứ ba, họ có thể không tin rằng điều bạn gợi ý sẽ giúp họ trong việc của họ.

Do đó, điều quan trọng nhất là làm cho cấp lãnh đạo hành xử khác đi. Đây là lí do tại sao chúng ta cần giải thích cho cấp lãnh đạo về rủi ro của việc không cải tiến để cho họ có thể nhận ra sự khẩn thiết. Nếu họ sẵn lòng sống với các hậu quả của quá trình hỗn độn và rủi ro, chẳng cái gì sẽ xảy ra.

Đây là vài gợi ý mà bạn có thể thấy có ích:

  1. Phải chắc rằng cấp quản lí thừa nhận việc cải tiến qui trình là trách nhiệm của họ. Nếu người phát triển không tham gia vào hay hỗ trợ tích cực cho việc cải tiến qui trình, nó sẽ không xảy ra.
  2. Có được thoả thuận từ cấp quản lí về vài hành động mấu chốt cần thực hiện trước nhất. Tôi gợi ý mỗi lúc làm một thay đổi nhỏ thôi. Đừng cố làm cái gì đó mơ hồ và vô nghĩa như “Lấy CMMI mức 5”. Để tạo ra tiến bộ, bạn cần tập trung vào cái gì đó có ích, thực tế, như giám định phần mềm để loại bỏ lỗi. Hành động này là đo được nếu đầu tiên bạn đặt ra tuyến sở sở. Bạn phải thu thập một số lỗi của việc đưa ra trước đó và số lỗi được tìm thấy trong giám định sản phẩm.
  3. Bạn cần chắc rằng mọi người đều biết trách nhiệm của mình. Một ý hay là viết tất cả những điều đó ra.
  4. Thiết lập kế hoạch vận hành, giữ nó đơn giản và có các điểm kiểm (trạng thái tuần) và nhận diện tài nguyên rõ ràng.
  5. Biểu thị những điều tham gia vào việc làm cho một thay đổi được hoàn thành. Bạn có thể làm điều này qua báo cáo tiến độ cho cấp quản lí và phải chắc đưa vào lịch biểu và cam kết tài nguyên. Những điều này sẽ giúp mọi người nhận ra cái gì được tham dự vào và nó chiếm bao lâu.
  6. Làm vì thành công. Đều đặn nhận diện những thành tựu thực, tuyên dương những người có trách nhiệm và công bố thành tựu của họ. Tuy nhiên bạn phải khiêm tốn và vẫn ở ngoài quá trình thừa nhận này, việc của bạn là điều phối cải tiến và làm cho nó xảy ra. Điều này sẽ tạo ra nhiệt tình trong những người phát triển và biểu lộ tiến bộ. Một khi đà này diễn ra, khó mà dừng được nó và bạn sẽ đi vững chắc trên con đường của mình.
  7. Chìa khoá cho cải tiến qui trình là làm nhiều thay đổi qui trình nhỏ và đơn giản. Ích lợi chính từ phần lớn những thay đổi tới từ vài hành động. Đừng làm thay đổi lớn, bạn sẽ không thành công đâu. Nhớ câu hỏi “Làm sao ăn được voi?” Đáp: “Bằng nhiều miếng nhỏ”.
  8. Nhớ cung cấp đủ thông tin để cho mọi người biết điều cần làm và khi nào làm. Thử điều đó trong dự án nhỏ, lấy phản hồi từ người trong dự án, người dùng qui trình cải tiến rồi tinh lọc nó dựa trên các kết quả. Bạn có thể phải huấn luyện mọi người và chắc chắn phải giúp họ được bắt đầu bởi vì cải tiến là quá trình học hỏi. Bạn sẽ học nhiều từ việc thực hiện hơn là từ lập kế hoạch hay nói về nó. Học từ thực tế chứ đừng từ ý kiến, cho nên trước khi làm cho người khác thay đổi, bạn phải tự thay đổi mình trước.
  9. Nếu cấp quản lí không phân việc cho người phát triển để làm việc với những nhiệm vụ cải tiến, hãy đi tới quản lí cấp cao và nêu rõ ràng rằng nếu thiếu sự tham dự của người phát triển, việc cải tiến qui trình là phí thời gian và tiền bạc. Với những điều kiện này, hoặc quản lí cấp cao phải tiến bước và giúp đỡ, hoặc bạn sẽ phải tìm việc ở đâu đó khác.
  10. Nếu quản lí cấp cao từ chối giải quyết vấn đề, họ không thực sự được thuyết phục về nhu cầu cải tiến. Bất kể điều họ nói, bạn cần dừng lại hay ngắt nỗ lực cho tới khi bạn thu được sự chú ý của họ. Đừng phí thời gian của bạn. Ý tưởng là để làm cho người ta thành công nhanh chóng, với dữ liệu cải tiến vững chắc thì phần còn lại sẽ vào cuộc. Hãy nhớ, thay đổi cần thời gian và bạn phải kiên nhẫn.

English version

Question:

Can you advise on how to succeed in software process improvement?

Answer:

The first step in effective process improvement is changing the behavior of the managers and developers. As software engineer, you can support the change but real change only happens when manager adopt a new attitude toward improvement.

The question is how to get software developers to do things that do not directly relate to the delivery of software products? This is a difficult problem for many reasons. First, developers are always busy. Second, they may not understand what you want them to do or why. And third, they may not believe that what you suggest will help them do their jobs.

Therefore, the most important thing is to get management to behave differently. This is why we need to explain to the management the risks of not improving so they can realize the urgency. If they are willing to live with the consequences of a chaotic process and the risks, then nothing will change.

Here are some suggestions that you may find useful:

  1. Make sure that management recognizes that process improvement is their responsibility. If the developers do not participate in or actively support process improvement, it will not happen.
  2. Get an agreement from management on a few critical actions to accomplish first. I suggest one small change at a time. Do not try to do something as vague and meaningless as “Getting to CMMI level 5”. To make progress, you need to focus on something useful, practical, such as software inspections to remove defects. This action is measurable if you set a baseline first. You must collect number of post-released defects and number of defects found during product inspection.
  3. You need to make sure that everybody knows their responsibilities. It would be a good idea to get these in writing.
  4. Establish an operational plan, keep it simple and with checkpoints (Weekly status) and resources identify clearly.
  5. Demonstrate what is involved in getting just one change accomplished. You can do this with progress report to management and make sure to include a schedule and resources commitments. These will help everybody realizes what is involved and how long does it take
  6. Make a big deal out of success. Periodically identify real achievements, credit the people responsible by name, and publicize their accomplishment. However, you must be humble and stay out of the recognition process, your job is to coordinate improvement and make it happens. This will build enthusiasm among developers and demonstrate progress. Once the momentum is going, it is hard to stop and you will be well on your way.
  7. The key to process improvement is making a lot of small and simple process changes. The major benefits from most changes come from a few actions. Do not make big change, you will not be successful. Remember the question “How does one eat an elephant?” Answer: “By several small pieces”.
  8. Remember to provide just enough information so people know what to do and when. Try it in small project, get some feedback from project people who use the improve process then refine it based on results. You probably have to train people and will certainly have to help them get started because improvement is a learning process. You will learn a great deal more from implementing changes than from planning or talking about it. Learn from practice not opinion, so before having others to change, you must change yourself first.
  9. If management does not assign developer to work on improvement tasks, go to the senior management and make it clear that without the participating of developers, process improvement is a waste of time and money. Under these conditions, either senior management must step in and helps, or you will have to look for a job elsewhere.
  10. If senior management refuses to handle the problem, they are not truly convinced of the need for improvement. Regardless of what they say, you need to stop or discontinue the effort until you have their attention. Do not waste your time. The idea is to get one quick success, with solid improvement data then the rest will fall into places. Remember, change takes time  and you must have patience.