1. 程式人生 > >軟體開發中的9大難題

軟體開發中的9大難題

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

是什麼讓專案變糟?

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

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

01 錯誤的團隊

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

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

02 荒誕的需求

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

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

03 外行的期望

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

當你剛接手一個專案時,根本不可能成功除錯有著 100 000 行程式碼的程式。無論是不是產品問題,程式設計師都需要時間先讀懂程式碼,然後才可能修復它。

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

04 咖啡機下度夜

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

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

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

05 被忽略的非工作生活

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

通常在程式設計師的周圍有很多幹擾,比如:

  • 咆哮的專案經理;

  • 沒完沒了的電話和會議;

  • 在高壓下工作;

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

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

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

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

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

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

06 威脅產生的動力

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

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

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

07 無端變化的需求

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

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

08 貪婪

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

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

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

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

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

09 其他成見

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

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

比如,偉大的程式設計師

  • 如果能用Y語言寫程式碼,就能用X語言寫程式碼。

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

  • 不會寫有缺陷的程式碼。

  • 不需要編寫測試程式碼。

  • 喜歡深夜還在為客戶編寫程式碼。

  • 不在計算機旁或辦公室裡也能除錯程式碼。

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

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

  • 熟悉各種作業系統,從底層到上層,包括每一種移動裝置上的系統。

  • 可以編寫執行在每一種裝置上的程式碼,並且無需重新編譯,無需裝置轉換,無需付出額外的努力。

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

本文節選自【德】Christian Grobmeier作品《程式設計師之禪》

公眾號內回覆“1”帶你進粉絲群640?wx_fmt=gif