軟件開發(fā)人員的“七重苦”(1)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/2/8 10:29:34 ] 推薦標(biāo)簽:
軟件開發(fā)這個(gè)行業(yè)無疑的是有快樂的,但這篇文章里,我們先不關(guān)注他,而是要來看看那些讓人痛苦的地方。
有時(shí)候想想,人作為一種生物還是挺有意思的。
快樂的東西快樂過了,也忘了,記的牢的的反倒是些讓人不快樂的東西。
第一重:垃圾代碼
佛家總講成住壞空,軟件亦莫能外。
有點(diǎn)特別的是,軟件“住”的階段短,“壞”的階段來的快。
要想軟件保持不“腐敗”,其實(shí)要花的精力遠(yuǎn)比想的多,這導(dǎo)致在商業(yè)利益比較強(qiáng)勢(shì)的世界里,大多時(shí)候有的只是“能用行”的軟件,而不是“好”的軟件。
“能用行”的軟件里,大多時(shí)候到處都是垃圾代碼。
如果說超過100行的方法/函數(shù)讓人痛苦的話,那么時(shí)有出現(xiàn)的超過200行的方法/函數(shù)是讓人絕望了。
不改不行,改了不知道對(duì)錯(cuò),一旦錯(cuò)了很可能被抱怨。這是垃圾代碼帶來的痛苦。
軟件行業(yè)已經(jīng)存在超過30幾年了,現(xiàn)存的軟件很多。所以軟件開發(fā)人員遇上垃圾代碼的可能性高于50%。
開源的世界要好很多,只可惜很多時(shí)候開源和飯碗的關(guān)聯(lián)有點(diǎn)艱難。
第二重:莫名其妙的加班
很多日程是把程序員的工作時(shí)間作為變量的。
簡單來講是,要完成的工作是不確定的,但日程是確定的。
這樣一來,軟件開發(fā)人員必須加班。
但關(guān)鍵是一個(gè)人每天能寫的既定質(zhì)量水平的代碼大概那么多,一旦逼急了,只能放水,少想多做,進(jìn)而貢獻(xiàn)更多的垃圾代碼。
因此說,這類加班很莫名其妙:目的可能是節(jié)約成本,縮短工期,但實(shí)際上垃圾代碼一出,大多時(shí)候是適得其反。
可以10人月做完的項(xiàng)目,只計(jì)劃投入5個(gè)人月,終投入了15個(gè)人月的例子其實(shí)不少。
項(xiàng)目越復(fù)雜,越容易出現(xiàn)這種情況。
第三重:需求變化下的無用功
沒什么比,費(fèi)了很大力氣完成一項(xiàng)功能,結(jié)果收到的反饋是“這不是我們想要的”或“這個(gè)功能不需要了”更讓人泄氣了。
需求變化是正常的,迭代也是正常的,可無用功太多一定是不正常的。
但軟件這個(gè)行業(yè)中,這事似乎沒法根絕。
這也許根本不是個(gè)技術(shù)問題,或者說不只是技術(shù)問題。
人有偏好,偏好在變化。世界有走勢(shì),走勢(shì)在變化。這些都會(huì)傳導(dǎo)到軟件里來,進(jìn)而使無用功成為一種宿命。
第四重:選擇太多
在很多工程領(lǐng)域里,確定性的東西比較多。但軟件開發(fā)里恰恰相反,確定性較少,選擇太多。
這也許是好事,但有的時(shí)候確實(shí)也讓人痛苦。
假設(shè)說,我們要從頭開發(fā)一款軟件,那么至少要做這些選擇:
用什么語言?這好像很簡單,但如果真要很理智的去分析和選擇,其實(shí)很難,C++,C#,Java那個(gè)沒有自己的優(yōu)勢(shì)呢。
用什么框架?選新技術(shù),可能支持不到位,也可能很快被淘汰;選老技術(shù),可能會(huì)有些已知的限制。
是買還是自己造?買的話省時(shí)間,但一旦出問題,很可能導(dǎo)致項(xiàng)目卡殼。自己造的話,有可能時(shí)間上來不及。
... ...
每次面臨這類問題時(shí),都讓人感覺,世界很大,自己不過是一只小小鳥。
其實(shí)選擇讓人難受的主要原因是自身知識(shí)與未知世界間的矛盾,但軟件的世界真的很大,一個(gè)人要想了解所有事情完全不可能。
所以痛苦的選擇題總在那里,不管你愛或不愛。
相關(guān)推薦

最新發(fā)布
性能測(cè)試之測(cè)試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測(cè)試是從什么時(shí)候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動(dòng)化測(cè)試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項(xiàng)目適合做自動(dòng)化?自動(dòng)化測(cè)試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測(cè)試工具測(cè)評(píng)
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測(cè)試基本概念是怎么來的?軟件測(cè)試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10