2015年5月6日 星期三

專案合約頪型

Understanding the type of contract you are working under or to use on your project is one of the more important elements of Project Management. After all, the contract sets the scope and compensation and what could be more essential than that? However, different circumstances require different types of contracts. The different types of contracts allow more or less flexibility, and allocate different amounts of risk to the contractor and owner.
There is usually a cost associated with assuming risk, so contracts where the contractor bears most of the risk typically cost more. However, in some cases the contractor may be better able to mitigate the risk than the owner so having the contractor assume that risk may be more economical. It all depends on what the goals of both parties are. So here are some of the most common types of contracts and a brief definition of the contract type.
Fixed Price (FP or FFP - "firm fixed price") also called "Lump Sum"
The simplest type of contract. The owner specifies the work and the contractor gives a price. In this case the contractor assumes almost all of the risk and as a result reaps whatever profit there is. Fixed price contracts are often used in governmental contracting as they give an easy way to compare competitive bids and to budget for the work as all the uncertainty in actual price becomes the responsibility of the contractor. On the other hand, this may not be the cheapest way to get the work done. A side effect of the fixed price contract is the Change Order which modifies the initial contract for unforeseen conditions and changes. Some contractors are highly skilled at generating change orders which can boost profits on the job. In some cases change orders can equal the size of the original contract. Litigation is often more expensive than construction, so arbitration and settlement are typical in these cases.
Time and Materials (T&M)Simple billing at pre-negotiated rates for labor and materials on a project. Some Fixed Price contracts specify this as a method for determining costs of change orders. Labor rates include a certain percentage markup for overhead. In this arrangement all risk goes to the owner.
Cost Plus Fixed Fee (CPFF or sometimes just Cost Plus)
Also fairly simple. This type of contract shifts most of the risk to the owner, but also allows the owner a high degree of flexibility. The contractor under this form of contract has profit at risk and will seek to minimize cost/duration to return a higher proportional profit margin. This type of contract is more common on projects which have high amounts of risk and uncertainty which would scare contractors into giving impossibly high bids, or where the owner just needs resources to work on a project.
The "fixed fee" is typically a percentage of estimated costs and the contractor is reimbursed for other allowable costs. The difference between CPFF and CPPC is that for fixed fee, the total amount of the fee is decided in advance based on estimates.
Cost Plus Percentage of Costs (CPPC)This is very similar to the cost plus fixed fee contract except that the contractor bears even less risk. Their fee is calculated based on a percentage of actual costs. It is generally believed that having a fee at risk is a motivating factor for contractors, so this approach is not allowed for federal government contracts (though there may be loopholes...?) It is very similar to T&M. Good work if you can get it.
Cost Plus Incentive Fee (CPIF)This type of contract uses an incentive fee for motivating better performance than you would get with percentage or fixed fee. In addition to a fee, an incentive is paid for beating a schedule or cost target. Like having the fee at risk, is intended to motivate the contractor to minimize costs and duration. Determining the appropriate incentive is one difficulty, another is that once the target has been missed, the incentive is no longer a motivating factor. Often the incentive fee is calculated as a percentage of savings and is shared by the owner and the contractor. The flip-side of incentive fees are liquidated damages.
Liquidated DamagesWhile not really a contract type, Liquidated Damages are often part of Fixed Price contracts. They are the opposite of an incentive payment and are payments made by the contractor to the owner for failing to perform to a target date. The name liquidated damages comes from the practice of determining a pre-agreed monetary (thus liquidated) cost for damages to the owner's operations. For example, late completion of a new production facility may cost the owner additional costs to keep an aging and inefficient facility running, or the presence of the contractor may impair the owner's profitable use of a facility. Rather than determining these costs at the end of the contract, the costs are negotiated at the beginning and are usually quite large. This serves to motivate the contractor and gives the contractor the cost information needed to accurately determine the best course of action. It is intended to reduce the costs of litigation. Liquidated damages may apply to the contract as a whole or to smaller elements of it. For example, on a contract where a road is being resurfaced during nighttime hours, failing to have it back in operation by a certain time each day may be cause for liquidated damages.
Fixed Price Incentive Fee (FPIF)Similar to Fixed Price but with an incentive fee. Motivation to perform is the reason.
So those are the most common contract types. Of course a contract can take any form that two parties can agree too (and which is not prohibited by law) so hybrids of these forms are possible. For the PMP Exam knowing the common types is probably the most important thing. Contract evolution beyond Time and Materials is all about how risk is allocated to the different parties and how to motivate one party or the other to act in a certain manner. For the most part you do get what you pay for... or conversely, you don't get what you don't pay for.


如何製作甘特圖
作者:夏之洋, PMP 吳冠德, PMP
Date: 2010/04/10

緣起

