1. 程式人生 > >我與項目的化學反應 ——讀《程序員修煉之道》有感

我與項目的化學反應 ——讀《程序員修煉之道》有感

理論 例如 亞歷山大 搜集 發生 實驗 是我 消費 不同

正如書中所說,我曾經產生過自己的項目會失敗的感覺,因為自己很迷茫不知道自己該如何去完成自己的團隊項目,那種迷茫感在一開始的時候一直圍繞著我,直到組長開始逐步把項目分塊,一步步細分後,並且要求每個人需要做什麽的時候,我心中的那塊陰霾瞬間消失了,今天在書中巧合的遇到了自己的情況,於是自己十分好奇的想看看自己到底發生了什麽?

“完美,不是在沒有什麽需要添加,而是在沒有什麽需要去掉時達到的”,這句話說得很直白,意思讓我很是贊同,但也惹人深思,一樣東西排放在你的面前時,你可以說出這樣就可以不需要什麽的時候,它自然是不完美的,因為在潛意識裏對於已有的並不太滿意,但如果你很滿意,一切都是那麽的貼切,不多不少,不需要把刪掉的時候,你潛意識裏已經將已有東西視作了完美的東西,自然世上沒有完美的東西,都是用戶的心理感覺,因為用戶的滿意便是我們最大的完美。一個項目開始,就需要進行“需求”的搜集,意思就是需求就在那裏,我們需要去找到它們,但是需求很少存在表面上,通常,它們深深地埋藏在層層假定、誤解和政治手段的下面,這就好比你詢問你身邊的人你現在需要什麽的時候,大多數人會回答他在做事情的需求,而真正有用的卻無法看到。所以需要我們的挖掘,作者總結了什麽是需求,就是對需要完成的某件事情的陳述,例如只有指定人員才能查看員工檔案,這個究竟是不是需求,比如是“只有員工的上級和人事部門才可以查看員工的檔案”才是需求,還是“只有得到授權的用戶可以訪問員工檔案”是需求,這兩種有一絲不同的陳述帶來的是巨大不同的影響,這決定了一個開發者的設計與實現。所以我們需要找出用戶為何要做特定事情的原因,而不是他們目前做這種事情的方式。這個我就想到了支付寶,他們找到了掏錢的原因,而不是掏錢的動作,掏錢的原因自然是消費,所以支付寶實現了消費的時候可以直接用手機支付,如果他們找到的是用戶掏錢的動作,那麽支付寶可能就不會存在,現在恐怕人們上街的時候還要帶著大量的現金。同樣理解用戶就需要與用戶一同工作,像用戶一樣思考。作為職業人員,需要建立需求文檔,把需求寫下來,並發布每個人都可以用作討論基礎的文檔,由於聽眾的範圍相當廣泛,所以要註重什麽樣程度才是合適的,不能太過具體,需要保持抽象,在涉及需求的地方,最簡單的能夠準確地反映商業需要的陳述是最好的。有一句話作者總結的很精辟:需求不是架構,需求不是設計,也不是用戶界面,需求是需要。

很多項目的失敗都歸咎於項目範圍的增大,也稱為特性膨脹。我身邊就有這個事情,軟工的第一次方向確定的時候有一組同學不僅想做出上學期有的組的的軟件,並且優化合並,即綜合於一體,開始的時候感覺這個項目很有前途,但是冷靜一想,時間與人手方面並不充裕,實現一個這麽範圍大的項目,最後會不會變成一個四不像。這個問題同樣出現在了我們的身上,在遊戲的制作中突然想到我們要不要加上一個即時聊天的模塊,想法是很好,但是今天看到了這個問題,自己一想確實,我們的目標是做遊戲,首要的工作是把遊戲做出來,像聊天系統到最後有時間在開始,成為錦上添花,而不是成為影響進度的絆腳石。

一開始的時候便會有一些特定含義的術語,所以在系統中應該註意不能夠隨意使用,也就是我們需要創建並維護項目詞匯表,避免到時候兩個人用了不同的詞卻表達一個意思,然後出現分歧的錯誤,用同一名稱指稱不同事物,這樣的項目很難取得成功。

“解不開的結”一個從小便聽過的故事,出現的時候難免會有一絲懷念,當時的自己是多麽憧憬成為亞歷山大一般的人,如今我同樣需要他的教導,學會在項目工程設計中解決那些看起來非常困難的“謎題”。原本自己以為“當局者迷,旁觀者清”,但作者卻說需要盒子外和內一起,才能解開謎題,其關鍵在於確定加給的各種約束,並確定自己確實擁有的自由度,因為在其中將找到解決方案,這也是有些謎題為何有效的原因,最終需要的是我們找到“盒子”,即確定約束。這個讓我想到了第一次的個人作業,起初的時候是完全不知道如何下手,但在細細的讀老師的要求,腦海中慢慢的產生了哈希表的方法,有一個約束的條件是真的可以提高思考的效率。

每個人都害怕空白的紙頁,我也是如此。作為一個開發者,在整個職業生涯中都在做同樣的事情,一直在實驗各種東西,看哪些是可行,哪些不可行,期間一直在積累經驗與智慧,所以面對空白時,一個有效的方法是開始構建原型,如果出錯了,可以及時掉頭,如果對了就可以繼續進行,這樣可以避免開頭時的的不知所措,也能為團隊節省可觀的時間。在真正的工作的時候要避免成為形式方法的奴隸,而是作為形式開發方法的一種工具,這個由於自己對於開發經驗的欠缺,對此沒有一些很明確的體會,不過我記住了,作為一個註重實效的程序員要批判地看待方法學,並從各種方法學中提取精華,融合成每個月都在變得更好的一套工作習慣。

不僅在個人項目還是團隊工作的日子裏,我學到了很多,結合了書裏理論部分,我逐漸明白了軟件開發中身處於一個團隊裏或者自身需要註意每一個要點,自己仿佛看到了註重實效在向我招手,但也看到了我們之間的距離與路上的坎坷。

我與項目的化學反應 ——讀《程序員修煉之道》有感