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