成為核心程式設計師的一些建議

John Sonmez發表於2015-08-27

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

成為核心程式設計師或技術榜樣既是一個偉大的責任,也是一個很好的職業機遇,但中間的過程卻是艱辛的。

對自己和自己的工作負責,與儘可能地推卸團隊的責任是有著很大區別的。

許多程式設計師做起自己的工作來很是得心應手,卻在晉升到首席開發這個領導職位時,因為對所涉及的額外責任沒有準備而焦頭爛額無所適從。

作為一個有著多年職業經驗的首席開發人員,我想向大家分享一些我認為有用的東西。

你為什麼想成為一名首席開發人員?

在你想要處理成為首席開發人員產生的問題之前,首先你得成為首席開發人員。

而在你成為一個首席開發人員之前,首先你需要回答為什麼。

你為什麼想成為首席開發人員?

這是自我的追求嗎?

是因為你覺得可以賺更多的錢,或者擁有更高的聲望嗎?

還是說,是因為你想關心、領導和激勵大家更好地完成工作?

Depositphotos_11196920_m

你可以是因為自我的追求,也可以是因為想賺更多的錢或者爬上更高的地位,但如果你想獲得成功——並維持這個職位——那麼你的動機應該基於是為了幫助他人,領導他們取得勝利,並激勵他們儘可能地做好工作。

如果你的目標只是金錢和權力,那麼你不但只能是一個糟糕的首席開發人員,而且也不會喜歡這份工作,因為額外的工作和責任會漸漸湮滅你獲得新職位的欣喜。

我這麼說不是為了打擊你,有野心有抱負是沒有錯的,關鍵是要適度,要有正確的方向。

要想成為最有效率的首席開發人員的途徑是讓你的團隊更優秀,然後各種獎勵也會隨之而來。

而將獎勵和聲望放在第一位,只會讓你的團隊受到不良影響。

成為首席開發人員

好,那麼你真的想要成為首席開發人員嗎——即使它可能是一個吃力不討好的工作,甚至可能還沒得加薪?

如果你的答案是肯定的,那麼下面我們就來說一說該怎麼做。

首先,你必須認識到,即使沒有正式授予稱號,你也可以成為首席開發人員。

領導地位不是掛上頭銜就能具備的。

領導者之所以是領導者,是因為有人會追隨他們,而不是因為他們被任命了某個職位。權力可以被授予得到,但領導力卻只能靠自己。你可以是一個沒有領導力的權威,也可以成為未經授權的領導者。事實上,一些最有效的領導者,其實卻並沒有被上級授予任何權力,因為他們並不需要。

按照這種說法,成為一名首席開發人員更多的是要贏得團隊的尊重和信任,這比什麼都重要。

為了成為首席開發人員,你需要證明你不僅具有技術能力,還具備促進關係、鼓勵、構建協同感,以及啟發大家的能力。

一個真正的領導者,無論任何形式,都能夠把大家團結在一起,擰成一股繩朝著共同的方向前行。

下面這些特點是我認為一個好的技術領導人所應該具備的:

  • 負責
  • 充滿動力
  • 擅長技術
  • 謙遜
  • 有堅定的信仰
  • 良好的溝通技巧
  • 可靠

如果你想成為首席開發人員,那麼你需要專注於開發這些特性,還需要提升你的軟技能

而最優秀的首席開發人員不但能指點我們正確的技術方向,還能啟迪我們成長,讓我們更好地完成工作,並且能做到將團隊利益牢記於心,不徇私,能夠讓我們放心信賴。

最成功的領導者能幫助大家更加成功。

如果你想成為首席開發人員,那麼首先你可以想象一下你想要什麼樣的團隊領導者,然後將自己當成那個人去做。

忘記政治博弈,設法為他人給予有用的服務,現在就開始採取行動,不要頤指氣使,也不要自以為是,保持謙遜和真誠的態度來幫助團隊中的其他成員。

