Showing posts with label softwareProcess. Show all posts
Showing posts with label softwareProcess. Show all posts

Tuesday, December 1, 2009

The most important factor to make a software project success

We often talk about resource, budget, timing, quality when talking about project management. I treat project scope management as the most important factor among all the project management factors, more important than factors like schedule, cost, budget, …Since I saw too many times what project team delivered is not what customer wants.

 

Project scope management is essentially acting as the bridge between the project team and outside world, especially customer. The project manager has the responsibility to make sure the project team is doing something expected by business team, or customer. No budget, resource wasted on activities not align with customer request. There are maybe some project sponsored by internal authorities, but still there should be scope statement from the internal authority.

 

The project manager has the responsibility to communicate/control the sub-module scope among the project team.  There are 3 good practices for doing this:

  1. Document the scope in structured, better itemized statement list;
  2. Organize all stake holders to present the scope in understandable chart;
  3. Publish the scope statements and charts to a place easily accessible and editable by relevant stakeholders.

In summary, project manager should ensure project team members are working towards the correct scope at any project stage. I think anyone has experience on software development team with more than 3 software Engineers knows the difficulty to actually achieve this goal.

Sunday, November 15, 2009

Project Charter Example

I always wonder how to specify project charter clearly and efficiently (no excessive document), until I see the example below.

1. Project Title and Description

What is the project?

Customer Satisfaction Fix-It Project: Over the last few months the quality assurance department has discovered many of our customers' orders for our ABC equipment have taken the customer ten times longer to place through our computer network than our competitors' networks. The purpose of this project is to investigate the reasons for the problem and propose a solution. The solution will be authorized as a subsequent project. Quality Control has detailed records of their findings that can be used to speed up this project.

2. Project Manager Assigned and Authority Level

Who is given authority to lead the project, and can he/she determine, manage and approve changes to budget, schedule, staffing, etc.?


Alexis Sherman shall be the project manager for this project and have authority to select team members and determine the final project budget.

3. Business Need

Why is the project being done?

This project is being completed in order to prevent a further breakdown of customer satisfaction.

4. Project Justification

Business case-On what financial or other basis can we justify doing this project?


We expect that improved customer satisfaction will increase revenue to the company in the first year by at least $200,000 due to a decrease in service calls. As a side benefit, we hope that the project will generate ideas on improving customer
satisfaction while fixing this problem.

5. Resource Pre-assigned

How many or what resources will be provided?

Morgan and Danny are already dedicated to the project because of their expertise in computer networks of this type. Other resources will be determined by the project manager.

6. Stake-Holders

Who will affect, or be affected by the project (influence the project), as known to date?

Stakeholders include Connor representing Quality Control, Ruth in Customer Service and Mary in Marketing. These resources are available to assist the project as needed by the project manager.

7. Stake-holder Requirements as Known

Requirements related to both project and product scope.

Attached to this document are the detailed specifications for the existing system, the requirements that the existing system was designed to meet. It is expected that this project will not change how the system affects the existing requirements. The project must include utilizing the data available from quality control.

5. Product Description/Deliverables

What specific product deliverables are wanted and what will be the end result of the project.

  1. A report that outlines what can be changed, how much each change will cost and expected decrease in the time it takes to place and order resulting from each change. Few words are necessary in the report, but it must be created electronically and be agreed to by the heads of quality control, customer service and marketing in addition to the project team.
  2. A list of the interactions with our customers necessary to complete the changes. A work breakdown structure, due within two weeks, that outlines the plan for accomplishing the project, followed one week later by a list of risks in completing the project.
6. Constraints and Assumptions

A constraint is any limiting factor and an assumption is something taken to be true, but which may not be true.

Complete the project no later than <date>. Spend no more than <certain amount money>. We have assumed that Kerry will be available to assist the project and that testing can be done on the seller’s computer.

Project Sponsor Approval:

<Signature>

Thursday, October 29, 2009

Breakdown of Initiating-Planning-Executing-Controlling-Closing process

I got this list of possible project tasks.  personally I think it is a good practice to go through this list, and create marks on the project current status along the way.

Initiating

  • Select Project Manager.
  • Determine company culture and existing systems.
  • Collect processes, procedures and historical information.
  • Divide large projects into phases.
  • Identify stake-holders.
  • Document business need.
  • Determine project objectives.
  • Document assumptions and constraints.
  • Develop project charter.
  • Develop preliminary project scope statement.
initiatingProcess