周一中午用餐時間時到,小吳找小蔡一起去吃飯,看到小蔡一副忙得頭昏腦脹的樣子,小吳問他在忙啥?小蔡說早上剛開完週會,部門經理被指派要對一個專案的時程做出評估,經理要他負責並且趕快交出一份提案給經理審核。小蔡正在為要如何做而傷腦筋。小吳問小蔡有何方向?小蔡反問說「你上過專案管理的課程,關於專案時程管理方面有何工具可以解我燃眉之急?」。小吳回說「你知道有個工具叫甘特圖嗎?」。
小蔡知道甘特圖,也看過別人做的範例,但是現在要由他來做,一時之間還真的不知道該如何著手。小吳補充說「要製作甘特圖,首先對專案管理知識要有基本的了解。為了早點吃中飯,我就先給你一個快速灌頂的入門解說。」

甘特圖的歷史與功用

Henry Gantt (1861–1919) 深入研究工作中各項作業的順序,主要的研究的管理內容著重於第一次世界大戰期間海軍艦艇的建設。他發明以甘特圖檢視以及甘特圖和里程碑標記綱要列出程序中所有任務的順序和工期。其影響之深遠,由管理人員在這將近一百年間,都還是持續沿用「甘特圖」圖表,足以證明「甘特圖」是一項功能強大的時程安排及分析的工具。

專案管理流程與甘特圖之關係

首先,專案管理的九大知識領域中,可以應用到甘特圖的製作的,主要有兩項:一個是範疇管理,另一個是時程管理。
範疇管理要用到的流程有
 收集需求
 定義範疇
 製作工作分解結構(WBS; Work Breakdown Structure)。
時程管理要用到的流程有
 定義活動
 活動排序與預估活動時間
 最佳化專案時程。
透過上述的步驟,才得以甘特圖發展出可行的專案時程。

甘特圖的圖形元素介紹

製作之前,可以先Google一下別人的範例。



由上面兩個案例,可以發現甘特圖圖面包含有左右二個區塊,左邊為工作清單的區域,右邊為甘特圖形的區域。

工作清單的區域,可用來呈現工作的基本資料,如:工作編號、工作名稱、工期等,這些是必要的資料,如果空間許可,可以再加上工作的開始日期、工作的結束日期、前置的工作編號、後續的工作編號、負責人等資料。

甘特圖形的區域,此區域的上方為時間軸,各工作依相關的工作次序,依序排列(由上至下、由左至右)在時間軸的下方,每個工作依該工作的工期長度繪製成等比例的横條圖。
我們常會用  來表示一個里程碑或查核點。

製作甘特圖的程序

 了解專案內容
掌握專案要交付的內容與工作的範疇,是在執行時程規劃之前的首要工作。
 建立工作清單(WBS)
根據交付內容來建立工作的清單。
 排列工作的順序及建立關係
將工作清單的工作依照工作的前後邏輯順序依次排列下來。
 建立工作時程
依照活動所要的資源以及之前的工作經驗或是專家的意見,來估計每個活動的時程。
 加入專案的查核點(Milestone)
如:專案開始、結束或驗收完畢等重大分界點的地方,通常會在合約或範疇聲明中有規定。也可以是有經驗的專案經理自行在時程中加入的檢查點。
 調整甘特圖,確認專案的時程

如何用MS Project來製作甘特圖


http://www.youtube.com/watch?v=2UhaXrmc5Uw

小蔡在聽了小吳的解說之後,總算對甘特圖的做法有了初步的了解,興沖沖的對小吳說「走!中午我請客,吃完後我趕緊來親手做一版甘特圖,有了你的加持,我相信經理一定會對我的作品印象深刻~」

甘特圖的小技巧:
1. 以上提及的專有名詞如:定義範疇、WBS、查核點(Milestone)等為專案人員的必備知識,如果不了解,可以參考中文繁體「專案管理知識體系指南」一書。
2. 甘特圖中左方的工作清單,要避免定義成太細的工作,比如:避免上午一件工作及下午一件工作。最好是一個以週或天為單位的活動而且是一個有專人負責的工作,這樣會比較容易繪出專業的甘特圖(請參考下面的二個甘特圖範例)。
3. 負責人並不一定是完成該工作的人,而是要負責安排、協調或找資源完成該活動的人。常有人將完成該活動所牽涉的有資源放在負責人的欄位中,這樣會造成該活動没有人做主或人人爭著做主的情況,使得該活動無法進行。要切記一個活動只能有一個負責人的安排。如果一個活動有一個以上的負責人,則要將該活動分成只有一個人負責的活動。 (作者註:專案的組織設計及分工也是一個大學問,我們下次再來探討。)

範例1:時間軸以天為單位(例假日不計入)
編號 活動名稱 工期 負責人 3/1 3/2 3/3 3/4 3/5 3/8 3/9 3/10 3/11 3/12
A 繪製設計圖 1週 設計師
B 輸出設計圖 2天 印刷廠
C 佈置貼圖 2天 設計師
D 佈置驗收 業主 

