軟體開發中的9大難題
是什麼讓專案變糟?
何時起我們下班回家時開始盤算:“見鬼,我得離開?”
下面是我們程式設計師要面對的一個問題清單,這些問題讓我們筋疲力盡。而通常我們又躲不掉,不得不設法去應付。
01 錯誤的團隊
如果你不幸處在一個錯誤的團隊中,問題則免不了。大家也許都還不錯,但是當其中某人因為錢的事情不高興,或者對瑣碎的任務感到厭煩時,他就可能破壞團隊的氣氛。其他人可能只顧著自己的事業,這使得他們變成了糟糕的團隊夥伴。某人會認為自己是在幫助這些人實現他們自己的事業目標。如果一個團隊成員的知識太少,也可能出現不友好的情況。如果你從事的工作與你的技能不配,或者沒有人能夠幫你邁出第一步的話,你也可能陷入麻煩。
團隊需要和諧。如果你有幸身處“分享同一個夢想”的團隊,一切都很美妙。如果你是由無聊或自負之人組成的團隊的一員,你可能會經歷一段非常艱難的時光。
02 荒誕的需求
一些專案需求讀起來簡直是科幻小說,抽象,一點都不現實。有想象力當然很好,但想象力必須適應團隊。如果專案團隊中有許多應屆畢業生,你不太可能在第一版就創建出基於雲的最佳電子表格。
有些客戶往往以為軟體需求一句話就可以說清楚:“該產品必須像社交網站X,只是有一點兒不同。”“事情不會太難,有公司已經提供了免費版。”“這只是一個留言板罷了。”這些需求最終導致極大的不滿。客戶從未獲得自己滿意的產品,開發者也根本沒法兒滿足客戶,而且覺得自己難以勝任工作。
03 外行的期望
不清晰的需求導致了外行的期望,不僅如此,有時人們似乎把程式設計師當成了超人。
當你剛接手一個專案時,根本不可能成功除錯有著 100 000 行程式碼的程式。無論是不是產品問題,程式設計師都需要時間先讀懂程式碼,然後才可能修復它。
像“這只是一個按鈕罷了”或者“老手程式設計師五分鐘就搞定了”這樣的話根本無濟於事。除此之外,“五分鐘的修復”也許正是需要修復的根本原因。
04 咖啡機下度夜
一些時候,超越身體極限,儘量把活幹完是必要的。假設產品中存在一個根本性的軟體故障,我們要盡力救援。這往往需要額外加班,工作到半夜甚至更晚。
軟體的問題是如此關鍵,以至程式設計師往往被期望熬夜處理,直到問題解決。我們中最好的程式設計師曾被發現在咖啡機下方昏昏睡去,雖然他奮不顧身地想保持清醒,但最終失敗了。在一些人的心目中,在咖啡機下睡覺顯示了程式設計師對專案的認真。
雖然這樣的生活有時很有趣,但長此以往會導致嚴重的問題。如果你的這種行為“修復”了事實上是管理不善的問題,那就更糟了。當需求變化時,或者由於公司政治致使專案管理者承諾了一個最後期限時,你就會遭受非常令人沮喪的經歷:有家不能歸,有床不能睡。
05 被忽略的非工作生活
程式存在軟體缺陷,這很正常,無法完全避免。心理學家發現人們可以很容易地同時思考三件事。但如果數量超過三個,大多數人的思維都會出現問題。然而作為一名程式設計師,我們必須同時記得更多事情。
通常在程式設計師的周圍有很多幹擾,比如:
咆哮的專案經理;
沒完沒了的電話和會議;
在高壓下工作;
或者是家庭、健康或財務問題。
一個程式設計師受到的干擾越多,編寫出缺陷程式碼的可能性就越大。讓一些分心的事可以保持在最低限度,以免他人受到影響。例如家庭生活,這是我們生命的重要一面,雖然有時它也相當無情。
無論誰在評估專案的預算,都需要安排一些額外時間考慮到程式設計師的非工作生活。不能僅根據專案成員的工作經驗來計算預算額度,需要考慮他們的現狀。為了正確地估算,你需要知道有人家裡是否有個懷孕的妻子,大家是否都健康,或者是否已從之前疲憊的專案中恢復了元氣。
忽視生活就意味著忽視風險或機會。
給一個精力充沛的人佈置大量無聊的任務,意味著你錯過了一個機會。而給一個家庭出現變故的人佈置高度複雜的任務,則會增加風險。
如果程式設計師意識到自己的生活長期被忽視,這會使他感到沮喪和疲憊。
06 威脅產生的動力
威脅無疑不是一個好的激勵策略,但仍然被廣泛使用。“如果你不能熬夜加班,就不配當一名程式設計師,而應該去做一個園丁。”我的一名同事曾這樣說過。
威脅會引起恐懼。除了黑暗外,害怕失去生存的基礎也是人類最強烈的恐懼之一。
要是某人遭遇一陣威脅後,不得不在恐懼中工作,那他絕對是“職業倦怠”症的最佳人選。
07 無端變化的需求
專案經理走入房間,扔下新的需求,然後走人:這就是“直升機式管理”方式常見的場景。如同直升機著陸、揚塵並再次起飛。有些人精於此道。他們的大多數需求未經過深思熟慮,而且在專案實施的過程中毫無預警就改變了需求。
當需求不明確時,就會失去目標,任務永遠無法結束。每一次會議都顯得荒謬,所有討論結果都是廢話。最後,整個專案都被質疑,自己每天做的事情的意義也會受到懷疑。
08 貪婪
在現代社會中,如果你不能決定像僧人那樣生活,你就需要金錢維持生存。
在某些場合下,公司——嗯,我們還是說公司的管理層吧——他們會竭力從專案中榨取每一分錢,對僱員看都不看一眼。
2012 年,富士康中國公司(它是蘋果公司的合作伙伴)發生了一系列抗議運動。工人要求改善工作條件。
在西方國家,你可能被迫一直住最廉價的酒店,坐最廉價的交通工具,而且使用最廉價的辦公裝置,即使你負責的專案非常成功,為公司帶來的利潤豐厚。
節省本該花在員工身上的錢,從而證明公司的盈利能力是多麼強,可能是管理層犯下的最糟糕的錯誤。我見過很多人因此而離開公司。
09 其他成見
對於那些讓程式設計師沮喪的事情,我可以寫一整本書,在本章我們就已經看了其中一些。
這裡有一些更多的成見,你也許聽說過。
比如,偉大的程式設計師
如果能用Y語言寫程式碼,就能用X語言寫程式碼。
可以迅速地解決問題,其中大多數能在一分鐘內搞定。
不會寫有缺陷的程式碼。
不需要編寫測試程式碼。
喜歡深夜還在為客戶編寫程式碼。
不在計算機旁或辦公室裡也能除錯程式碼。
瞭解關於硬體、最新的IT趨勢以及框架等的一切,無所不知。
不與客戶交流就能夠理解客戶的意思。
熟悉各種作業系統,從底層到上層,包括每一種移動裝置上的系統。
可以編寫執行在每一種裝置上的程式碼,並且無需重新編譯,無需裝置轉換,無需付出額外的努力。
這個成見清單可以說是無窮無盡的。我們無法教育人們停止相信諸如此類的故事。即使是專家也無法做到。相反,我們需要基於日常準則保護自己免受成見的干擾。
本文節選自【德】Christian Grobmeier作品《程式設計師之禪》
公眾號內回覆“1”帶你進粉絲群