標籤:http width art io 問題 代碼
1 選哪一種醫生?
作為一個軟體工程師, 你覺得自己表現如何? 有沒有這樣的體會:
看書的時候覺得“技止此耳”,開發項目的時候才覺得實際情況和書上講的都有一些出入,一些重要的細節書上沒有提。我們很多人是邊看Asp.net的書, 邊開發Asp.net 的項目,這相當於一邊看醫學書一邊動手術……
如果你是病人,你希望你的醫生是下面的哪一種呢?
a) 剛剛在書上看到你的病例, 開刀的過程中非常認真嚴謹, 時不時還要停下來翻書看看……
b) 富有創新意識, 開刀時突然想到一個新技術、 新的刀法, 然後馬上在你身上實驗……
c) 已經處理過很多類似的病例, 可以一邊給你開刀, 一邊和護士聊天說昨天晚上的 《非誠勿擾》花絮……
d) 此醫生無正式文憑或正式醫院的認證, 但是號稱有秘方, 可治百病。
事實上,很多軟體項目就是用 a)或者 b) 這樣的方法搞出來的。當然也有一些人走 d) 這條路。
討論: ① 你要選哪種類型的醫生?② 醫生、藥劑師、律師和很多行業都有職業考試和職業認證,軟體工程師需要有正式的職業認證才能上崗麼? 請參考Steve McConnell 的觀點[i]。
2 工程還是藝術
軟體開發是一門工程(Engineering), 是一門藝術(Art),還是一門手藝(Craftmanship)? 你如何衡量藝術家? 如何衡量創造能力?
如果是一門工程, 那工程師要守規矩; 如果是一門藝術, 那藝術家要創新。
一些最有影響力的作家,他們的作品都非常少,甚至只有一本,例如:
- 《飄》 (Gone with the Wind) 作者 Margaret Mitchell[ii]
- 《紅樓夢》,作者曹雪芹(這一本據說都沒寫完!)
另外,優秀的作品往往並不符合所有“好”的標準。例如,找出下面這首詞中重複的字:
念奴嬌 · 赤壁懷古 - 蘇軾
大江東去,浪淘盡,
千古風流人物。
故壘西邊,人道是,三國周郎赤壁。
亂石崩雲,驚濤裂岸,捲起千堆雪。
江山如畫,一時多少豪傑。
遙想公謹當年,小喬初嫁了。
羽扇綸巾,談笑間,檣櫓灰飛煙滅。
故國神遊,多情應笑我,早生華髮。
人生如夢,一樽還酹江月。
出現了三遍的字有: 江,人; 出現了兩遍的字有: 國,生,千,故,如。這符合“好詞”的標準嗎?
南宋人俞文豹評價道:
今人看人文字,未論其大體如何,先且指點重字。
軟體設計工程師們在做代碼複審的時候,是看“重複字”的多少, 還是程式的藝術性?
這個問題的另一個側面是,在中國,一個成名的歌唱家往往出現在各種場合,演唱她當年成名的作品,觀眾們往往顯得百聽不厭。一個軟體工程師就不能這樣,在舞台上展現他當年寫的“hello world” 程式,或者是1.0 的產品。為啥有這樣的區別呢?
3 絞刑架和職業發展
移山公司的人力資源總監給同學們做了職業發展的演講,大意是隨著軟體工具和軟體工程理論的發展,開發軟體將會越來越容易,軟體企業的水平都是CMMi4級以上。軟體白領的生活指日可待,金領也不是夢,大家前途無可限量,學軟體工程的同學越來越多,就是明證。大家紛紛鼓掌。最後他分享了一個故事:
兩個劫匪在亡命的路上看到一副絞刑架,劫匪小弟說,大哥,如果這世界上沒有絞刑架,咱們的職業就好乾多了。大哥說:你真笨!如果沒有了它,這世上做劫匪的人怕是太多,我倆恐怕競爭不過同行,早就餓死了!
請同學們思考這個故事對個人及軟體業發展的啟示。
4 案例
程式員小飛原計劃三天完成某個任務,現在是第三天的下午,他馬上就可以做完。但是在實現功能的過程中, 他越來越意識到自己原來設計中的弱點,他應該採取另一個辦法,才能避免後面整合階段的額外工作。但是他如果現在就改弦更張,那勢必要影響自己原來估計的準確性,並且會花費額外的時間,這樣他的老闆,同事會因此看不起他。如果他按部就班,最後整個團隊還要花更多時間在後續整合上,但那就不是他個人的問題了。怎麼辦?
[i] Professional Software Development, ISBN 0-321-19367-9 Steve McConnell, 出版社:Addison-Wesley
[ii] 參見:http://en.wikipedia.org/wiki/Margaret_Mitchell