程序員如何提高自己的競爭力和領導力?

小亦樂樂


很多本科同學,特別是研究生同學。在畢業10年後,就已經到了34、35歲左右了。也是前段時間網上廣泛討論的所謂34+歲現象。

其實,年齡並不是問題的真正原因。真正的原因還是在於自身“競爭力”是否符合這個年齡所應該具備的。

到了這個年齡的人,往往已經不是“個人貢獻者”了,而是“團隊貢獻者”。團隊貢獻者可能是帶團隊的TL,也可能是個架構師,在技術決策上具有團隊影響力和話語權。

那麼,為什麼這些人能管理團隊或者有影響力呢?

從公司的經營視角看,一個管理團隊的人,他必須為業務的成功負責。說個大白話,一個TL管了N個人,他至少要能保證大家輸出所產生的價值,至少要高於這個團隊的工資、獎金、五險一金、OPEX、CAPEX等等吧。這個TL為了大家輸出得有價值,他是不是需要能:

  • 能對所負責領域的業務特點、發展趨勢、友商競爭分析有很好的洞察?能知道這個業務領域的客戶是誰?他們的需求是什麼?他們的痛點是什麼?所以,這個TL應該需要學習《諮詢的奧秘》、《探索需求》、《系統化思維導論》。對於技術型的TL,還應該瞭解《成為技術領導者:掌握全面解決問題的方法》。

  • 服務於特定領域的客戶,我們需要能瞭解我們的客戶企業架構、業務知識。要了解清楚規劃的產品、服務,什麼才是客戶所需要的。那麼,從理論上,我們是否應該學習一些TOGAF、NGOSS、ITIL等業務理論以及業務知識?

  • 作為TL,是否有必要能將自己對於市場的洞察轉換成業務規劃,並能向自己的老闆(或者投資人)說清楚、講明白?並爭取到老闆的同意,包括資金、人力資源等。對於,能否把事情講明白,我們可能需要學習《金字塔原理》,並能非常清晰、有邏輯性地進行表達與溝通。當然,有些業務發展的事不一定特別有邏輯,是需要摸索、嘗試,那麼你是否能將一個不確定的領域說服老闆並獲得支持,我們又需要什麼?《博弈論》、《影響力》等。

  • 獲得老闆支持後,就需要開始帶著兄弟們幹活了。作為帶頭人,你看我們是否需要能將業務趨勢、客戶痛點進行業務建模好讓團隊的PD、技術都能理解?在做業務進一步深入分析,可能就需要學習《領域驅動設計:軟件核心複雜性應對之道》、《實現領域驅動設計》、《企業應用架構模式》、《恰如其分的軟件架構》等等。

  • 做完業務設計後,開始要帶著團隊做技術方案設計、接口設計以及編碼實現等。這個過程,TL又需要具備軟件項目管理的能力。無論是《PMBOK指南》,還是《敏捷軟件開發》、《人月神話》、《程序開發心理學》,相信總歸還是會有點幫助的。

  • 對於一些有國際化要求的公司,還需要再學習英語吧!

  • 嗯,還需要有個好的身體,還需要經常鍛鍊,學習科學的健身吧(說起來自己臉紅)。至少我明白了一個道理,以前我都是跟自己說,等這段時間過了,閒下來去鍛鍊一下。其實,我發現,越是忙的時候,越需要鍛鍊身體!

  • 另外,在這10年內,比較關鍵的是——你還經歷過什麼有挑戰的業務、技術、產品、平臺等方面的成功與失敗經驗?在這些經歷裡,你可能會遇到這些困難與挑戰:團隊磨合的挑戰、技術方案上的爭執、平臺優先 or 業務優先的博弈、低落的團隊氛圍、個人的低谷等等。這些困難與挑戰,你是退縮了?還是有成長?在帶團隊時,再次面臨這些挑戰時,這時你是否有解或者有勇氣了?


