編譯: 伯樂在線/lostmint
【伯樂在線注】:本文作者 Brett Slatkin 是在一位在谷歌工作 10 年的程序員,著有《Effective Python:編寫高質(zhì)量Python代碼的59個(gè)有效方法》。
我專業(yè)從事軟件開發(fā)工作已超過 10 年的時(shí)間,我熱愛這份事業(yè),希望有一天我會(huì)被人們稱呼為老程序員。但這一路走來,我經(jīng)歷了許多可怕的事情,這些事情讓我討厭我的工作。在職業(yè)生涯早期,我曾期望有人能給我一份職場(chǎng)指南,這樣當(dāng)遇到之前未曾遇到的事情時(shí),我就不會(huì)感到如此的孤單和沮喪。
從某種意義上說,這篇文章就是那樣一份指南。我寫這篇文章有三個(gè)目的。
一、回顧
辨別出我們以往都曾有過的經(jīng)歷。這些會(huì)幫助我們建立一些理解上的共識(shí),可以作為判斷其他不熟悉的問題的參考點(diǎn)。
二、展望
辨別出一些你還未經(jīng)歷過的新問題,這些問題有可能在你以后的道路上發(fā)生。我希望我列舉的這些事項(xiàng),可以幫助你應(yīng)對(duì)接下來要發(fā)生的事情,以及幫助你決定什么才是值得你自己去追求的。
三、幫助你理解你的團(tuán)隊(duì)伙伴,相互尊重,理解彼此面臨的問題
也許你不具備前瞻性的眼界,尤其當(dāng)你不是一個(gè)技術(shù)領(lǐng)導(dǎo)或管理者的時(shí)候。同樣,如果你是技術(shù)領(lǐng)導(dǎo)或者管理者,你或許已忘記當(dāng)一個(gè)程序員是什么感受,無法體會(huì)程序員日常的工作狀態(tài)。我想幫助大家站到同一個(gè)立場(chǎng)來看待事情。
下面列舉的事項(xiàng)不是按優(yōu)先次序排列的。這其中也包括其他人向我講述的觀察結(jié)果,并不都是我自己的親身經(jīng)歷。所以如果你曾與我共事過,請(qǐng)不要認(rèn)為某個(gè)特例就是關(guān)于你。令人感到不可思議的是,大家的經(jīng)歷都很相似。
需要指出的是,還有一些其他類型但這篇文章沒有提到的可怕的事情:種族主義、性別歧視、年齡歧視,攻擊行為以及許多其他因素導(dǎo)致的敵對(duì)的工作環(huán)境等。我沒有能力去寫這方面的話題,你們可以從其他地方找到關(guān)于這些話題的深刻的描述和分析。
我寫這篇文章的目的是列舉出以下關(guān)于團(tuán)隊(duì)軟件開發(fā)的特性。如果你認(rèn)為我遺漏了什么,請(qǐng)告訴我。我可以想象到,這里面提及的許多點(diǎn),特別是在技術(shù)領(lǐng)導(dǎo)和管理者方面列舉的事項(xiàng),也適用于其他職業(yè)。請(qǐng)記住這些角色并不都是只有可怕的經(jīng)歷,我關(guān)于這個(gè)主題的下篇文章就是講述好的方面。
軟件工程師(程序員)的煩惱
程序員就是寫代碼的人,受技術(shù)領(lǐng)導(dǎo)或者管理者領(lǐng)導(dǎo)。
有太多東西要學(xué)但沒有足夠的時(shí)間。
代碼寫得很爛。
當(dāng)前的抽象不好。
換做我,我會(huì)以不同的方式完成。
注釋沒有任何意義,也從來不會(huì)更新。
沒有任何關(guān)于這個(gè)程序應(yīng)該如何構(gòu)建以及它是如何運(yùn)行的說明。
構(gòu)建緩慢。
測(cè)試緩慢。
測(cè)試碎片化。
根本沒有測(cè)試。
架構(gòu)很爛,需要大量樣本文件、復(fù)雜的代碼或者混亂的測(cè)試。
管理者讓我犧牲代碼質(zhì)量來趕上開發(fā)進(jìn)度。
在沒有意識(shí)到的情況下依賴關(guān)系就改變了。
設(shè)備、測(cè)試和產(chǎn)品因地域而有差異。
糾結(jié)于某個(gè)問題或者花費(fèi)很長(zhǎng)時(shí)間去調(diào)試BUG。
我需要去修正碎片化的測(cè)試,這個(gè)程序最開始并不是我寫的。
我需要去修正其他人導(dǎo)致的bug或者產(chǎn)品問題,因?yàn)樗麄儧]有積極地去馬上修正。
需要在某些人離開后維護(hù)他蹩腳的代碼或者系統(tǒng)。
有些事情應(yīng)該自動(dòng)化地完成,但是卻沒能做到這一點(diǎn)。
被我的隊(duì)友或者上司打斷。
內(nèi)容切換成本。
我的上司要求我去處理緊急項(xiàng)目。
代碼審查時(shí)我的隊(duì)友表現(xiàn)地很混蛋,我感覺這是人身攻擊。
其他人沒有及時(shí)提供一個(gè)功能項(xiàng)但我需要它來完成工作
其他的工程師開發(fā)功能或組件太慢。
我總要去等待其他人。
有些產(chǎn)品上的決定我不能認(rèn)同。
我只能讓干什么就干什么。
沒有自主權(quán)。
沒有人尊重我的觀點(diǎn)。
我非常努力的完成了工作,卻被要求重做。
產(chǎn)品經(jīng)理們改變了對(duì)我的要求因?yàn)樗麄冞^度聽取了其他人的批評(píng)或反饋。
技術(shù)領(lǐng)導(dǎo)的煩惱
技術(shù)領(lǐng)導(dǎo):技術(shù)領(lǐng)導(dǎo)在自己寫代碼的同時(shí)還要指導(dǎo)一個(gè)小團(tuán)隊(duì)程序員的程序設(shè)計(jì)和實(shí)現(xiàn)工作。這些程序員同時(shí)還受其他人管理(不是只聽技術(shù)領(lǐng)導(dǎo)的)
產(chǎn)品的方方面面隨時(shí)都會(huì)出現(xiàn)問題。
太多的郵件和信息要去讀和回應(yīng)。
工作上有疏漏。
一切都落在后面。
其他人正做出我無法認(rèn)同的技術(shù)設(shè)計(jì)上的決定,但我沒有能力和權(quán)力來說服他們改變想法。
實(shí)現(xiàn)是草率的或者忽視了現(xiàn)存的最佳實(shí)踐。
事情朝我預(yù)期之外的方向發(fā)展;之后性能上的要求打破了我之前的預(yù)設(shè)。
我深切地感受到來自截止日期和從屬關(guān)系的壓力,即使下班在家我都沒法放松。
每個(gè)人都需要比我預(yù)期要多的監(jiān)督,不管我多努力嘗試去解釋這個(gè)計(jì)劃的細(xì)節(jié)和文檔。
公開發(fā)起一個(gè)計(jì)劃總是遙遙無期,它總被一些非技術(shù)性的原因阻撓。
在時(shí)間和質(zhì)量之間做著艱難的抉擇。
我很負(fù)責(zé)任,為什么其他人不能和我一樣?
我落后于我職責(zé)上的進(jìn)度,沒人有幫我。
我不理解我的上司整天在干什么,但是我覺得他在瞎忙活。
我不理解產(chǎn)品經(jīng)理整天在干嘛,但是我覺得他在瞎忙活。
我感覺我團(tuán)隊(duì)的其他工程師嘗試通過不執(zhí)行我們之前協(xié)定好的計(jì)劃來打擊我。當(dāng)我向他們的管理者談及此事時(shí)感覺自己像是在打小報(bào)告。
我認(rèn)為是我負(fù)責(zé)的項(xiàng)目被移交給了別人,但我不理解其中的原因。
我的項(xiàng)目團(tuán)隊(duì)中沒有足夠的工程師,以至于這個(gè)項(xiàng)目沒法以合理的時(shí)間完成。
當(dāng)我說到某件事多難完成時(shí),人們并不聽我的,也不愿降低標(biāo)準(zhǔn)。
管理者的煩惱
管理者:管理者管理一個(gè)團(tuán)隊(duì)的軟件工程師,這個(gè)人也有可能是一個(gè)技術(shù)領(lǐng)導(dǎo),或者技術(shù)管理直接向他報(bào)告(管理技術(shù)領(lǐng)導(dǎo))
如果不成為一個(gè)讓人討厭的人,就很難調(diào)動(dòng)其他人。
似乎隨時(shí)都處于緊急狀態(tài)。
每個(gè)人都在向我抱怨。
沒時(shí)間應(yīng)對(duì)郵件。
沒時(shí)間瞎扯,即使我因?yàn)闆]時(shí)間社交而感覺自己像一個(gè)讓人討厭的人。
當(dāng)我回到家我感覺自己很失敗,經(jīng)常有這種想法。當(dāng)對(duì)我很重要的人或者我親近的人想跟我談?wù)撌虑?,而我正要去工作,我沒時(shí)間聽他們傾訴,這時(shí)我總有深深的挫敗感。
在任何時(shí)候,我的下屬工程師或技術(shù)領(lǐng)導(dǎo)總是至少占下面情況中的一條:
想放棄。
對(duì)團(tuán)隊(duì)中的某人很惱火。
對(duì)其他團(tuán)隊(duì)的某人很惱火。
對(duì)自己很惱火。
以某個(gè)理由被某人冒犯。
無理由被冒犯。
因?yàn)楹侠淼睦碛蓪?duì)代碼庫不滿意。
因?yàn)榇得蟠没蛘邿o根據(jù)的理由對(duì)代碼庫不滿意。
對(duì)他們的項(xiàng)目不滿意,想去做別的,即使他們正做的事情是最重要的。
私人問題影響他們的表現(xiàn),經(jīng)常導(dǎo)致他們有消極的反應(yīng)。
厭倦,很顯然如果有合適的機(jī)會(huì)他們肯定會(huì)跳槽。
其他的管理人員的工作就是安排會(huì)議。他們不寫代碼,他們就是靠說來影響事情。所以我被拉進(jìn)了一堆沒用的會(huì)議。參加這些會(huì)議看起來就是在浪費(fèi)時(shí)間。
代碼寫得少感覺很差勁。我感覺我正慢慢失去棱角。有時(shí)我很難做出成績(jī)。我不得不改變我的價(jià)值觀。從幫助他們變得更富創(chuàng)造性上尋求滿足感感覺很做作。
我將失去做重要決策的機(jī)會(huì),事情將朝不好的方向發(fā)展。
這個(gè)項(xiàng)目就要落后或者失敗了因?yàn)槲野阉薪o了錯(cuò)誤的人選。
我感覺其他管理者嘗試用政策打擊我。
我面臨的最大問題是信任危機(jī),我無法從其他人那里得到支持和建議。
工程的CTO/VP不知道在干嘛。他們似乎沒有貢獻(xiàn)任何價(jià)值。他們問些無知的問題而且通常很無禮。
我的下屬工程師把時(shí)間浪費(fèi)在無關(guān)緊要的事情,但是我不敢去阻止他們因?yàn)槲遗掳阉麄兺崎_,導(dǎo)致他們放棄。
每個(gè)人都或多或少不認(rèn)同我管理團(tuán)隊(duì)上的做法。
看完本文有收獲?請(qǐng)分享給更多人
關(guān)注「伯樂在線」,看更多精選 IT 職場(chǎng)文章
聯(lián)系客服