Real Improvement
After posting the article “Process Improvement with CMMI”. I received several emails inquiring about “Real improvement” and how do they know that their companies are really improved? So following are my view on “Real improvement”.
A real improvement can be measured by many things such as increase productivity and quality, better customers’ satisfaction, less defects or reworks, and higher profits and market share. If your company is having “Real improvement”, You will notice an increase productivity, which is the number of work-product output in size for a given numbers of worker and project duration. For example before any improvement, a team of ten people can write 10,000 lines of code a month. After improvement, the same team can write 15,000 lines of code a month so your productivity has increased 50%. A real improvement is not something abstract but can be a simple thing such as less defects in software products. You can reduce numbers of defect by spending more time during requirements phase by working closely with users to understand their needs; Document requirements using use case scenarios and verify with users for more accurate requirements; Build prototypes to clarify design and NOT hurry to jump to code. The more reviews you have with the team, the lesser defects you get. In the end, you achieve better product quality.
Since many projects are often missing milestones and schedules, you can improve it by have better Work Breakdown Structure in breaking requirements into smaller detailed tasks. Small enough so that you can plan and track them on a weekly basis. I always recommend students to break down larger requirements into smaller tasks that they can complete in about 32 hours (One man-week). If anything happen that cause a delay, it is easier to correct a small task than a larger tasks. You can also improve the schedule by having better estimates (Efforts, time, costs) and better matching of skills to the work. Do not just assign any developer to any task randomly. At the beginning of every project, you must know the skills and experiences of each developer so you can assign them their tasks accordingly. It is also very important to continue providing trainings to keep their skills up-to-date. To maintain a high quality software (Maintainability) you should breakdown the design into smaller modules for easy of fixing and maintenance. You must make sure these modules have lots of comment and good documentation, especially document any changes to match the code.
There are many things that you can achieve “Real improvement”. The best is to improve the skills of developers to follow a well-defined process for every projects. The number one issue with current software development is developers are hurrying into coding and do not spend enough time in requirements and design phases. Another issue is many project managers are not well trained. Many get promoted to that position with no formal training. In my opinion, the best investment a company could do is to invest in their own employees by having additional trainings on a regular basis. Today, most software companies are competing in two areas. One for the business (Develop products and services) and one for the talent required to implement them. A company’s success in its business is determined by its success in the talent area. Having the most skilled employees, will bring higher quality products and services. Instead of focus on something “abstract” such as paying to have consultant give you a “certificate” saying that your company is “very good”, you can focus on something “Simple” such as your own employees. Because there is a critical shortage of skilled people all over the world at the same time technology is changing quickly, you must focus on developing your own employees. As the knowledge required to build products and provide services increases with new technology, the acquiring and retention of experienced employees becomes critical to improving market share and profits. A good company owner should know that their ability to compete in the industry is directly related to their ability to attract, develop, motivate, organize and retain highly skilled people.
Having skilled employees is more than just hiring and keeping them. You must develop them by ensure that they have the best training to build new skills that the market needs. Today most universities have similar training programs so most graduates have similar skills. It is up to the company training that make the different. A good training program can develop an average graduate into a highly skilled employees. In this highly competitive market, many companies are rushing to do so many different things, jumping from one “Abstract” to another “Complex” ideas without knowing that real improvement is something simple and common sense.
Sources
- Blogs of Prof. John Vu, Carnegie Mellon University