《程式設計師之禪》一一3 1 無法擺脫的困境

2021-09-23 15:00:37 字數 2914 閱讀 2311

程式設計師之禪

是什麼讓專案變糟?何時起我們下班回家時開始盤算:「見鬼,我得離開」?下面是我們程式設計師不時要面對的乙個問題清單,這些問題讓我們筋疲力盡。而通常我們又躲不掉,不得不設法去應付。

3.1.1 錯誤的團隊

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

3.1.2 荒誕的需求

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

3.1.3 外行的期望

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

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

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

3.1.4 咖啡機下度夜

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

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

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

**3.1.5 被忽略的非工作生活**

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

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

咆哮的專案經理;

沒完沒了的**和會議;

在高壓下工作;

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

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

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

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

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

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

3.1.6 威脅產生的動力

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

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

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

3.1.7 無端變化的需求

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

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

3.1.8 貪婪

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

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

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

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

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

3.1.9 其他成見

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

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

比如,偉大的程式設計師

如果能用y語言寫**,就能用x語言寫**。

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

不會寫有缺陷的**。

不需要編寫測試**。

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

不在計算機旁或辦公室裡也能除錯**。

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

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

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

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

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

《程式設計師之禪》一一1 2 什麼是禪

程式設計師之禪 1.2.1 佛陀喬達摩 悉達多 在了解禪之前,我們需要先了解下佛教。喬達摩 悉達多創立了眾所周知的佛教。他是淨飯王之子,出生於西元前563年。在悉達多小的時候,有預言稱,他要麼成為一位強大的國王,要麼成為聖人 世人之師。悉達多的父親淨飯王希望他能繼承王位,於是試圖向他掩蓋世間的醜惡。...

《程式設計師之禪》一一10 5 不要設定職業目標

程式設計師之禪 如果你總是想得到些什麼以至於忽略了當下的生活,你已經輸了。對於工作,全力以赴即可,別去管將來很長一段時間後才可能達成的目標。難道拼命工作20年,就是為了成為公司股東?為什麼不能因為樂趣而勤奮工作呢?如果真心喜歡,即使辛苦也會樂在其中。一日不作,一日不食 禪宗如是說。沒有必要等到20年...

《程式設計師之禪》一一2 1 四聖諦與地獄

我曾讀過一本禪宗書籍,其中驚訝地看到作者談及 地獄 在日文中為 奈落 羅馬拼音 naraku 源自佛經中的 那落迦 對我來說,很難將這個詞同禪宗聯絡起來,因為我首先想到的是 教。在讀過其他文獻後,我發現佛家說的 地獄 含義不同。當一開始得知地獄不是人死後被送往接受懲罰的地方 而是人生來之地時,我感到...