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 most important among all the project management factors, like time, cost budget, …

 

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;
  2. Organize the stake holder 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, the project manager should ensure the team is working towards under the correct scope at any project stage. I think anyone has experience on more than 3 Engineers software development team 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>

Monday, November 2, 2009

Find and sort acronyms for Microsoft Word document automatically.

We guys work on Information Technology. I always have too many acronyms to deal with when I create a document.  There are many solutions of adding acronym to a word document, such as add as a Bookmark or Hyperlink. But most of them require the author to go through the document and mark all the acronyms manually, which I don’t like.

This script searches through your word document and find all Words >= 3 (configurable) alphabets in Uppercase, then remove duplicate entries and sort by alphabetical order.  This is exactly what I need.  If  you want to try, click Tools->macros->Visual Basic Editor, copy-paste the code below and execute it. There you go!

 

Sub ExtractAcronymsToANewDocument()

Dim oDoc_Source As Document
Dim oDoc_Target As Document
Dim strListSep  As String
Dim strAcronym  As String
Dim oTable      As Table
Dim oRange      As Range

Dim n As Long
Dim strAllFound As String
'use to keep track of founded. Find the list separator from international settings
'In some countries it is comma, in other semicolon

strListSep = Application.International(wdListSeparator)
strAllFound = "#"

Set oDoc_Source = ActiveDocument
'Create new document for acronyms
Set oDoc_Target = Documents.Add

With oDoc_Target
'Make sure document is empty
.Range = ""
'Insert a table with room for acronym and definition
Set oTable = .Tables.Add(Range:=.Range, NumRows:=2, NumColumns:=3)
    With oTable
    'Format the table a bit
    'Insert headings
    .Cell(1, 1).Range.Text = "Acronym"
    .Cell(1, 2).Range.Text = "Definition"
    .Cell(1, 3).Range.Text = "Page"
    'Set row as heading row
    .Rows(1).HeadingFormat = True
    .Rows(1).Range.Font.Bold = True
    .PreferredWidthType = wdPreferredWidthPercent
    .Columns(1).PreferredWidth = 20
    .Columns(2).PreferredWidth = 70
    .Columns(3).PreferredWidth = 10
    End With
End With

With oDoc_Source
Set oRange = .Range
n = 1 'used to count below

    With oRange.Find
    .Text = "<[A-Z]{3" & strListSep & "}>"
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = True
    .MatchWildcards = True
    Do While .Execute
    'Continue while found
    strAcronym = oRange
    'Insert in target doc
    'If strAcronym is already in strAllFound, do not add again
    If InStr(1, strAllFound, "#" & strAcronym & "#") = 0 Then
        'Add new row in table from second acronym
        If n > 1 Then oTable.Rows.Add
        'Was not found before
        strAllFound = strAllFound & strAcronym & "#"
        'Insert in column 1 in oTable
        'Compensate for heading row
        With oTable
        .Cell(n + 1, 1).Range.Text = strAcronym
        'Insert page number in column 3
        .Cell(n + 1, 3).Range.Text = oRange.Information(wdActiveEndPageNumber)
        End With
        n = n + 1
        End If
        'If acronym
    Loop
    End With
End With

'Sort the acronyms alphabetically
With Selection
    .Sort ExcludeHeader:=True, FieldNumber:="Column 1", SortFieldType _
    :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending
    .HomeKey (wdStory)
End With

'Clean up
Set oDoc_Source = Nothing
Set oDoc_Target = Nothing
Set oTable = Nothing
MsgBox "Finished extracting " & n - 1 & " acronymn(s) to a new document."

End Sub

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.