發現沒有?畢業10年後,作為一個團隊貢獻者,你可能需要具備這些能力,並且還遠遠不止。而且,更可悲的時,當畢業10年後,突然發現自己不具備這個能力時(比如晉升失敗時發現了),這些能力GAP就不再是2到3年就能追得上的了。我見過一些有準備的同學,他們給自己的目標是在畢業第7年就要具備這些能力,他有嚴格的學習計劃、實踐計劃、甚至是冒險的創業經歷。當他到第10年這個點時,這些高階技能很可能已經有3年的實踐經驗了。

如果我們沒有做好準備,10年後,如何和這批人競爭?這些軟、硬知識,從十年這個時間刻度倒排,學習計劃、實踐計劃的執行還是很緊張的。所以,從現在開始給自己制定一個嚴格的學習計劃、嚴格執行,多實踐吧!——毗盧


阿里技術


通過自覺學習提高競爭力,學習是程序員必備的素養,從做程序員的第一天就應認識到,向他人學習是一塊,自學更重要,提高領導力需從自我反省開始,不段提升自己的同時,能影響別人的思維與看法,指導別人的行動,提高自己交流能力,有創新想法,有大的胸懷,不計個人小利,普惠手下,這樣你領導的兄弟執行力就高,你的領導力必強!


太陽下的投資人


程序員如何提升領導力?


1.以任命產生領導力是不可取的

帶隊伍和當小兵是完全不同的,技術領導需要組織、領導、激勵其他人為目標而工作。然而其他人會不會聽你的,會不會陽奉陰違,會不會積極主動地幹活,當別人與自己意見分歧時怎麼辦,怎麼樣讓別人接受自己分配的任務,怎麼樣讓別人接受你為其設定的目標……這些都是問題,需要有影響力和領導力才能玩兒下去。


然而新任的技術領導剛到經理崗位,對領導力可能還沒有體會,很可能不知道怎麼做,會錯誤的用行政權力來強硬地要求(命令)別人做某些事。這是一種誤區,任命可以賦予一個技術領導行政權力,但不能產生領導力。來自權力的壓力可能短時間內貌似有效,但實際上會嚴重損害一個經理的領導力和影響力,假如一個經理頻頻採用官大一級壓死人的策略來推動項目和項目中的人往前進,往往最後會適得其反,招致大家的厭煩和反饋,在團隊中失去威信,所以不可取。

2.不要總想親自下場

因技術而晉升的技術領導,通常在技術方面有較強的能力,甚至是出類拔萃。這種技術能力的優勢在作為普通員工時可能會給一個人帶來顯而易見的影響力,然而當你成為經理後,有時反倒可能成為他做好領導工作的障礙。


因為你可能會經常拿自己的技術水平衡量團隊的其他人,覺得這個任務張三很難處理好,那個任務李四鐵定犯錯誤,於是不放心把事情交給別人來做,或者交給別人做了又因為看到要出錯,忍不住自己伸手去做,把分給團隊成員的任務再拿回來自己做。


當一個技術領導因為擔心下屬會出錯或不能按自己預期完成任務而收回這個任務自己做時,要麼會讓下屬自己覺得自己無能(或者讓下屬猜測領導認為自己無能),要麼會讓下屬覺得這個領導越俎代庖不干他該乾的事兒,這就會產生嚴重的不良影響,不利於團隊成員自己成長自己解決問題。同時,這位技術領導也會因為過分關注技術細節而忽略其他的組織、領導工作,導致只見樹木不見森林,嚴重影響整個團隊的效率和生產率,這樣也不可取。


3. 擔心丟掉技術失去競爭力

有些技術領導剛剛開始帶團隊時,往往還停留在過去的角色裡,認為技術是唯一的立身之本,擔心放棄了技術細節後,自己會喪失競爭力,會貶值。比如會擔心萬一自己從這個經理崗位離開,就可能又找不到管理崗位的工作,又因為生疏了技術而找不到技術工作。


