Project Management

Managing software projects is difficult because requirements and technology always change and most managers do not receive any formal training on how to manage software project. Experienced managers know how to spend time at the beginning of the project to meet with customers to understand their needs and their expectations. Some customers consider schedule is important when others think quality is more important. By knowing which factor is important, they can plan the project accordingly.

Inexperienced managers like to finish planning quickly so they can code. That is why many of them do not succeed because they do not know exactly what customers want.

Experienced managers know how to balance project's critical factors such as functionality, budget, schedule, and quality objectives. By carefully consider each factor with the project plan; they can negotiate with customers for changes in schedule, costs and resources. Negotiation is one of the most important skills of project manager but rarely taught in school. Experienced managers know how to work with customers and negotiate on what is realistically achievable. They always planning, negotiating, balancing, asking, and listening because they know the more time they spend in planning, the less time they have to solve problem later.

Inexperienced managers like to code, but do not like to plan.

Experienced managers always decompose project works into smaller tasks so they can estimate more accurately. They check their estimates with team members, asking their opinions, consolidate data before plan the schedule. They also use checklists and planning worksheets for these tasks that cover all the steps needed.

Inexperienced managers do not know how to decompose or estimate, they just guess or follow whatever schedule the customer give to them. Without proper time and unreasonable schedule, they never complete the project on time.

There is NO perfect project. Almost all projects will have problems, during technical reviews or test; there will be defects or other issues that have to be reworked. Experienced managers know how to plan for rework by set aside some extra time in the overall project plan so the project team will have enough time to fix problems and not hurry into other activities.

Inexperienced managers do not know how to plan for rework, they assume everything is fine until something happen, they get panic. Since they do not know how to control the problems, the problems will control them.

Experienced managers understand the important of training. They determine how much time team members need training to improve their skills and prepare time and budget for them. They understand that a highly skilled team is the key factor for success and willing to invest in their own people.

Inexperienced managers do not value training. They consider it as a “cost” so they do not send their team for additional training. Even the best people will need training and without it, their skills may become obsolete as they do not keep up with technology changes. No project can succeed with “unskilled people”.

According to latest study, only 23% of software project completed on time, on budget with all required functionalities. 77% of software project are late, over budget with fewer functionalities and need more time, more money to fix problems.

In my 35 years working in the industry, I never see a project failed because the project team can not code but I have seen so many projects failed because project managers do not have the skill required to manage project.

Is it about time to teach more software project management for our students rather than having them spend three years in coding?

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University