I am working in technical domain, or more specifically,  embedded system development. I think it is vital important to verify architecture correctness while creating the project charter also. The best way is to do some prototype work, though maybe too luxury. To the bear minimum, the project manager should create some diagram and discuss with relevant stakeholders,  otherwise is just waste the organizations and money and time, and market opportunity.

 

Planning

  • Determine how you will do planning – part of management plans.
  • Create project scope statement.
  • Determine team.
  • Create WBS and WBS dictionary.
  • Create activity list.
  • Create network diagram.
  • Estimate resource requirements.
  • Estimate time and cost.
  • Determine critical path.
  • Develop Schedule.
  • Developer budget.
  • Determine quality standards, processes and metrics.
  • Determine roles and responsibilities.
  • Determine communications requirements.
  • Risk identification, qualitative and quantitative risk analysis and response planning.
  • (items above this lime will need Iterations ).
  • Determine what to purchase.
  • Prepare procurement documents.
  • Finalize the “how to execute and control” aspects of all management plans.
  • Create process improvement plan.
  • Develop final PM plan and performance measurement baselines.
  • Gain formal approval.
  • Hold kick-off meeting.
planningProcess My personal feeling is better to use 1/10 criteria for planning, that is, to estimate at the granularity level of 1/10. For example,  setup a monthly schedule for a half year to one year project, or create biweekly schedule for a one quarter project, or create a WBS with 10 to 20 tasks. I have seen task break down with several hundred tasks, eventually it becomes a game to figure out which activity goes to which task, and really a brain test for entire team.

Executing

  • Acquire final team.
  • Execute the PM plan.
  • Complete product scope.
  • Recommend changes and corrective actions.
  • Send and receive information.
  • Implement approved changes, defect repair, preventive and corrective actions.
  • Continuous improvement.
  • Follow processes.
  • Team building.
  • Give recognition and rewards.
  • Hold progress meetings.
  • Use work authorization system.
  • Request seller responses.
  • Select Sellers.
executingProcess

In my opinion, there are two key points for executing a project:
1. People management: understand what your colleagues can do and try to balance the workload. I think making presentation and/or have frequent chit-chat are good ways to bring the gap. At least I feel more clear of one concept after I can make others understand what I am talking about. 
2. Build an adaptive process: Nobody can plan everything accurately at the beginning. I like the practice to check the status at the end of each week (or biweekly), and figure out how to make up next week. I think it is called iteration process or spiral model officially.

Monitoring & Controlling

  • Measure against the performance measurement baselines.
  • Measure according to the management plans.
  • Determine variances and if they warrant corrective action or a change.
  • Scope verification.
  • Configuration management.
  • Recommend changes, defect repair, preventive and corrective actions.
  • Integrated change control.
  • Approve changes, defect repair, preventive and corrective actions.
  • Risk audits.
  • Manage reserve.
  • Use issue logs.
  • Facilitate conflict resolution.
  • Measure team member performance.
  • Report on performance.
  • Create forecasts.
  • Administer contracts.
monitoringProcess For Software/Firmware Development, There are organizations that project manager is busy working on collecting all the matrix, quality team building nice diagram/chart subsequently, and top management evaluating the organization / individual performance based on these charts. In the end, Engineers have to cook data so that the final evaluation will be good for them. I believe the role for project manager is to ensure the accuracy of monitoring. BTW: I also think cooking data is hard for Small and Medium Organization because SMEs always face customer directly.

Closing

  • Develop closure procedures.
  • Complete contract closure.
  • Confirm work is done to requirement.
  • Gain formal acceptance of the product.
  • Final performance reporting.
  • Index and archive records.
  • Update, lessons learned and knowledge base.
  • Hand off completed product.
  • Release resources.

closingProcess Not many project managers are lucky enough to lead the project until its official ending. However, I think a responsible project manager for an organization should collect historical information for this project, and put into a way easy to be utilized by the next project manager. Especially for a software development organization, attributes like Engineer productivity, defect density, percentage of each stage, and domain expertise are important for the sustainability of the organization.

Tuesday, October 27, 2009

Overlap of Processes along the project timeline

This diagram depicts the relationship of processes well, I like it.

ProjectOverlapPhases

Projectized versus functional organization

An organization can be either functional oriented or project oriented.

Organization Structure Projectized Matrix Functional
Domain Expertise Poor Medium Good
Project Coordination Good Medium Poor

In practical, most of organizations are matrix based, i.e, team is organized by functional area, and team members work for projects most of the time under project manager.