所以,很容易陷入糾結中,一方面想提升整個團隊的工作效率而不得不做很多的組織、激勵、領導、協調等工作,花費大量精力;另一方面,這些非技術方面的工作會佔用他們大部分精力,導致無暇深研技術而產生焦慮。


其實,躲開以上三個問題就可以提高程序員的領導力。

此時的你更重要的是視野。你可能對技術細節瞭解得少了,但對技術方案選擇、技術類別、技術的影響力等可能瞭解得更多,會形成更為廣闊的視野,這足以彌補你在技術深度上的欠缺。



而且,其實你之前的達到的技術深度也仍然存在,甚至會發酵,會反過來滋養你的技術視野,因為如果你之前在技術上達到了一定深度,一定在學習上摸索到了適合你的規律,這種學習模式,會幫助你更快的瞭解更多技術,讓你從廣度上來豐富自己,這雖然不能保證讓你在技術方面更有競爭力,但也會幫助你將技術競爭力維持在某個水平。


最重要的,除了技術,你在管理崗位上的鍛鍊,將來一定會帶給你更深層次的變化:要麼你培育了組織能力領導能力;要麼你認識到自己更適合做什麼,對自己的才幹和能力邊界有更為清晰的認知,而一旦有了這種認知,再做其他事就會得心順手——因為,你會更容易找到自己喜歡做的事情並帶著熱忱義無反顧地投入進去。


程序員如何提高競爭力?


以下是我總結的五個方面,從上到下都是個有序的漸進過程,缺一不可!


1. 通過分析目前的現狀快速定位自我

什麼是分析現狀?這裡的分析現狀就是指充分明白目前自己在公司的位置,整個市場中的價值,自己的技術程度後。


當我們發現我們的技術落後了,待遇低於市場了,或者職級沒得到發展,都可以視為對自己現狀的分析認知,在這種先前條件下才能去定位自己。


這種定位手段可以通過社群社交,同行交流,博客技術論壇介紹的東西對比,更粗暴的方式就是面試,這樣才能更好的完全的認識自己的不足,自己的短板,才能讓自己掌握哪些方面需要去學習,從而得到有效的提高。


從宏觀層面講,包括你的職級,你所做事情的影響力。如果你是領導,那麼你有一定的主導權,你就應該讓這種領導效益做到最大化,提高自身效率,提高團隊協作,儘可能的讓下屬也得到提高,只有個人和團隊一起發展,才證明你在發展。


如果事實不是這樣,那麼你確實是需要自我反省,自我認知了,不是做到領導就能覺得自己很厲害,相反你也要和其他領導做比較,是不是他的團隊,人員更穩定,產出多,口碑好呢?


如果你非領導,只是一個核心開發,那麼你也必須做到你負責的東西,如果你負責的這個框架,那麼應該讓這個框架做到穩定,易拓展,方便調用,甚至更多!


如果你開發的這個模塊不夠好用,甚至造成了其它新增的問題,那麼你也要重新自我認識,技術高低並不是說你能寫出多牛逼的框架和項目,而是你能做到每一件事完美解決。


從微觀層面講,相對宏觀更細化,如果是領導,你自己是否做到了一個流程中任何環節的把關,推進和收尾總結,如果你有任何一點覺得交給下屬辦不好的事情,甚至覺得這個人無用。


那麼你就應該摒棄這個可怕的思想,別人不是給你打工,你也是在給自己打工,如果下屬能完全解決你交代的問題,那麼你是不是該下崗了。


作為領導,情緒控制力,溝通能力,領導力,協作力,和為人口碑,都是影響你上升的關鍵因素,如果有不夠好的地方,那麼你已經定位到自己了。


作為普通的開發,新的框架你是否瞭解,項目現存的業務模式你是否熟悉,交流總結你是否做到,技術文檔有去編寫,其他技術方向有去拓展等,都能對比出自己不足的地方,這種通過對比的方法論是提高自我審視的最好辦法。


