成為首席軟體工程師或技術榜樣既是乙個偉大的責任,也是乙個很好的職業機遇,但中間的過程卻是艱辛的。
對自己和自己的工作負責,與盡可能地推卸團隊的責任是有著很大區別的。
許多軟體開發人員做起自己的工作來很是得心應手,卻在晉公升到首席開發這個領導職位時,因為對所涉及的額外責任沒有準備而焦頭爛額無所適從。
作為乙個有著多年職業經驗的首席軟體工程師,我想向大家分享一些我認為有用的東西。
你為什麼想成為一名首席軟體工程師?
在你想要處理成為首席軟體工程師產生的問題之前,首先你得成為首席軟體工程師。
而在你成為乙個首席軟體工程師之前,首先你需要回答為什麼。
你為什麼想成為首席軟體工程師?
這是自我的追求嗎?
是因為你覺得可以賺更多的錢,或者擁有更高的聲望嗎?
還是說,是因為你想關心、領導和激勵大家更好地完成工作?
你可以是因為自我的追求,也可以是因為想賺更多的錢或者爬上更高的地位,但如果你想獲得成功——並維持這個職位——那麼你的動機應該基於是為了幫助他人,領導他們取得勝利,並激勵他們盡可能地做好工作。
如果你的目標只是金錢和權力,那麼你不但只能是乙個糟糕的首席軟體工程師,而且也不會喜歡這份工作,因為額外的工作和責任會漸漸湮滅你獲得新職位的欣喜。
我這麼說不是為了打擊你,有野心有抱負是沒有錯的,關鍵是要適度,要有正確的方向。
要想成為最有效率的首席軟體工程師的途徑是讓你的團隊更優秀,然後各種獎勵也會隨之而來。
而將獎勵和聲望放在第一位,只會讓你的團隊受到不良影響。
成為首席軟體工程師
好,那麼你真的想要成為首席軟體工程師嗎——即使它可能是乙個吃力不討好的工作,甚至可能還沒得加薪?
如果你的答案是肯定的,那麼下面我們就來說一說該怎麼做。
首先,你必須認識到,即使沒有正式授予稱號,你也可以成為首席軟體工程師。
領導地位不是掛上頭銜就能具備的。
leader之所以是leader,是因為有人會追隨他們,而不是因為他們被任命了某個職位。權力可以被授予得到,但領導力卻只能靠自己。你可以是乙個沒有領導力的權威,也可以成為未經授權的leader。事實上,一些最有效的leader,其實卻並沒有被上級授予任何權力,因為他們並不需要。
按照這種說法,成為一名首席軟體工程師更多的是要贏得團隊的尊重和信任,這比什麼都重要。
為了成為首席軟體工程師,你需要證明你不僅具有技術能力,還具備促進關係、鼓勵、構建協同感,以及啟發大家的能力。
乙個真正的leader,無論任何形式,都能夠把大家團結在一起,擰成一股繩朝著共同的方向前行。
下面這些特點是我認為乙個好的技術領導人所應該具備的:
如果你想成為首席軟體工程師,那麼你需要專注於開發這些特性,還需要提公升你的軟技能。
而最優秀的首席軟體工程師不但能指點我們正確的技術方向,還能啟迪我們成長,讓我們更好地完成工作,並且能做到將團隊利益牢記於心,不徇私,能夠讓我們放心信賴。
最成功的leader能幫助大家更加成功。
如果你想成為首席軟體工程師,那麼首先你可以想象一下你想要什麼樣的團隊leader,然後將自己當成那個人去做。
忘記政治博弈,設法為他人給予有用的服務,現在就開始採取行動,不要頤指氣使,也不要自以為是,保持謙遜和真誠的態度來幫助團隊中的其他成員。
成為首席軟體工程師的意義
如何擔任首席軟體工程師以及如何成為首席軟體工程師其實是同一件事,所以,下面的建議不但適用於那些已經成為首席軟體工程師的登頂者,也適用於那些想要成為首席軟體工程師的攀登者。
現在我們就來說一說首席軟體工程師最重要工作…
…讓他或她的團隊取得成功。
不光團隊要取得成功,而且盡可能地也要讓團隊中的每乙個個體取得成功。
如果你想成為一名優秀的首席軟體工程師,那麼你的主要工作——也是你最重要的事情——就是盡可能多地讓你身邊人取得成功。
如果你能做到這一點,那麼你就成功了。
但是,該怎麼做呢?
以身作則
一開始一定要以身作則。
不要指揮別人怎麼做,要做給他看。你希望別人做什麼,那麼首先你自己先做,然後讓他們明白為什麼這樣做是有益的。
不要威逼利誘,也不要爭得面紅耳赤,如果你真的想激勵大家,那麼你先做給大家看,用實際行動和得出的結果證明給大家你的方法是最好的。
如果你想要團隊中的開發人員寫出更好的程式,那麼首先你自己的程式要寫得更好,並且為此你付出的努力有眼可見。只有這樣,你制訂的編碼標準才能令人信服。因為他們看到你的程式,會受到鼓舞,會心甘情願地寫出和你一樣質量和可理解的程式。
如果你想要團隊中的開發人員編寫單元測試或實踐測試驅動開發,那麼你最好不但能先做出表率,還能用具體的結果表明你所推薦的方法是最好的。這需要言出必行和腳踏實地,光是傳教式地說你聽到或讀到所謂最好的方式是行不通的。
如果你想要團隊中的開發人員能夠開發他們的技能和個人發展,那麼你最好能夠做個榜樣。你應該比別人花更多的時間用於學習新的東西,與其他人分享你所學到的內容。你應該寫一些部落格分享你的學習進展,並鼓勵大家一起來學習。
問題的關鍵是,如果你希望大家能跟隨你,那麼你必須先帶頭,以身作則。
敢於承擔責任
當leader犯錯的時候,誰該承擔責任?
對,是leader。
當團隊成員犯錯的時候,誰該承擔責任?
對,還是leader。
如果你想成為首席軟體工程師,那麼你必須敢於承擔責任,不僅要敢於承擔自己的錯誤,還包括團隊其他人犯的錯誤。
我知道這一點很多人打心眼裡是不認同的。我也知道,當我建議大家為別人的失誤承擔責任時,大多數人是嗤之以鼻的,但我依然要實話實說。
如果你不願意承擔責任——我的意思是全部的責任——不願意承擔團隊的失誤,那麼你就不應該成為首席軟體工程師。不過這並不意味著你就不能成為乙個好的團隊成員。也不能說明你不能為團隊的成功做出貢獻和幫助別人進步。
我只是說,如果你想成為首席軟體工程師,那麼你必須做好準備——心甘情願地——承擔團隊失敗的責任。
乙個好的leader會欣然接受這個責任。
乙個好的leader敢於一力承擔責任,保護團隊免受指責,這樣團隊成員就可以自由地冒險,這樣團隊成員就不會浪費多餘的時間為別人擦屁股。
就像我之前說的,領導職位並不適合每乙個人。
哦,現在又多了乙個承擔責任。
猜猜團隊的成功會歸功於誰?
leader?
no。這是一種約定俗成的單邊協議。
是的,leader是團隊成功的主要負責人,但他或她從不將功勞占為己有。
相反,乙個好的leader會將成功歸功於團隊。
還記得我有說過成為首席軟體工程師是乙個吃力不討好的工作吧?
促進交流
乙個良好的首席軟體工程師不僅要為團隊的行為負責,而且還應該充當與其他團隊、管理人員、業務人員及其他任何需要進行互動的人的代言人。
這並不意味著,首席軟體工程師就是唯一乙個與團隊外的人交流的人,但首席軟體工程師往往是負責傳達團隊的願景和想法給他人,特別是非技術人員的人。
作為首席軟體工程師,你得能清楚有效地與非技術人員交流技術解決方案,同時避免衝突。
這不是一件容易的事,特別是當你要說的是壞訊息的時候。人們往往喜歡遷怒於報信者。
與「業務」進行溝通的最佳方式是,首先確保自己能夠清楚地了解正在構建的軟體的具體進展,以及正面臨的技術挑戰。
你越明白這是怎麼回事,就越容易傳達給別人。
這意味著,你需要不斷地去了解大家都在做什麼,以及面臨著什麼樣的挑戰,並且在解說的時候你還需要轉化成非技術術語。
這需要練習,但卻是首席軟體工程師必備的技能,因為大部分正在構建的軟體需要與利益相關者和客戶進行溝通。
特別是當你需要指出為什麼「業務」的某個點子不可行或不是手頭問題的正解時,情況變得更加困難了。
人是很容易屈服於權威之下的——然後要麼承諾交付不了的東西,要麼同意乙個不認同的解決方案——當然也有人敢於大膽反對那些站在你技術優勢對面的任何人,但你得堅持立場無所畏懼。
優秀的首席軟體工程師能夠理解業務需求,能夠與決定或立場背後的非技術推理產生共鳴,然後提出乙個明確,理性的論點,以促成提議的解決方案。
優秀的首席軟體工程師知道什麼時候可以妥協——可能不是最優的,但會避免不必要的衝突,也知道什麼時候應該堅定立場,為了不讓團隊不堪重負或不承諾那些不能交付的任務。
優秀的首席軟體工程師能促進團隊和其他部門間的交流。
幫助大家做到最好
首席軟體工程師對團隊造成的最有利的影響是,他們的存在能夠提高其他開發人員的執行水平。
如果你想成為乙個好的首席軟體工程師,那麼你不僅需要不斷促進自己的個人發展,還必須激勵其他人和你一起進步。
作為首席軟體工程師,你應該每天花時間學習和閱讀最新的技術和趨勢,以便於盡可能地跟上技術技能當前的發展腳步。你應該確保你對於你的團隊正在使用的技術理解得最為透徹——如果可能的話——這樣你就可以成為你的團隊的可靠支援,你就可以自信地引導他們往更好的技術方向前進。
同樣地,你應該鼓勵你的團隊成員開發和提公升他們自己的技能。你應該給他們資源來做到這一點。你應該分享你正在學習的東西,並指引團隊成員以幫助鼓勵他們專業化地成長。
你應該盡一切可能來確保你的團隊具備成功所需的要素,同時你還應該表現出你就自己而言非常關心他們個人的成功和成長。
你的關心會引起他們的重視,更高水平地完成工作任務的可能性也會更大。
成為乙個首席軟體工程師並不是一件容易的事
我在這篇文章的開頭就提到,你必須得問問自己你是否真的知道成為首席軟體工程師意味著什麼,或者你是否真的想成為一名首席軟體工程師。
這工作不容易,甚至可能是吃力不討好的,它可以涉及到很多的犧牲,但如果你關心其他人的成功,並願意投入時間和精力來幫助大家做到這一點,那麼你有潛力成為一名偉大的首席軟體工程師。
但是,如果你只是追求更高的職位,或者是可以指揮別人怎麼做的權力,或者如果你的動機完全是基於成為首席軟體工程師之後的加薪,那麼你會發現自己在這個位置上步履維艱。
所以,好好地想一想,你是否真的想成為首席軟體工程師,如果你已經下定決定的話,那麼要謙虛,要敢於承擔責任,要盡你的力量使你的團隊——以及團隊成員——盡可能地成功。
**:
如何成為Google軟體工程師?
原文 http www.google.com.hk intl zh cn jobs lifeatgoogle meet 招聘的流程?簡歷篩選 訪談 現場面試 offer發放 面試包括哪些內容?如何對申請人的工程技能進行評估?我們會根據以下四個方面來進行評估 如何準備面試?認識google員工?和他聊...
如何成為明星軟體工程師
如今,每家公司都似乎成了科技公司。從軟體創業公司到投機性投資公司 製藥巨頭和 巨頭,它們都越來越多地加入到軟體業務行列.質量不僅成為了乙個必需品,更成為了乙個競爭優勢。因為眾多公司圍繞軟體而競爭,開發軟體的人 軟體工程師正顯得越發重要。但是,你該如何發現那種百裡挑一的程式設計師呢 1.盡可能找乙個這...
怎樣成為優秀的軟體工程師
怎樣成為優秀的軟體工程師 隨便說說我的一些工作中的想法 1 遇到問題,舉一反三.遇到一問題後,要徹底搞清楚最後解決問題的原理和邏輯,不要迷迷糊糊的修改好了就完事。並且舉一反三的搞清楚類似的相關問題。2 測人人員提出的問題,不管大小,都認真思考其合理性,並反思自己為什麼開始時候怎麼就沒有 想到會出這樣...