The pros and cons of a project organization is listed below, although the truth is matrix organization can be a nightmare for Engineers.

Pros Cons
Highly visible project objectives Extra administration required
Improved project manager control over resources More than one boss for project teams
More support from functional organizations More complex to monitor and control
Better horizontal and vertical dissemination of information than functional Functional managers may have different priorities than project managers
Team members maintain a “home” Higher potential for conflict
Better coordination Need extensive policies and procedures
Maximum utilization of scarce resources Tougher problems with resource allocation

Monday, October 26, 2009

The life cycle of Process, Project, Program, Product

Process: a series of actions bringing about a result. Process is repeatable within an organization.

Project: a project is a temporary endeavor undertaken to create a unique product or service.  The project life cycle refers to a logical sequence of activities to accomplish the projects goals or objectives. 

Program: a program is a group of projects managed in a coordinated way to obtain benefits not available from managing them individually. Sometimes a program management and a project management can be treated as synonyms. A program management can also be treated as superset of subset of project management depend on situations. 

Product: The life cycle lasts from the conception of a new product to its withdrawal.

Sunday, October 25, 2009

Light-weight CMMi deployment

I was talking to one of my ex-supervisor in Motorola on his experience of deploying CMMi to another organization out of Motorola. There are some interesting findings about customizing CMMi for different organization cultures.  As Motorola has officially announced closing down of its Singapore Software Center, now we can comment a bit on their CMMi process, and what other organizations can learn from it.

Motorola is famous for the CMMI level-5 deployment to its various software centers across the world. These software centers are such process oriented organizations that low to mid management level take it for granted that the software requirement, design, implementation and testing document must be in place, and process audit must be in place. There are plenty of diagrams, analysis reports generated that becomes over-complicated, for good and bad.

In early 1990s, Software was such a special technical skill that only a small group of elite people can do it well, so Motorola setup various software centers around the world, with software process deployment initiative. Both the organization model and the process proved to be quite effective initially. Later as the software complexity grows, software process also grows to ensure the quality and efficiency of the code, which is excellent. However, these centers are far away from the end customers. The marketing team cannot transfer their pressure to software developers effectively in this organization structure.  The mid-level management turns to process focus, instead of customer focus, because that is the instruction implied by the evaluation process (for sure top management still emphasize they are marketing oriented).  All software projects are internal, which are quite easy going. When the profit margin of software business goes down and the company eco-environment got worse, eventually the company cannot afford this over-complicated business model and close down the center. 

This does not mean it is not possible to marry the good merit of process-oriented approach to innovation-oriented approach. One compromise way we found is to simply the CMMi process and deploy it implicitly. More specifically, requirement and software configuration management are the two most important KPAs a software organization needs to pay attention to, next comes implementation and test define. i.e, to implement what you are required to implement, and test what you are required to test. By telling your customer about implement customer requirement, and control your software team so that the entire team works towards the same goal, instead of working against each other (not personally, but because either Architect or process has flaw, I have seen a lot examples that people work against each other.),  you have the CMMI corner stone lay out.

The process effort should not exceed 5% of the total project effort. If there is no full time process team, then do 2 things:

1. have one internet-savvy young engineer to update and maintain an intranet to publish requirements (it is important to put requirements, designs, … into a common repository). 

2. List the key process flow in one Page (A4), make sure the font size is readable, let the team has free access to it, and have an experienced Engineer to audit regularly (biweekly or monthly).  A white paper (such as Software Development Manual) more than 2 pages is only useful for process team, nobody in the project team will read it. So DON’T waste your time.

In summary, the ultimate goal for an organization is not to reach certain CMMi level (though it is a side output, necessary for many human performance evaluation), but to make the final output predictable and quantifiable. Process is like lubricating oil, you won’t feel it if your machine running smoothly, and it is actually performing its duty implicitly. The most important thing: Software Process must come from real-life experience.  There are endless documents out there, people won’t convinced if you are only repeating a book story.

Saturday, October 24, 2009

Common Errors for a project manager