2. 拓展自己的知識網絡拓撲圖,持續提高知識

上面我們通過通過分析目前的現狀,可以快速定位出自我 。當你更好的認清自己的時候,你是時候去改變了,如果你缺乏溝通,你可以加強交流,試著多去參加群體活動。


如果你缺乏對新技術的掌握,可以去瀏覽各種論壇、官微、博客等涉取,從而彌自己的不足。如果你缺乏對基礎知識的掌握,你可以去紮實基礎,從而讓自己的水平提高。


很多時候很可能我們掌握了項目中的技能之外,就懶得去學習其他技術,這種觀念不能要,永遠不能將對比參考點放在自己的項目組的成員中,一定要放到同行業的競爭者中,這樣你才能知道自己需要去學習哪些技術。


就拿我自己做Android程序員來說,RxJava、OKhttp 必須要掌握,插件,熱更新技術、混合開發技術需要掌握,現在參與小程序開發web前端、交互設計也都要懂,學過計算機網絡的人都瞭解網絡拓撲的概念,上面這些都是我們需要拓展的知識網絡拓撲圖。


掌握更多的技能不代表讓你去做全棧工程師,而是面對機會時你有更多的選擇!目前的 Kotlin、JS, 甚至人工智能,也應該去關注!


3. 提高全量思維,不放過任何一個成長的機會

在平時的工作中,你需要放開眼界,持續提高並全面發展,甚至每一個成長的機會。舉個例子:

  • 參加公司每一次對你有用的技術分享,從而學習到他人總結的知識。

  • 儘可能多地參與公司的項目,從而達到量的改變,這樣在領導眼裡對於提升你來說就有更高更多的法碼,從小的方面來說你可以熟悉更多的業務,掌握更多的技能。

  • 儘量去做框架和底層,杜絕一直以業務開發和上層開發為主。這樣你才能在團隊中脫穎而出,才能得到好的認可。


上面三點都是對內層面,相反多外層面來說,你需要時刻關注行業動態,若有更好的平臺,更好的機會,不能抱著害怕甚至排斥的態度,應該勇於去挑戰,去嘗試。


上面的每一個做法,都有提高待遇的可能,待遇就是每一個細節的積累,最後沉澱出果實。你的綜合能力提高了,薪資待遇也自然而然的提高。


4. 養成規劃職業生涯意識,關注職業素養

程序員一定要養成職業規劃意識,千萬不能有我牛逼我就跳槽,不爽就跑路的思想,從我這幾年的開發觀察來看,除了學歷的篩選,加上技術的參考,更多的公司慢慢考核候選人的穩定程度。


不跳槽不能說一定是敬業,跳槽也不能說這個人就一定不忠心,在同樣的水平之下,企業更願意找穩定的人,我也曾面過很多人,我也會衡量面試者的穩定程度,畢竟穩定程度也能反映出他處事的能力。


職業規劃另一個含義是每一個階段有一定的 level 提高,從初級、中級、高級,架構師、總監、CTO 都是一次飛躍,無論你是對內,還是對外,長時間無法提高,那麼也該去關注職業規劃了。


很多人不明白,在一家公司服務時間短,會認為不靠譜,服務時間長,但是沒任何發展會被認為你不夠聰明,無論哪一種,目標企業都不會喜歡。


5. 機遇和運氣很重要

善於抓住機遇,有助於自己成功,上面第三點說的只是小的機會,機遇是一個大的質的改變,這個就靠自己的眼界,觀察去發現了,大佬們無非就是加上自己的努力,長時間的積累,靠一個機遇稀裡糊塗的成功了。


由於這個是非必須因素,這裡我也不打算用過多篇幅去說明。只要你知道這個有這麼個理就行了。內容有點多,但確實很有用,希望能幫到你。


突樣未成年


上班時間007


分享到:


相關文章: