程式設計師、技術領導、管理者各有煩惱,你佔了幾條?

鄭芸發表於2016-06-15

為什麼做 {程式設計師、技術領導、管理者} 很可怕?

【伯樂線上注】:本文作者 Brett Slatkin 是在一位在谷歌工作 10 年的程式設計師,著有《Effective Python:編寫高質量Python程式碼的59個有效方法》。


我專業從事軟體開發工作已超過 10 年的時間,我熱愛這份事業,希望有一天我會被人們稱呼為老程式設計師。但這一路走來,我經歷了許多可怕的事情,這些事情讓我討厭我的工作。在職業生涯早期,我曾期望有人能給我一份職場指南,這樣當遇到之前未曾遇到的事情時,我就不會感到如此的孤單和沮喪。

從某種意義上說,這篇文章就是那樣一份指南。我寫這篇文章有三個目的。

一、回顧

辨別出我們以往都曾有過的經歷。這些會幫助我們建立一些理解上的共識,可以作為判斷其他不熟悉的問題的參考點。

二、展望

辨別出一些你還未經歷過的新問題,這些問題有可能在你以後的道路上發生。我希望我列舉的這些事項,可以幫助你應對接下來要發生的事情,以及幫助你決定什麼才是值得你自己去追求的。

三、幫助你理解你的團隊夥伴,相互尊重,理解彼此面臨的問題

也許你不具備前瞻性的眼界,尤其當你不是一個技術領導或管理者的時候。同樣,如果你是技術領導或者管理者,你或許已忘記當一個程式設計師是什麼感受,無法體會程式設計師日常的工作狀態。我想幫助大家站到同一個立場來看待事情。

下面列舉的事項不是按優先次序排列的。這其中也包括其他人向我講述的觀察結果,並不都是我自己的親身經歷。所以如果你曾與我共事過,請不要認為某個特例就是關於你。令人感到不可思議的是,大家的經歷都很相似。

需要指出的是,還有一些其他型別但這篇文章沒有提到的可怕的事情:種族主義、性別歧視、年齡歧視,攻擊行為以及許多其他因素導致的敵對的工作環境等。我沒有能力去寫這方面的話題,你們可以從其他地方找到關於這些話題的深刻的描述和分析。

我寫這篇文章的目的是列舉出以下關於團隊軟體開發的特性。如果你認為我遺漏了什麼,請告訴我。我可以想象到,這裡面提及的許多點,特別是在技術領導和管理者方面列舉的事項,也適用於其他職業。請記住這些角色並不都是隻有可怕的經歷,我關於這個主題的下篇文章就是講述好的方面。

程式設計師、技術領導、管理者各有煩惱,你佔了幾條?

 軟體工程師(程式設計師)的煩惱

程式設計師就是寫程式碼的人,受技術領導或者管理者領導。

  • 有太多東西要學但沒有足夠的時間。
  • 程式碼寫得很爛。
  • 當前的抽象不好。
  • 換做我,我會以不同的方式完成。
  • 註釋沒有任何意義,也從來不會更新。
  • 沒有任何關於這個程式應該如何構建以及它是如何執行的說明。
  • 構建緩慢。
  • 測試緩慢。
  • 測試碎片化。
  • 根本沒有測試。
  • 架構很爛,需要大量樣本檔案、複雜的程式碼或者混亂的測試。
  • 管理者讓我犧牲程式碼質量來趕上開發進度。
  • 在沒有意識到的情況下依賴關係就改變了。
  • 裝置、測試和產品因地域而有差異。
  • 糾結於某個問題或者花費很長時間去除錯BUG。
  • 我需要去修正碎片化的測試,這個程式最開始並不是我寫的。
  • 我需要去修正其他人導致的bug或者產品問題,因為他們沒有積極地去馬上修正。
  • 需要在某些人離開後維護他蹩腳的程式碼或者系統。
  • 有些事情應該自動化地完成,但是卻沒能做到這一點。
  • 被我的隊友或者上司打斷。
  • 內容切換成本。
  • 我的上司要求我去處理緊急專案。
  • 程式碼審查時我的隊友表現地很混蛋,我感覺這是人身攻擊。
  • 其他人沒有及時提供一個功能項但我需要它來完成工作
  • 其他的工程師開發功能或元件太慢。
  • 我總要去等待其他人。
  • 有些產品上的決定我不能認同。
  • 我只能讓幹什麼就幹什麼。
  • 沒有自主權。
  • 沒有人尊重我的觀點。
  • 我非常努力的完成了工作,卻被要求重做。
  • 產品經理們改變了對我的要求因為他們過度聽取了其他人的批評或反饋。