If you have ever done be a part of a project team, do you experience any kind of scenarios below? If so, I am with you. However, I do not think these are all project manager’s fault.

  1. Focusing on asking for percent complete
  2. Holding "go around the room" type status meetings
  3. Spending host of your time babysitting team members by constantly checking on them
  4. Asking to cut lo percent off the estimate
  5. Not attempting to obtain finalized requirements
  6. Not getting real resource commitments
  7. Not having a reward system
  8. Not focusing on quality
  9. Not having a control system
  10. Not having management plans
  11. Not measuring against the project management plan, or even creating metrics
  12. Not spending time finding and eliminating root causes of problems or deviations
  13. Not implementing corrective action to keep the project in line with the project management plan
  14. Not reevaluating the effectiveness of the project management plan
  15. Not reevaluating the accuracy or completeness of schedule, cost, scope
    Ignoring resource managers' need to have their people do their own departments' work
  16. Not realizing the project can affect the reputation of team members
  17. Not realizing the project manager has some human resource responsibilities to the project team, such as project job descriptions and adding letters of recommendation to team members' human resource files
  18. Blaming unrealistic schedules on management instead of realizing they are the project manager's responsibility

Friday, October 23, 2009

My understanding of Project Management -ism

  1. Historical records are exceedingly valuable (like gold) to the project manager, the team, the performing organization and even the customer.
  2. Project cost and schedule cannot be finalized without completing risk management.
  3. A project manager must work within the existing systems and
    culture of a company, which is referred as enterprise environmental factors and they are inputs to many processes.
  4. A project manager spends all his time dealing with problems is not a great project manager. A good project manager plans the project to address the problems and to prevent the problems coming.
  5. Percent complete is an almost meaningless number. [JS] Unfortunately there are many cases that upper management only wants a number.
  6. A great project manager does not hold meetings where you go around the room asking all attendees to report. Such meetings are generally, but not always, a waste of time. [JS] It is a channel for team members to clarify their concerns of the project.
  7. The project management plan is approved by all parties, is realistic and everyone believes it can be achieved. [JS] I think it is a good practice to make the project management plan, or at least store it at a shared place.
  8. If at all possible, all the work/assignment and all the stakeholders are identified before the project begins. Stakeholders are involved in the project and may help identify and manage risks. [JS] A project success is all project team member’s responsibility, not only the project manager.
  9. The project manager has some human resource responsibilities of which you might not be aware. [JS] Whether you have the right person and they are keen to the project, and how team members are rewarded for their work. However, a project management is always limited by the organization.

Thursday, October 22, 2009

Comments on “Things every project manager should do”

I read through a statement that “you do not understand project management if you do not understand five or more of the following items”. The list makes great sense to me, so I list here and add my own comments in italic.

  1. A step-by-step process for managing projects and why each step is necessary.   I will only be confident in iterative model.
  2. Project manager, sponsor and team roles.
  3. Historical information from previous projects.
  4. Lessons learned from previous projects.
  5. Creation of lessons learned on your projects.
  6. Project charter. Everyone must understand the same charter and work towards the same goal. This is not so strait forward during the project execution.
  7. What is a work breakdown structure, how to create it, and that it is not a list in a bar chart. My understanding is this means the breakdown is not a list on paper, the team member should understand the meaning.  A good practice is to break down into 5 to 8 sub tasks in terms of time and size. For example, a quarter duration should be break down into biweekly tasks.
  8. How to manually create a network diagram Don’t understand this.  How it is related to project management. Does it talking about human network.
  9. Critical path-how to find it and what benefits it provides the project manager. Key points
  10. Three-point estimating: To estimate a value (cost, duration, etc.), assume a=the best-case estimate m=the most likely estimate b=the worst case estimate, then the weighted average E=(a+4m+b)/6, and standard deviation=(b-a)/6
  11. Monte Carlo analysis: refers specifically to a technique in which the project team leader or project team computes and/or quantifies the complete and total project cost and/or project schedule a number of times through the use of input values that have been selected at random through the careful utilization of probability distributions or potential costs and/or potential durations. I think it is an iterative way to define project cost or schedule.
  12. Earned value. refers to the actual methodology of management in which the project management team embarks in the process of integrating the scope, the schedule, and the resources that are determined to be needed in the process of making an objective measurement of the progress that has taken place to date on a project, and also on how successful the performance has been to date. Performance is measured by assessing the budgeted cost of all work that has been performed to date (also known as earned value, or EV) and comparing it to the actual cost of work that had been performed to date (which is also known as the actual cost). Progress is determined by comparing the earned value to date and measuring it against the planned or expected value. Earned value management is essential to maintaining a proper budget.
  13. Schedule compression, crashing and fast tracking
  14. An unrealistic schedule is the project manager's fault. Mostly because the project scope, dependency, team capability not well understood.
  15. Creating a realistic and approved project management plan that you would be willing to be held accountable to achieving.  At least for firmware project, a realistic plan is only possible if the domain and scope are understood. I don’t dare to say fully here, as in many cases, it is poorly understood.
  16. Measuring and implementing corrective action.
  17. Risk management process and that risk management is not just using a checklist.
  18. Expected monetary value. Agree
  19. Calculating budget reserves and their relationship to risk management.
  20. Controlling the project to the project management plan. 