成為首席開發人員的意義

如何擔任首席開發人員以及如何成為首席開發人員其實是同一件事,所以,下面的建議不但適用於那些已經成為首席開發人員的登頂者,也適用於那些想要成為首席開發人員的攀登者。

現在我們就來說一說首席開發人員最重要工作

…讓他或她的團隊取得成功。

不光團隊要取得成功,而且儘可能地也要讓團隊中的每一個個體取得成功。

如果你想成為一名優秀的首席開發人員,那麼你的主要工作——也是你最重要的事情——就是儘可能多地讓你身邊人取得成功。

如果你能做到這一點,那麼你就成功了。

但是,該怎麼做呢?

以身作則

Depositphotos_28448455_m

一開始一定要以身作則。

不要指揮別人怎麼做,要做給他看。你希望別人做什麼,那麼首先你自己先做,然後讓他們明白為什麼這樣做是有益的。

不要威逼利誘,也不要爭得面紅耳赤,如果你真的想激勵大家,那麼你先做給大家看,用實際行動和得出的結果證明給大家你的方法是最好的。

如果你想要團隊中的開發人員寫出更好的程式碼,那麼首先你自己的程式碼要寫得更好,並且為此你付出的努力有眼可見。只有這樣,你制訂的編碼標準才能令人信服。因為他們看到你的程式碼,會受到鼓舞,會心甘情願地寫出和你一樣質量和可理解的程式碼。

如果你想要團隊中的開發人員編寫單元測試或實踐測試驅動開發,那麼你最好不但能先做出表率,還能用具體的結果表明你所推薦的方法是最好的。這需要言出必行和腳踏實地,光是傳教式地說你聽到或讀到所謂最好的方式是行不通的。

如果你想要團隊中的開發人員能夠開發他們的技能和個人發展,那麼你最好能夠做個榜樣。你應該比別人花更多的時間用於學習新的東西,與其他人分享你所學到的內容。你應該寫一些部落格分享你的學習進展,並鼓勵大家一起來學習。

問題的關鍵是,如果你希望大家能跟隨你,那麼你必須先帶頭,以身作則。

敢於承擔責任

當領導者犯錯的時候,誰該承擔責任?

對,是領導者。

當團隊成員犯錯的時候,誰該承擔責任?

對,還是領導者。

如果你想成為首席開發人員,那麼你必須敢於承擔責任,不僅要敢於承擔自己的錯誤,還包括團隊其他人犯的錯誤。

我知道這一點很多人打心眼裡是不認同的。我也知道,當我建議大家為別人的失誤承擔責任時,大多數人是嗤之以鼻的,但我依然要實話實說。

如果你不願意承擔責任——我的意思是全部的責任——不願意承擔團隊的失誤,那麼你就不應該成為首席開發人員。

不過這並不意味著你就不能成為一個好的團隊成員。也不能說明你不能為團隊的成功做出貢獻和幫助別人進步。

我只是說,如果你想成為首席開發人員,那麼你必須做好準備——心甘情願地——承擔團隊失敗的責任。

一個好的領導者會欣然接受這個責任。

一個好的領導者敢於一力承擔責任,保護團隊免受指責,這樣團隊成員就可以自由地冒險,這樣團隊成員就不會浪費多餘的時間為別人擦屁股。

就像我之前說的,領導職位並不適合每一個人。

哦,現在又多了一個承擔責任。

猜猜團隊的成功會歸功於誰?

領導者?

No。這是一種約定俗成的單邊協議。

是的,領導者是團隊成功的主要負責人,但他或她從不將功勞佔為己有。

相反,一個好的領導者會將成功歸功於團隊。

還記得我有說過成為首席開發人員是一個吃力不討好的工作吧?

促進交流

一個良好的首席開發人員不僅要為團隊的行為負責,而且還應該充當與其他團隊、管理人員、業務人員及其他任何需要進行互動的人的代言人。

