Managing software projects
Last week, I had a meeting with several students from the Master of Business Administration (MBA) program. They asked me why so many software projects failed and whether a business manager graduate from the MBA program could manage software projects. Before answering them, I asked about their opinions. They believe that since they are trained in management, they could manage anything and that is what they are taught in business schools. I do NOT agree with that view so following are my discussion on software project management:
There are many reasons for software project failure but the most obvious reason is project managers do not have the experiences or the skills to manage the projects. Many project managers promise customers anything just to please them without really knows how long it will take and how much efforts are required. They accept an “unrealistic schedules” from customers then force project teams to follow. Of course, this is a formula for failure because if it needs six months but customer only give you three months then you can not complete it by working harder. Many managers do not plan but jump quickly into code to prove to their senior managers that they are “very active”. Without careful planning, they will miss many important things and then have to “redo” them. This lack of planning costs a lot of money for the company as the project spends more than it makes.
My question is: Does the MBA program teach software estimates and software planning?
Because many project managers do not know how to estimate schedule, they “schedule backward” from the given dateline and hope things will be fine. For example project starts in January and customers give them six months then the plan will look like this: June: Deliver software, May: Test software; March and April: Coding; February: Design and January: Build team. They just add the date in a plan without knowing anything about how to estimate the time required for each phase. Sometime they use “optimistic” technique from academic business text book such as cost estimate using the formula: Cost = Size x complexity/productivity. This is correct in theory but CAN NOT applies in “Real project” because it has three unknown factors: Size, Complexity, and Productivity. In classrooms, professors give students those factors to calculate cost but in reality, especially at the beginning of project, it is difficult to estimate size or complexity of the code. In any event, all initial cost estimates are potential risk, without carefully reviewed and adjustment, the company may end up underestimate the costs and lose money. This happens a lot in software industry today.
My question is: Does the MBA program teach software scheduling and cost estimates adjustment?
Many project managers do NOT know how to obtain requirements from customers. They believe what customers tell them is “Good enough”. Without verification or follow requirement analysis method to identify what customers really need, they will work with the given requirements. Of course, customers always change their minds and often add more functionality to their requirements. These will cause more changes in the project and in turn, causes more reworks, more times, and eventually delay the project. A software project is NOT just programming but come up with a solution for a business problem. To understand software requirements, managers must understand business requirements, system requirements, hardware requirements because software requirements operate on these three levels.
My question is: Does the MBA program teach requirements development, user issues, hardware issues, requirements verification and validation? Does it modeling techniques using software tools?
Many project managers are not trained in estimate resources such as the number of people needed, their required skills, so they just get anybody available to work on the project. When project has wrong person with limited skill, productivity will suffer. Many managers do not know how to hire and retaining key people, they do not know about all the skills needed to develop software but think all software people are programmers. Without technical knowledge in detail architect, design, hardware and system interfaces, they may assign the wrong people to the task that they do not qualify and the result could be a disaster. Without a profile of people with certain expertise needed to perform work the project will fail.
Another common mistake that many managers do not allow sufficient time required for team members to learn about the project before they start. Learning about project's requirements takes time and should be considered into the project plans. Many companies are having several projects requiring similar skills so they shift their key people from one project to another based on the priority among the projects. This “moving people around” management technique wastes precious productivity because it takes team members time to get acquainted with the project they are being assigned to. This practice also results in one project having to stop work temporary until the team member comes back to the project. This is particularly critical when a key skill is involved and it slowdown project schedule and contributes to employee burnout as people have to work too many things for extended periods.
Many managers are so busy and they do not track what their people do each day. They do not know about their activities so they can leverage their skills for productivity. They assign people to work on tasks according to a schedule; as long as they meet the schedule then there is no problem. However, there are members who could finish a 5 days task in 2 days and other who could not complete a 3 day task for at least 10 days due to their skills and the assignment. Without review activities on a daily or weekly basis, managers do not know who needs help and who do not until problem happens. The understanding of work distribution, of assignment of tasks and the knowledge about skills are critical in every software project.
My question is: Does the MBA program teach software development process, skill training, skill identification, and works assignment?
What will happen when something bad occurs in software project? Without proper training, many managers become angry, instead of leading and supporting the project team, they discourage them by demand that they must do certain things or accuse them for not working harder. This will add pressures to the volatile working environment and reduce productivity or team members, which in turn will delay project furthermore. When they see that it is near the delivery date but their team is still coding, they order them to skip a few things such as reviews or tests to save time. In the absence of testing, software will have many defects then the company has to correct them. This will require more times, more efforts, more money and more delays. Of course, customers are NOT happy and may not want to do business with the company in the future. When problems happen, many managers force the team to work more hours for extended periods to fix mistakes of unrealistic schedule so many team members quit before the project is completed.
My question is: Does the MBA program teach how to manage technical people? How to coordinate teamwork? How to nurture the team rather than abuse them?
What can we do to avoid these mistakes?
The obvious answer is: Provide better training to software managers but is training alone be sufficient enough? Is it possible for someone who does NOT have software knowledge to manage software project? Is it possible for an MBA graduated business person to manage software project? Can a business trained manager manage everything?
I believe good software managers MUST have both technical and business experiences. They must work in software development for many years so they understand all the activities within a project. They must receive training in estimation of time; efforts and planning schedules and actually perform these works in real projects to improve their skills. They must understand that planning never stop but constantly updated as things always change. A good project manager always learns how to negotiate with customers and never make mistake of mandate the “unrealistic schedule date”. Because of these requirements, a GOOD software manager is very hard to find and that is why many global software companies are willing to pay top salary for them.
Sources
- Blogs of Prof. John Vu, Carnegie Mellon University