Starting a new project
A new manager wrote to me: “I was a team leader who just gets promoted to manage a new project. I want to be a successful project manager and start the project in the best way possible. What skills from team leader can I use in this new job and what else do I need to improve?”
Answer: There is a difference between a team leader and a project manager. Team leader is responsible for the technical aspect of a project by provide leadership to a small team (Three to seven people) to implement some functions of the project. Team leader motivates team members to work toward the project success. Project manager is responsible for the entire project, both technical AND management aspects. Project manager controls and manages several teams within the project to accomplish the project's goals. As a new project manager, you need additional training and experiences to be successful. If your company does not provide training then you need to take training on your own because software project manager is NOT something that you can learn on the job or by reading a book.
To start a software project, you need to know who your customers and users are. Customers are people who pay for the project; users are people who use your product. Customers are concerned with the schedule and cost of the project; users are concerned with the features and quality of the product. As project manager, you need to talk with both customers and users to find out exactly what they expect from the project and what their needs are. If there are several customers and users than you need to talk to all of them since they may have differing views and expectations and you need to know all of their viewpoints.
From these viewpoints, you must organize them into a priority list of thing to do because you cannot do everything at once. You need to verify this priority list with both your manager AND customers to make sure that they agree with it. Once approved, the priority list will be the preliminary requirements for your project. You must use the Work Breakdown Structure (WBS) to break each requirement into several functions and each function is broken down into several smaller tasks. You must estimate the time needed to implement each task according to the priority and dependency. By adding the time to complete these tasks together, you come up with a “tentative schedule” for the project. You need to determine whether your tentative schedule matches customer's schedule expectations. If not, you will need to discuss with your manager and customers to come up with a reasonable schedule. From the list of priority tasks, you need to estimate the number of people that you need to implement them. There are designer, developers, testers, support personnel such as configuration manager, quality assurance etc. You also need to make decisions on which method and tools to use for your project.
By reaching this step, you must know: Who the customers and users are; what the project goals are; which tasks are priority and which are not; how long it may take; and how many people you need to do the project; what method and tools that you need for the project. All of these items must be documented in a preliminary project plan.
The common mistake that technical people often make is focusing on the detailed functions right away. That is NOT the best way to start a software project. It is important for you to understand the entire project context and the reason why the customers need this project. In other words, the best way to start the project is to understand where you are supposed to finish. What is this project supposed to accomplish that will benefit the customers and your company. That means you should take the project plan and review with your customers to come up with an agreements about schedule, resources, tools, methods as well as any risks associated with the project. The more the customers know about your plan, the better confident they will have on you and it is easier to negotiate with them on project resources and schedule (i.e., how many people you need to implement the project; how long it will take; how much it will cost etc.). Most customers often place unrealistic schedule on the project because they have no idea about schedule so they just guess. It is important for you to show them your work breakdown, your estimates and your plan of the project because during the discussion, you may have to reducing the scope or increasing the time for completion. Without a good project plan that have clearly identify the amount of time needed to complete each task and the numbers of people needed to do the tasks, you cannot convince the customers to support you.
Project negotiation is a critical skill that project managers must do. To get the project starting in the best possible way, you will need to negotiate the schedule with customers to come up with something reasonable, else the project will fail. It is possible to change the scope of the project (reducing functionality) or change schedule (more time or less time); or adding or reducing number of people etc. You may not get what you want and the customers may not get what they want also but having a discussion to come up with some agreements before starting the project will help both sides avoid a lot of problems later.
Project negotiation is the time when you can really developing a clear understanding of the project's objectives and customers' expectations. By discussion and negotiation, you will be able to aware of any potential risks or problems you might encounter later too. Risk management is a fundamental aspect of a good project management. By knowing the risks, you can avoid them, change them, or lessen their impact on your project. This is the time to let customers know about project risks so together you and customers can come up with a risk management plan.
After having an agreement with customers, you can modify your project plan accordingly. Then and only then you will determine who should be on your project team whether you have people that have worked with you previously or you may have to hire additional new people. You need to discuss with the project team about your understanding of the project’s objectives, communicate with them on what you have been asked to do, and discuss with them about any training needs to get the project start in the best way possible. This is the time where you share with the team about your vision for the project, the goals of the project and how do you monitor the progress of the project. The team must fully understands and commit to support you. This team meeting is the critical foundation of moving on to the next step, where the team will begin to work on the detail the project.
- Blogs of Prof. John Vu, Carnegie Mellon University