範例2:時間軸以週為單位(例假日不計入)
編號 活動名稱 工期 負責人 第一週(3/1) 第二週(3/6)
A 繪製設計圖 1週 設計師
B 輸出設計圖 2天 印刷廠
C 佈置貼圖 2天 設計師
D 佈置驗收 業主 

C# 列舉(Enum)類型的好處

最近才發現Enum的好處很多,不過這裡只介紹 - 使用它來讓程式閱讀性提高,分享給同好
Enum的介紹很多,這裡就不囉嗦了。


首先宣告OrderStatus為Enum Type

public enum OrderStatus:int
{
    Pending = 10, Processing = 20, Completed = 30, Canceled = 40
}

讓後就可以在程式中使用了

//容易閱讀的範例
OrderStatus status;
status = OrderStatus.Completed;
switch(status)
{
    case OrderStatus.Canceled:
        //訂單取消相關的程式...
        Console.WriteLine("Order was {0} and status code is {1}.", status, (int)status);
        break;
    case OrderStatus.Completed:
        //訂單完成相關的程式...
        Console.WriteLine("Order was {0} and status code is {1}.", status, (int)status);
        break;
    case OrderStatus.Pending:
        //訂單擱置未定相關的程式...
        Console.WriteLine("Order was {0} and status code is {1}.", status, (int)status);
        break;
    case OrderStatus.Processing:
        //訂單處理中相關的程式...
        Console.WriteLine("Order was {0} and status code is {1}.", status, (int)status);
        break;
}

以前如果没有使用Enum,case後面可能是一個數字,然後再加上註解說明這個數字代表的意思,由以上例子可以很容易發現Enum的好處。



2010年1月21日 星期四

哈佛學到的幸福祕訣

有一天在一位教授的門口看到這樣的文章,突然感覺其實幸福離我們很近,很有感觸。全文如下:

首先,
要承認自己只是一個人,必須正視自己的恐懼、悲傷及不安等的情緒,這樣才能夠去克服它們。如果不願意面對這些情緒,就有可能帶來更多的挫折及不幸。

第二,
幸福必須建立在「趣味」及「意義」相互交錯的基礎上。去找一些能讓你感到快樂,同時也具有意義的事情來做吧。

第三,
幸福是在你的一念之間,並不是來自於社會地位或銀行存款。是否感到幸福,要看你重視的是甚麼,以及你從哪種角度去解釋它。例如失敗,你可以把它看成是一種災難,也可以把它想成是一個學習的機會。

第四,
盡量單純化。我們經常花費心思,想在最短時間內做最多的事,當想做的事太多時,便很容易錯過幸福。

第五,
別忘記要身心合一。規律的運動、充足的睡眠,以及維持良好的飲食習慣,這些都可以讓身心變得更健康。

第六,
要時常心懷感謝。我們總是將生活中的一切視為理所當然,然而從人與人之間的相處到吃飯、從大自然到微笑,我們都應該學著細細品味生活中所發生的事,並找出肯定其正面價值的方法。

托爾‧班-薩哈爾

2009年8月31日 星期一

如何將Windows XP 升級到 Windows 7

Windows 7 中文版終於出來了。目前可以免費下載,而且可以使用一年。相信大家應該可以體會微軟想要挽回Vista信心的決心。

如果是Vista的使用者,只要把Windows 7 放入光碟就可以依螢幕指示更新了。

Windows XP的使用者的更新步驟多一些:

備份資料
1. 使用Windows 7 DVD上的工具(migsetup.exe)來備份自己電腦上的檔案(假設光碟機在E:)
E:\support\migwiz\migsetup.exe
2. 出現"Windows 輕鬆傳輸" 畫面。
3. 選擇"外部硬碟或USB硬碟"
4. 選擇"這是我的舊電腦",開始掃描電腦上要備份的資料
5. 掃描後以點"自訂"檢查、刪除選到而不要的資料夾/檔案或加入電腦没有選到的資料夾/檔案
6. 點選"傳輸"開始資料的備份了(可以不用輸入密碼)
7. 備份完後就可以執行7 DVD上的工具(setup.exe)升級了
E:\setup.exe

回復備份的檔案
1. 啟動新安裝的Windows 7
2. 啟動/所有程式/附屬應用程式/系統工具/"Windows 輕鬆傳輸"
3. 出現"Windows 輕鬆傳輸" 畫面。
4. 選擇"外部硬碟或USB硬碟"
5. 選擇"這是我的新電腦"
6. 選"是",選擇備份的檔案
7. 點選"傳輸"開始回復資料