這並不意味著,首席開發人員就是唯一一個與團隊外的人交流的人,但首席開發人員往往是負責傳達團隊的願景和想法給他人,特別是非技術人員的人。

作為首席開發人員,你得能清楚有效地與非技術人員交流技術解決方案,同時避免衝突。

Young brothers talking with tin can telephone on grunge backgrou

這不是一件容易的事,特別是當你要說的是壞訊息的時候。人們往往喜歡遷怒於報信者。

與“業務”進行溝通的最佳方式是,首先確保自己能夠清楚地瞭解正在構建的軟體的具體進展,以及正面臨的技術挑戰。

你越明白這是怎麼回事,就越容易傳達給別人。

這意味著,你需要不斷地去了解大家都在做什麼,以及面臨著什麼樣的挑戰,並且在解說的時候你還需要轉化成非技術術語。

這需要練習,但卻是首席開發人員必備的技能,因為大部分正在構建的軟體需要與利益相關者和客戶進行溝通。

特別是當你需要指出為什麼“業務”的某個點子不可行或不是手頭問題的正解時,情況變得更加困難了。

人是很容易屈服於權威之下的——然後要麼承諾交付不了的東西,要麼同意一個不認同的解決方案——當然也有人敢於大膽反對那些站在你技術優勢對面的任何人,但你得堅持立場無所畏懼。

優秀的首席開發人員能夠理解業務需求,能夠與決定或立場背後的非技術推理產生共鳴,然後提出一個明確,理性的論點,以促成提議的解決方案。

優秀的首席開發人員知道什麼時候可以妥協——可能不是最優的,但會避免不必要的衝突,也知道什麼時候應該堅定立場,為了不讓團隊不堪重負或不承諾那些不能交付的任務。

優秀的首席開發人員能促進團隊和其他部門間的交流。

幫助大家做到最好

首席開發人員對團隊造成的最有利的影響是,他們的存在能夠提高其他開發人員的執行水平。

如果你想成為一個好的首席開發人員,那麼你不僅需要不斷促進自己的個人發展,還必須激勵其他人和你一起進步。

作為首席開發人員,你應該每天花時間學習和閱讀最新的技術和趨勢,以便於儘可能地跟上技術技能當前的發展腳步。你應該確保你對於你的團隊正在使用的技術理解得最為透徹——如果可能的話——這樣你就可以成為你的團隊的可靠支援,你就可以自信地引導他們往更好的技術方向前進。

同樣地,你應該鼓勵你的團隊成員開發和提升他們自己的技能。你應該給他們資源來做到這一點。你應該分享你正在學習的東西,並指引團隊成員以幫助鼓勵他們專業化地成長。

你應該盡一切可能來確保你的團隊具備成功所需的要素,同時你還應該表現出你就自己而言非常關心他們個人的成功和成長。

你的關心會引起他們的重視,更高水平地完成工作任務的可能性也會更大。

成為一個首席開發人員並不是一件容易的事

我在這篇文章的開頭就提到,你必須得問問自己你是否真的知道成為首席開發人員意味著什麼,或者你是否真的想成為一名首席開發人員。

這工作不容易,甚至可能是吃力不討好的,它可以涉及到很多的犧牲,但如果你關心其他人的成功,並願意投入時間和精力來幫助大家做到這一點,那麼你有潛力成為一名偉大的首席開發人員。

但是,如果你只是追求更高的職位,或者是可以指揮別人怎麼做的權力,或者如果你的動機完全是基於成為首席開發人員之後的加薪,那麼你會發現自己在這個位置上步履維艱。

所以,好好地想一想,你是否真的想成為首席開發人員,如果你已經下定決定的話,那麼要謙虛,要敢於承擔責任,要盡你的力量使你的團隊——以及團隊成員——儘可能地成功。

譯文連結:http://www.codeceo.com/article/tips-for-leader-programmer.html
英文原文:Some Advice On Becoming a Lead Developer
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章