當前位置:
首頁 > 知識 > 軟體開發中的9大難題

軟體開發中的9大難題

是什麼讓項目變糟?

何時起我們下班回家時開始盤算:「見鬼,我得離開?」

下面是我們程序員要面對的一個問題清單,這些問題讓我們筋疲力盡。而通常我們又躲不掉,不得不設法去應付。


01錯誤的團隊

如果你不幸處在一個錯誤的團隊中,問題則免不了。大家也許都還不錯,但是當其中某人因為錢的事情不高興,或者對瑣碎的任務感到厭煩時,他就可能破壞團隊的氣氛。其他人可能只顧著自己的事業,這使得他們變成了糟糕的團隊夥伴。某人會認為自己是在幫助這些人實現他們自己的事業目標。如果一個團隊成員的知識太少,也可能出現不友好的情況。如果你從事的工作與你的技能不配,或者沒有人能夠幫你邁出第一步的話,你也可能陷入麻煩。

團隊需要和諧。如果你有幸身處「分享同一個夢想」的團隊,一切都很美妙。如果你是由無聊或自負之人組成的團隊的一員,你可能會經歷一段非常艱難的時光。


02荒誕的需求

一些項目需求讀起來簡直是科幻小說,抽象,一點都不現實。有想像力當然很好,但想像力必須適應團隊。如果項目團隊中有許多應屆畢業生,你不太可能在第一版就創建出基於雲的最佳電子表格。

有些客戶往往以為軟體需求一句話就可以說清楚:「該產品必須像社交網站X,只是有一點兒不同。」「事情不會太難,有公司已經提供了免費版。」「這只是一個留言板罷了。」這些需求最終導致極大的不滿。客戶從未獲得自己滿意的產品,開發者也根本沒法兒滿足客戶,而且覺得自己難以勝任工作。


03外行的期望

不清晰的需求導致了外行的期望,不僅如此,有時人們似乎把程序員當成了超人。

當你剛接手一個項目時,根本不可能成功調試有著 100 000 行代碼的程序。無論是不是產品問題,程序員都需要時間先讀懂代碼,然後才可能修復它。

像「這只是一個按鈕罷了」或者「老手程序員五分鐘就搞定了」這樣的話根本無濟於事。除此之外,「五分鐘的修復」也許正是需要修復的根本原因。


04咖啡機下度夜

一些時候,超越身體極限,盡量把活幹完是必要的。假設產品中存在一個根本性的軟體故障,我們要儘力救援。這往往需要額外加班,工作到半夜甚至更晚。

軟體的問題是如此關鍵,以至程序員往往被期望熬夜處理,直到問題解決。我們中最好的程序員曾被發現在咖啡機下方昏昏睡去,雖然他奮不顧身地想保持清醒,但最終失敗了。在一些人的心目中,在咖啡機下睡覺顯示了程序員對項目的認真。

雖然這樣的生活有時很有趣,但長此以往會導致嚴重的問題。如果你的這種行為「修復」了事實上是管理不善的問題,那就更糟了。當需求變化時,或者由於公司政治致使項目管理者承諾了一個最後期限時,你就會遭受非常令人沮喪的經歷:有家不能歸,有床不能睡。


05被忽略的非工作生活

程序存在軟體缺陷,這很正常,無法完全避免。心理學家發現人們可以很容易地同時思考三件事。但如果數量超過三個,大多數人的思維都會出現問題。然而作為一名程序員,我們必須同時記得更多事情。

通常在程序員的周圍有很多干擾,比如:

咆哮的項目經理;

沒完沒了的電話和會議;

在高壓下工作;

或者是家庭、健康或財務問題。

一個程序員受到的干擾越多,編寫出缺陷代碼的可能性就越大。讓一些分心的事可以保持在最低限度,以免他人受到影響。例如家庭生活,這是我們生命的重要一面,雖然有時它也相當無情。

無論誰在評估項目的預算,都需要安排一些額外時間考慮到程序員的非工作生活。不能僅根據項目成員的工作經驗來計算預算額度,需要考慮他們的現狀。為了正確地估算,你需要知道有人家裡是否有個懷孕的妻子,大家是否都健康,或者是否已從之前疲憊的項目中恢復了元氣。

忽視生活就意味著忽視風險或機會。

給一個精力充沛的人布置大量無聊的任務,意味著你錯過了一個機會。而給一個家庭出現變故的人布置高度複雜的任務,則會增加風險。

如果程序員意識到自己的生活長期被忽視,這會使他感到沮喪和疲憊。

06威脅產生的動力

威脅無疑不是一個好的激勵策略,但仍然被廣泛使用。「如果你不能熬夜加班,就不配當一名程序員,而應該去做一個園丁。」我的一名同事曾這樣說過。

威脅會引起恐懼。除了黑暗外,害怕失去生存的基礎也是人類最強烈的恐懼之一。

要是某人遭遇一陣威脅後,不得不在恐懼中工作,那他絕對是「職業倦怠」症的最佳人選。


07無端變化的需求

項目經理走入房間,扔下新的需求,然後走人:這就是「直升機式管理」方式常見的場景。如同直升機著陸、揚塵並再次起飛。有些人精於此道。他們的大多數需求未經過深思熟慮,而且在項目實施的過程中毫無預警就改變了需求。

當需求不明確時,就會失去目標,任務永遠無法結束。每一次會議都顯得荒謬,所有討論結果都是廢話。最後,整個項目都被質疑,自己每天做的事情的意義也會受到懷疑。


08貪婪

在現代社會中,如果你不能決定像僧人那樣生活,你就需要金錢維持生存。

在某些場合下,公司——嗯,我們還是說公司的管理層吧——他們會竭力從項目中榨取每一分錢,對僱員看都不看一眼。

2012 年,富士康中國公司(它是蘋果公司的合作夥伴)發生了一系列抗議運動。工人要求改善工作條件。

在西方國家,你可能被迫一直住最廉價的酒店,坐最廉價的交通工具,而且使用最廉價的辦公設備,即使你負責的項目非常成功,為公司帶來的利潤豐厚。

節省本該花在員工身上的錢,從而證明公司的盈利能力是多麼強,可能是管理層犯下的最糟糕的錯誤。我見過很多人因此而離開公司。

09其他成見

對於那些讓程序員沮喪的事情,我可以寫一整本書,在本章我們就已經看了其中一些。

這裡有一些更多的成見,你也許聽說過。

比如,偉大的程序員

如果能用Y語言寫代碼,就能用X語言寫代碼。

可以迅速地解決問題,其中大多數能在一分鐘內搞定。

不會寫有缺陷的代碼。

不需要編寫測試代碼。

喜歡深夜還在為客戶編寫代碼。

不在計算機旁或辦公室里也能調試代碼。

了解關於硬體、最新的IT趨勢以及框架等的一切,無所不知。

不與客戶交流就能夠理解客戶的意思。

熟悉各種操作系統,從底層到上層,包括每一種移動設備上的系統。

可以編寫運行在每一種設備上的代碼,並且無需重新編譯,無需設備轉換,無需付出額外的努力。

這個成見清單可以說是無窮無盡的。我們無法教育人們停止相信諸如此類的故事。即使是專家也無法做到。相反,我們需要基於日常準則保護自己免受成見的干擾。

本文節選自【德】Christian Grobmeier作品《程序員之禪》


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員之家 的精彩文章:

程序員為什麼會有無休止的加班?
99%的人都不知道,女孩子學編程居然有這麼多好處!

TAG:程序員之家 |