備註:
1. 以上更新的怍法是以升級Windows XP 的系統資料及設定為主,建議你還是要重要的資料再備份一次
2. 如果要升級到Windows 7 (64位元), 而目前用的是32位元的Windows XP系統的話,要先用 Windows 7 (X86)的"Windows 輕鬆傳輸"(migsetup.exe)來備份資料,再用Windows 7 (64位元)重新安裝,Windows XP (X86)無法直接升級到Windows 7 (64位元)
3. 有空再來補圖片

2009年6月5日 星期五

如何增加VMWare的虛擬硬碟空間 (Windows OS)


Requirements

1. 已有使用VMWARE及Windows 7的經驗
2. 原來的Windows 7(以下稱VM7) VMWare建立的虛擬硬碟(以下稱:VMDK) 空間太小(8GB),打算擴大到12GB
3. VM7要正常關機,不可有快照(Snapshots)
4. VM7只有一個VMDK
5. 只可擴大,無法縮小。

 

Note:

斜體藍字為要自行輸入的文字。

Procedure

步驟
畫面
說明
處置
1

先將VM7整個資料夾備份

2

進入host的命令模式

3
D:\Virtual Machines\vm7\
進入VM7的資料夾
輸入
Cd d:\Virtual Machines\vm7

4
D:\Virtual Machines\vm7\
輸入
DIR
該資料夾中應該有二個副檔名為vmdk的檔案,我們的對象是比較小的那個檔案(如:Windows Vista.vmdk)

5
D:\Virtual Machines\vm7\
Vmware-vdiskmanager.exe VMWARE Virtual Disk管理員,可以擴大VMDK的容量,怛不能縮小
資料夾名稱中有空白間隔的話,該資料夾前後要加上單引號(“)
輸入
C:\”Program Files”\VMware\”VMware Server” \vmware-vdiskmanager –x 12GB “Windows Vista.vmdk”
還有以下的動作要完成,該VMDK擴大的空間才可以被使用

6
VMWare Server Console
將該VMDK加入到另一個VM成為的第二個硬碟,啟動該VM
VM中應該可以看到新加入的第二個硬碟,此時需記下該硬碟的代號 (如:E:)
進入命令模式
輸入
C:
CD C:\

7
C:\>
輸入
DISKPART
Microsoft 的工具

8
DISKPART>
輸入
LIST DISK
確定要擴大的E:硬碟在列表中

9
DISKPART>
輸入
LIST VOLUME
確定E:硬碟的硬碟代號 (如:3)

10
DISKPART>
輸入
SELECT VOLUME=3
指定要擴大的硬碟對象(如:3)

11
DISKPART>
輸入
EXTEND
擴大E:的硬碟空間

12
DISKPART>
EXIT
結束DISKPART

13
C:\>
EXIT
結束命令模式

14
VMWare Server Console
結束VM
移除該VM的第二個硬碟
啟動VM7
該硬碟應該已擴充至12GB

註:
1. 以上是最保險的方法,而且不用額外的工具
2. Windows 7 的硬碟管理員也具有硬碟空間擴大或縮小的功能,比原DISKPART方便好用

相關軟體/工具

實體空間及VMWare硬碟空間擴大 - VMware Converter 3.0
如果要變更 VMWare 現有的虛擬磁碟空間,可以利用 VMWare Server 內建的 VMWare Virtual Disk Manager,這是命令列工具程式,檔名是 vmware-vdiskmanager.exe,如果是 Windows,可以在安裝 VMWare Server 的目錄找到它。
這支工具程式的功能很多,例如建立、轉換虛擬磁碟機、以及擴充虛擬磁碟機的空間(不過這支工具並不能縮小虛擬磁碟的空間)
關於 VMWare Virtual Disk Manager 的詳細說明,建議參閱官方 VMware Server Virtual Machine Guide 6-4 小節《Using VMware Virtual Disk Manager》。

2009年5月6日 星期三

Flex, PHP, MYSQL, AMFPHP 中文亂碼問題解決

剛裝了AMFPHP, 想要好好的來寫一個Web service的應用, 結果出現了中文亂碼的問題,這裡有一個解決的方法,大家可以參考一下。要改三個地方,因為只想很快留下我的心得,所以没有很多說明,請見諒!希望對大家有用。

1. 位於Gateway.php 內的轉碼要改成如下的寫法
$gateway->setCharsetHandler("utf8_decode", "UTF-8", "UTF-8");
** 此處的UTF-8 有 '-' 號

2. 位於AMFPHP services 內自訂的資料庫連接程式加上以下三行
mysql_query("SET NAMES = utf8");
mysql_query("SET CHARACTER_SET_CLIENT = utf8");
mysql_query("SET CHARACTER_SET_RESULTS = utf8");
** 此處的utf8 没有 '-' 號

3. 所有位於AMFPHP services 內的PHP程式要用 "UTF-8" 編碼儲存

經這樣的三個步驟後,中文就不再有亂碼了。祝大家程式順利!!!