技術領導的煩惱

技術領導:技術領導在自己寫程式碼的同時還要指導一個小團隊程式設計師的程式設計和實現工作。這些程式設計師同時還受其他人管理(不是隻聽技術領導的)

  • 產品的方方面面隨時都會出現問題。
  • 太多的郵件和資訊要去讀和迴應。
  • 工作上有疏漏。
  • 一切都落在後面。
  • 其他人正做出我無法認同的技術設計上的決定,但我沒有能力和權力來說服他們改變想法。
  • 實現是草率的或者忽視了現存的最佳實踐。
  • 事情朝我預期之外的方向發展;之後效能上的要求打破了我之前的預設。
  • 我深切地感受到來自截止日期和從屬關係的壓力,即使下班在家我都沒法放鬆。
  • 每個人都需要比我預期要多的監督,不管我多努力嘗試去解釋這個計劃的細節和文件。
  • 公開發起一個計劃總是遙遙無期,它總被一些非技術性的原因阻撓。
  • 在時間和質量之間做著艱難的抉擇。
  • 我很負責任,為什麼其他人不能和我一樣?
  • 我落後於我職責上的進度,沒人有幫我。
  • 我不理解我的上司整天在幹什麼,但是我覺得他在瞎忙活。
  • 我不理解產品經理整天在幹嘛,但是我覺得他在瞎忙活。
  • 我感覺我團隊的其他工程師嘗試通過不執行我們之前協定好的計劃來打擊我。當我向他們的管理者談及此事時感覺自己像是在打小報告。
  • 我認為是我負責的專案被移交給了別人,但我不理解其中的原因。
  • 我的專案團隊中沒有足夠的工程師,以至於這個專案沒法以合理的時間完成。
  • 當我說到某件事多難完成時,人們並不聽我的,也不願降低標準。

管理者的煩惱

管理者:管理者管理一個團隊的軟體工程師,這個人也有可能是一個技術領導,或者技術管理直接向他報告(管理技術領導)

  • 如果不成為一個讓人討厭的人,就很難調動其他人。
  • 似乎隨時都處於緊急狀態。
  • 每個人都在向我抱怨。
  • 沒時間應對郵件。
  • 沒時間瞎扯,即使我因為沒時間社交而感覺自己像一個讓人討厭的人。
  • 當我回到家我感覺自己很失敗,經常有這種想法。當對我很重要的人或者我親近的人想跟我談論事情,而我正要去工作,我沒時間聽他們傾訴,這時我總有深深的挫敗感。
  • 在任何時候,我的下屬工程師或技術領導總是至少佔下面情況中的一條:
    • 想放棄。
    • 對團隊中的某人很惱火。
    • 對其他團隊的某人很惱火。
    • 對自己很惱火。
    • 以某個理由被某人冒犯。
    • 無理由被冒犯。
    • 因為合理的理由對程式碼庫不滿意。
    • 因為吹毛求疵或者無根據的理由對程式碼庫不滿意。
    • 對他們的專案不滿意,想去做別的,即使他們正做的事情是最重要的。
    • 私人問題影響他們的表現,經常導致他們有消極的反應。
    • 厭倦,很顯然如果有合適的機會他們肯定會跳槽。
  • 其他的管理人員的工作就是安排會議。他們不寫程式碼,他們就是靠說來影響事情。所以我被拉進了一堆沒用的會議。參加這些會議看起來就是在浪費時間。
  • 程式碼寫得少感覺很差勁。我感覺我正慢慢失去稜角。有時我很難做出成績。我不得不改變我的價值觀。從幫助他們變得更富創造性上尋求滿足感感覺很做作。
  • 我將失去做重要決策的機會,事情將朝不好的方向發展。
  • 這個專案就要落後或者失敗了因為我把它委託給了錯誤的人選。
  • 我感覺其他管理者嘗試用政策打擊我。
  • 我面臨的最大問題是信任危機,我無法從其他人那裡得到支援和建議。
  • 工程的CTO/VP不知道在幹嘛。他們似乎沒有貢獻任何價值。他們問些無知的問題而且通常很無禮。
  • 我的下屬工程師把時間浪費在無關緊要的事情,但是我不敢去阻止他們因為我怕把他們推開,導致他們放棄。
  • 每個人都或多或少不認同我管理團隊上的做法。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

程式設計師、技術領導、管理者各有煩惱,你佔了幾條? 程式設計師、技術領導、管理者各有煩惱,你佔了幾條?

相關文章