一.給電腦科系學生的建議
1.在畢業前學會寫作:試著多寫日誌或網誌
2.在畢業前學會C語言:C語言比起其他「現代」語言更貼近機器
3.在畢業前學會個體經濟學:讓你對商業的運作模式有些概念
4.不要因為非CS(Computer Science)的課無聊就放棄
5.修習要寫大量程式的課程
6.不管你做什麼,去找個好的暑期實習工作:你應該找的是與你想從事的行業相關的經歷
二.逐吋的競賽
1.想要創造一份有用的軟體,你必須爭取每一個修正、每一個功能,還有每個小小的妥協,努力幫助多一個人跨越學習曲線。沒有任何捷徑。只有一吋一吋地爭取才會取得勝利
三.選擇=頭痛
1.你提供越多的選項,人們就越難選擇
四.證據式時程安排
1.把時程細分:你必須把時程拆得很細,拆成能用小時來計算的任務,最多不能超過16個小時。這會迫使你真正弄清楚該做些什麼
2.追蹤已使用時間:保留工時記錄。要記錄每項任務花了多久的時間。事後就可以回去查看,每件事實際工作時間和估計值的關係。只要記錄每個任務所用的時間即可
3.模擬未來:不要直接把估計值累加起來算出上市日期,而是畫出一張圖表,表達在任何給定日期出貨的機率。此時要把時數轉換成天數,意思是必須考慮到每位開發人員的工作安排、休假和公定假日等。另外,每一輪模擬都要去看最後才完成的開發者,因為那個人完成的日期,也就是整個團隊完成的時間
4.積極管理你的專案
5.你必須在原本的時程中加入緩衝時間,以因應新功能的想法、競爭、整合、除錯時間、可用性測試、beta測試等
6.只有實際做事的程式員才能估計時程:任何由管理階層寫下時程,再交給程式員執行的系統,註定都會失敗
7.在找到錯誤時立即修正,而且修正的時間要算在原本的任務上
8.不要讓經理糾纏開發者讓估計時間縮短
五.讓錯的程式看得出錯
1.要讓對得東西在螢幕上緊靠在一起
2.保持簡短的函數名稱
3.變數宣告的地方離使用的位置越進越好
4.不要用巨集來建立個人專屬的程式語言
5.不要使用goto
6.不要讓右括弧離左括弧超過一個畫面
六.開創軟體事業
1.如果無法解釋以下的事情,就不要創立新事業:
(1)它能消除什麼痛苦?
(2)能替哪些人解決?
(3)為什麼你的產品能消除這個痛苦?
(4)客戶怎麼會付錢解除這個問題?
2.不要自己一個人創業
3.一開始不要期望太高
七.飆出高音
1.在落後的軟體專案裡增加人力,只會讓它更落後
2.無論使用多少個平庸程式員工作多久,做出來的東西永遠比不上一個優秀的程式員
八.巧婦難為無米之炊
1.你最重要、最關鍵的東西所依靠的工具,必須比想像中再低一個抽象層次。例如你想寫個3D遊戲,你不會使用外頭找得到的3D程式庫,而是自己寫一個出來,因為這對你來說太重要了
九.實施beta測試的提示
1.開放式的beta測試行不通,因為你會得到太多的測試資料,而無從處理
2.要讓beta測試者把意見送回來,你必須讓他們表明會提供意見,如填寫申請書,並勾選了「我同意把意見和問題報告立即送回」的選項
3.不要認為能在八到十週之內,能完成一輪完整的beta測試循環
4.不要妄想發布新測試版本的頻率,能夠高於每兩週一次
5.在一輪完整的beta測試中,發布的測試版本不可以少於四次
6.若在beta測試的過程中增加新功能,即使該功能多麼的微不足道,整個過程還是得重來
7.把所有beta測試者分為四組,有新測試版時,以輪替方式發布給其中一組,如此一來,每個重要的階段都能有新的beta測試者參與
8.不要把技術beta測試與行銷beta測試混為一談
十.邁向卓越客戶服務的八個步驟
1.每件事都用兩種方法修正:其中有兩種含意:
(1)技術支援人員必須能直接接觸開發團隊。這表示你不能把這件事外包出去
(2)執行到最後,會把所有常見和簡單的問題都解決掉,剩下的都是些罕見的怪問題
2.建議吹掉灰塵:不要請客戶去檢查某個設定,而是告訴他們改變那個設定,然後再改回來,「只是為了確保軟體會把設定存起來」
3.讓客戶成為狂熱支持者
4.承擔指責
5.背誦緩頰短句:用來平緩客戶的憤怒
6.練習表演木偶戲:假裝自己是一具木偶,你的工作是要弄清楚:「我該讓這具木偶說些什麼,才能讓這個人成為快樂的客戶呢」
7.貪婪讓你一無所獲:訂定90天內不滿意的退款保證
8.為克服人員規劃職業前景
十一.選擇交貨日期
1.設定出貨日期的三種作法:
(1)頻繁地發行小改版:最適合客戶數量不多的小團體專案
(2)每12至18個越發行一版:適合用在需要規模較大的開發團隊,客戶人數也夠多的時候
(3)每三至五年發行一版:龐大軟體系統及平台的典型作法
2.列出所有功能,並依照優先順序排列
3.每次時程延誤時,就把不重要的功能砍掉,以確保出貨日期不變
沒有留言:
張貼留言