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