六年軟件工程師生涯:我學(xué)到的五個(gè)慘痛教訓(xùn)
譯文作者丨Jordan Cutler
編譯丨諾亞
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
作為一名高級(jí)軟件工程師,我在迄今為止的職業(yè)生涯中領(lǐng)悟到了五大教訓(xùn)。可以說,這五個(gè)教訓(xùn)塑造了今天的我。當(dāng)然,這些教訓(xùn)僅僅基于我個(gè)人的經(jīng)驗(yàn)。您可能有過不同的經(jīng)歷,我的分享只是為了避免一部分人重蹈我的覆轍!
1.教訓(xùn)1:提出解決方法,而不單單是問題
當(dāng)時(shí)我在一個(gè)團(tuán)隊(duì)中擔(dān)任高級(jí)工程師職務(wù),我們團(tuán)隊(duì)依賴于另外兩個(gè)兄弟團(tuán)隊(duì)提供的數(shù)據(jù)支持。
問題來了:我們從其中一個(gè)兄弟團(tuán)隊(duì)獲取的數(shù)據(jù)響應(yīng)速度極為緩慢,由于向他們請(qǐng)求數(shù)據(jù)需要500毫秒至4秒的時(shí)間,這就導(dǎo)致了客戶看到的加載時(shí)間長達(dá)3秒甚至更久。
那個(gè)團(tuán)隊(duì)也意識(shí)到了這個(gè)問題的存在,但他們正忙于應(yīng)對(duì)各種優(yōu)先級(jí)相當(dāng)?shù)母?jìng)爭(zhēng)任務(wù)。更糟的是,我沒有使情況得到任何改善。
我在團(tuán)隊(duì)回顧會(huì)議和團(tuán)隊(duì)溝通渠道中多次提及這一問題。單就指出問題而言,這并不是什么壞事。但我的態(tài)度傳達(dá)出的信息是:“這是你們團(tuán)隊(duì)亟需解決的一個(gè)嚴(yán)重問題”,而不是“我們能否共同合作找出解決方案?”這樣的協(xié)作態(tài)度。
直到我的經(jīng)理給出反饋后,我才意識(shí)到我當(dāng)時(shí)這么做的問題。
我本可以安排與該團(tuán)隊(duì)的一位負(fù)責(zé)人進(jìn)行一對(duì)一交流,共同制定解決問題的計(jì)劃,而不是僅僅提出問題,讓任何人因問題而感到沮喪。盡管我的初衷是為了改進(jìn)我們團(tuán)隊(duì)及客戶體驗(yàn),但我本可以在解決問題的過程中采取一種方式,讓我們整個(gè)團(tuán)隊(duì)都能在這個(gè)過程中感受到積極正面的影響。
比如像這樣:端點(diǎn)的性能問導(dǎo)致客戶的加載時(shí)間超過 3 秒。我很樂意與您合作共同解決這個(gè)問題。我能提供什么幫助嗎?
2.教訓(xùn)2:干凈代碼并不是終極目標(biāo)
作為一名初級(jí)工程師,我在代碼審查時(shí)極其嚴(yán)苛,堅(jiān)決不讓任何在我看來“不夠美觀”的代碼進(jìn)入生產(chǎn)環(huán)境。結(jié)果這讓我的一位同事對(duì)我相當(dāng)不滿。
此事最終被上報(bào)給了我的上級(jí)經(jīng)理,我們?nèi)酥g進(jìn)行了一次對(duì)話并解決了問題,但這并非是一個(gè)令人愉快的局面。而且在這次事件之后,我并沒有吸取應(yīng)有的教訓(xùn)。
雖然我稍微有所收斂,但隨后又因?yàn)槲业脑u(píng)論意見,與另一位同事產(chǎn)生了分歧。
我們?cè)贕itHub上進(jìn)行了多輪來回評(píng)論,雙方關(guān)系因此變得緊張。
我當(dāng)時(shí)詢問了我的上級(jí)應(yīng)該怎么辦,他反問我:“如果你放棄一半的評(píng)論意見會(huì)怎樣?每一條評(píng)論都值得爭(zhēng)論嗎?”
我的回答是:“代碼可能會(huì)稍微不那么整潔?!?/p>
現(xiàn)在仔細(xì)想想:為了追求“代碼整潔”,是否值得犧牲你與同事之間的和諧關(guān)系呢?答案顯然是否定的。
于是,我開始對(duì)評(píng)論意見變得寬松。我減少了評(píng)論次數(shù),明確區(qū)分哪些是小瑕疵,并且大部分時(shí)候我都選擇批準(zhǔn),除非我有嚴(yán)重的疑慮或擔(dān)憂。
結(jié)果如何呢?我的關(guān)于小瑕疵的評(píng)論更容易被接受。我和同事之間建立了信任關(guān)系。他們不再感覺受到攻擊,而是覺得我們是在共同合作。
保持代碼整潔并非最終目的,協(xié)作才是。
3.教訓(xùn)3:團(tuán)隊(duì)產(chǎn)出大于個(gè)人產(chǎn)出
我有一個(gè)壞習(xí)慣,就是在從事主要項(xiàng)目時(shí)容易被我能做的代碼改進(jìn)工作分散注意力。當(dāng)然,適度地進(jìn)行這種改進(jìn)是可以接受的,畢竟在前進(jìn)的過程中優(yōu)化事物是有必要的。
但我會(huì)承擔(dān)起一些完整的改進(jìn)計(jì)劃,比如對(duì)于JavaScript代碼中的某些部分感到不滿意,進(jìn)而決定將40多個(gè)文件轉(zhuǎn)換為TypeScript,并提交審查。
幸運(yùn)的是,至少我所做的事情通常都是組織內(nèi)部已經(jīng)達(dá)成共識(shí)的改進(jìn)計(jì)劃。然而,我沒有充分認(rèn)識(shí)到更大的全局性問題。我提交審查的所有代碼不僅僅是占用了我的時(shí)間,同時(shí)也占用了隊(duì)友們審查的時(shí)間,并且對(duì)我們團(tuán)隊(duì)來說,合并和部署未預(yù)先規(guī)劃的工作意味著額外的風(fēng)險(xiǎn)。
我當(dāng)時(shí)本可以專注于推動(dòng)團(tuán)隊(duì)業(yè)務(wù)發(fā)展,例如:
* 向我的上級(jí)詢問他們的首要關(guān)注點(diǎn),并集中精力解決這些問題;
* 尋找方法協(xié)助團(tuán)隊(duì)完成任務(wù);
* 處理客戶服務(wù)團(tuán)隊(duì)轉(zhuǎn)交的bug報(bào)告。
那時(shí),我過于專注于自己想做的事情,而忽視了團(tuán)隊(duì)的高級(jí)別目標(biāo)以及如何推動(dòng)這些目標(biāo)向前發(fā)展。
有幾件事讓我意識(shí)到這一點(diǎn)。我的一名指導(dǎo)對(duì)象,另一位高級(jí)工程師,在短短6個(gè)月內(nèi)就獲得了晉升,原因就在于他具有這樣的專注力。
他能夠以極快的速度完成預(yù)期的工作,然后利用剩余時(shí)間來解決團(tuán)隊(duì)及其合作伙伴(如客戶服務(wù)團(tuán)隊(duì))面臨的最大問題。
專注于團(tuán)隊(duì)成果,而非個(gè)人成果。
4.教訓(xùn)4:適應(yīng)你的老板
盡管我們都希望能有一份與上司相處的萬能指南,但實(shí)際上唯一有效的指南是那些教你如何適應(yīng)不同上司的方法。
在我的職業(yè)生涯中,我曾有過五位直屬上司,每次都需要針對(duì)具體情況做出適應(yīng)。
舉例來說,當(dāng)涉及到晉升或職業(yè)發(fā)展規(guī)劃時(shí),有些上司會(huì)非常主動(dòng),明確告訴你需要做什么。而另一些上司可能由于工作繁忙,無法給予你那樣的關(guān)注。在這種情況下,我不得不主動(dòng)為自己制定一份計(jì)劃,并尋求反饋意見。
5.教訓(xùn)5:影響力不在于措辭
長期以來,我一直閱讀關(guān)于影響力和說服力的書籍,試圖找出如何措辭以增強(qiáng)自己的影響力。
我聽到過這樣的建議:“讓人們先答應(yīng)一個(gè)小要求,這樣他們?cè)诿鎸?duì)你的下一個(gè)請(qǐng)求時(shí)就已經(jīng)處于‘愿意答應(yīng)’的心理狀態(tài)?!被蛘?,“使用‘你是否愿意考慮’而不是‘你能否’,因?yàn)槿藗兿M苏J(rèn)同自己思想開明,他們會(huì)把‘愿意考慮’與開放心態(tài)聯(lián)系起來?!?/p>
請(qǐng)注意,這些技巧確實(shí)有所幫助,并且在適當(dāng)?shù)那闆r下我會(huì)運(yùn)用它們。但在影響力方面,它們并不是最有效的手段。
最具影響力的舉動(dòng)其實(shí)是建立人際關(guān)系。
我敢打賭,你不需要絞盡腦汁去思考如何向認(rèn)識(shí)多年的好友提出請(qǐng)求,這是因?yàn)槟銈冎g有著深厚的關(guān)系,朋友了解你的意圖并且愿意提供幫助。
當(dāng)我意識(shí)到這一點(diǎn)后,我把重心從“措辭”轉(zhuǎn)移到了建立關(guān)系上。我開始與隊(duì)友定期進(jìn)行一對(duì)一交流,更多地贊揚(yáng)他們的優(yōu)秀工作,并抓住更多機(jī)會(huì)去支持他們。正是這種方式幫助我提升了影響力。
重點(diǎn)在于建立充滿信任的人際關(guān)系——這樣一來,你甚至無需擔(dān)心如何去提出請(qǐng)求。
6.小結(jié)
長話短說,簡(jiǎn)單總結(jié)一下。
教訓(xùn)1:提出解決方案,而不是問題。重點(diǎn)展示你如何支持需要幫助的團(tuán)隊(duì),即使只是作為顧問。
教訓(xùn)2:整潔的代碼并不是最終目標(biāo)。與團(tuán)隊(duì)有效協(xié)作比確保每一行代碼盡可能干凈更重要。
教訓(xùn)3:團(tuán)隊(duì)成果 > 個(gè)人成果。你花時(shí)間做的事情應(yīng)該與能給團(tuán)隊(duì)帶來最大影響的事情直接相關(guān)。
教訓(xùn)4:適應(yīng)你的上級(jí)。每個(gè)老板的領(lǐng)導(dǎo)風(fēng)格都會(huì)有所不同。了解如何適應(yīng)其風(fēng)格和目標(biāo),以實(shí)現(xiàn)最佳的集體成果。
教訓(xùn)5:影響力與措辭無關(guān)。專注于建立以信任為基礎(chǔ)的關(guān)系。這比你如何選擇你的表達(dá)技巧更重要。
參考鏈接:
https://careercutler.substack.com/p/5-lessons-i-learned-the-hard-way