Wednesday, October 21, 2009

Do you know enough about project management?

I am reading PMP Preparation book recently. It has one statement:  You do not know enough if you experience two or more of the following problems on projects: .

  1. Large cost or schedule overruns ;
  2. Unrealistic schedules;
  3. Excessive changes to the scope or schedule;
  4. Poor communications and increased conflict;
  5. Running out of time near the end of the project;
  6. Unsatisfactory quality;
  7. Low morale;
  8. People on the team are unsure of what needs to be done;
  9. Excessive rework and overtime;
  10. Too many project meetings;

I totally agree that these are problems for project management. However, I do not think the project team can totally eliminate these problems even the project manager and team members have excellent technical and process knowledge of the project.

A project team is not isolated in vacuum environment. The project execution is restricted by many other factors. For example:

  1. A giant MNC may have corporate wide pay-cut and promotion freeze, which might cause low morale of the project team, and the project manager can do nothing.
  2. Excessive changes to the scope and schedule maybe because sales team boast some excessive functionality, which cannot be handled by Engineering team in time.
  3. Too many project meetings maybe because the organization has a complex matrix structure, which is beyond the control of this team.

Actually for each items listed by PMP book above, there could be some reason beyond the project manager’s control. Anyway, I think what a project manager can do is to try his best to mitigate these problems, although it is really hard to eliminate them all.

Saturday, October 10, 2009

Light-weight CMMi deployment

I was talking to one of my ex-supervisor in Motorola on his experience of deploying CMMi to another organization out of Motorola. There are some interesting findings about customizing CMMi for different organization cultures.  As Motorola has officially announced closing down of its Singapore Software Center, now we can comment a bit on their CMMi process, and what other organizations can learn from it.

Motorola is famous for the CMMI level-5 deployment to its various software centers across the world. These software centers are such process oriented organizations that low to mid management level take it for granted that the software requirement, design, implementation and testing document must be in place, and process audit must be in place. There are plenty of diagrams, analysis reports generated that becomes over-complicated, for good and bad.

In early 1990s, Software was such a special technical skill that only a small group of elite people can do it well, so Motorola setup various software centers around the world, with software process deployment initiative. Both the organization model and the process proved to be quite effective initially. Later as the software complexity grows, software process also grows to ensure the quality and efficiency of the code, which is excellent. However, these centers are far away from the end customers. The marketing team cannot transfer their pressure to software developers effectively in this organization structure.  The mid-level management turns to process focus, instead of customer focus, because that is the instruction implied by the evaluation process (for sure top management still emphasize they are marketing oriented).  All software projects are internal, which are quite easy going. When the profit margin of software business goes down and the company eco-environment got worse, eventually the company cannot afford this over-complicated business model and close down the center. 

This does not mean it is not possible to marry the good merit of process-oriented approach to innovation-oriented approach. One compromise way we found is to simply the CMMi process and deploy it implicitly. More specifically, requirement and software configuration management are the two most important KPAs a software organization needs to pay attention to, next comes implementation and test define. i.e, to implement what you are required to implement, and test what you are required to test. By telling your customer about implement customer requirement, and control your software team so that the entire team works towards the same goal, instead of working against each other (not personally, but because either Architect or process has flaw, I have seen a lot examples that people work against each other.),  you have the CMMI corner stone lay out.

The process effort should not exceed 5% of the total project effort. If there is no full time process team, then do 2 things:

1. have one internet-savvy young engineer to update and maintain an intranet to publish requirements (it is important to put requirements, designs, … into a common repository). 

2. List the key process flow in one Page (A4), make sure the font size is readable, let the team has free access to it, and have an experienced Engineer to audit regularly (biweekly or monthly).  A white paper (such as Software Development Manual) more than 2 pages is only useful for process team, nobody in the project team will read it. So DON’T waste your time.

In summary, the ultimate goal for an organization is not to reach certain CMMi level (though it is a side output, necessary for many human performance evaluation), but to make the final output predictable and quantifiable. Process is like lubricating oil, you won’t feel it if your machine running smoothly, and it is actually performing its duty implicitly. The most important thing: Software Process must come from real-life experience.  There are endless documents out there, people won’t convinced if you are only repeating a book story.