前言
花了一周多的時間閱讀完了《程序員成長課》,以下是我們在閱讀《程序員成長課》記錄下來的筆記,有時候發現一個人學習比較枯燥,但幸運的是,我有一幫朋友和我一起學習,一起成長。
最后歡迎大家加入知識星球“大前端交流”,我在星球內開展了讀書打卡、健身打卡活動,加入我們一起見證屬于我們的成長之旅。
如何選擇技術方向
技術成長三階段模型
我們在一個專業領域內的成長,基本上都會經歷三個階段:
- 專項能力的提升
- 技能體系的構建
- 融合創新
1、初級階段:專項能力的提升
必須先具備某些基礎能力,比如從事軟件開發工作,要學會某種語言、某個IDE、某種技術框架。
讓自己能夠迅速搞定一些別人安排給你的事情,體現出你的價值。
2、中級階段:技能體系的構建
擁有一組技能,圍繞某個方向構建了自己的知識圖譜,能夠用自己的方式來解決問題。
3、融合創新
具有豐富的實踐經驗,具備了T型知識結構,形成了自己的思維框架和解決問題的框架,能夠融合不同領域的知識,組合各種資源,創造性地解決各種問題。
進入這個階段非常重要的一種標志就是,你遇到問題,不再從下而上去思考(即從技術實現細節來考慮問題好不好實現、拿技術去裁剪問題或重定義問題),而是從實現細節跳脫出來,站到更高的層面,自頂向下去思考、去分析,先運用框架、邏輯去分析真正的問題是什么、問題的目的、問題的現狀、如何去解決。搞明白這些之后,你才會沉降到技術層面去考慮實現的選擇,而且實現時,你也不會拘泥于某種技術,而是什么技術合適就用什么技術。
選擇技術方向都要考慮哪些因素
1、就業機會
考慮的是哪種技術更容易就業,需要結合特定地區、特定行業來看,因為你找工作是面向地區和行業的。
這中間又有兩種典型的策略,熱門的和冷門的。
熱門和冷門是相對的,根據開發者多少、市場需求而定。
2、自我感覺的難易程度
難易程度與人相關,所以最好的方法,就是把你感興趣的語言,都學學試試,可能每種語言花上一到兩個星期,你就可以做出判斷。
3、興趣
很多人做開發可能是出于某種興趣。
4、薪水高低
大多數人選擇技術的出發點是工作和未來發展前景,而選擇工作時一定會把薪水作為參考因素,而且是非常重要的因素。所以我們在選擇技術時,也可以考慮某種技術對應職位的薪水高低。
5、技術在將來的發展前景
選擇技術時存在兩種考慮:一種是選擇穩定的、經典的技術,一種是卡位將來的市場缺口,選擇將來可能需要用到的技術。
回顧歷史,經典技術都是從新技術發展來的,展望未來,一定也有一些現在的新技術會發展成將來的經典技術。如果你能抓住它,就可以享受它帶來的技術紅利。
要抓住可能成為經典技術或熱門技術的新技術,就要應用卡位策略。
卡位策略是指看到某種技術會在未來具有稀缺性,非常有價值,選擇提前介入,讓自己在未來具備競爭優勢。
運用卡位策略時,有兩種方式。
一種卡位方式是根據市場需求和未來預期。
還有一種卡位方式,是根據技術本身的發展程度。
6、你接觸的人的推薦
我們是否選擇某種技術,和我們看到的可能性有非常大的關系。只有看到它,它才會進入你的選擇范圍,如果你看不到它,它再牛,對你也沒意義。
7、相近性
當我們已經掌握了一些技術,要學習新技術時,就可以根據一種技術是否和自己已經掌握的技術比較接近來選擇。相近的技術,學起來會更容易上手。
8、互補性
和相近性類似,互補性也常用在拓展我們技術能力的情景下。它指的是,有一些技術可以和你已經掌握的技術互相補充,組合在一起,形成更完整、更系統的技術圖譜,給你帶來更大的競爭力。
9、團隊的技術圖譜
我們所在開發團隊的技術圖譜,也可能會影響我們的選擇。
入行時怎么選擇技術方向
為了明確自己的求職目標,可以問問自己下面的問題:
- 在哪個城市工作
- 想在哪些行業、領域發展
- 想去什么樣的公司
- 想做什么產品
當你能夠勾畫出工作目標的大概輪廓時,對應的技術方向就會浮現出來。
當你可能在想做開發時并沒有明確的職業目標,此時你考慮的是這些因素:
- 就業機會
- 薪水高低
- 難易程度
- 他人推薦
- 興趣
構建技能樹時選擇技術方向
當我們過了專項能力提升的初級階段之后,就應該開始構建自己的技能體系了。在為搭建技能樹而選擇技術時,通常考慮下面兩個原則:
- 相近原則
- 互補原則
1、相近原則
相近原則指和你當前所用語言、技術框架比較接近的其他語言和框架。
2、互補原則
互補原則指那些組合在一起完成特定任務的技術。
技術轉型時的方向選擇
做了幾年開發工作之后,你很可能會面臨技術轉型。通常有兩種情況:
- 有新技術、新市場出現,你想試試
- 你掌握的技術的應用場景萎縮,前景黯淡,你想跳出來
有經驗的開發者做技術轉型時,通常有三種情況。
- 在原有技術的基礎上做關聯轉型
- 拋棄原來所用技術
- 卡位,學習將來稀缺的新技術是非常不錯的選擇
方案選型
當你構建了自己的知識圖譜、能夠勝任比較復雜的工作后,在團隊中就會越來越重要,就有機會參與到新項目、新產品、新服務的方案選型中來。
做方案選型時,目標是得出現實可行、成本可接受的方案,需要綜合考慮各種因素。
1、某種技術適合解決某類問題
很多開發者容易犯“拿著一把錘子看什么都是釘子”的錯誤,用自己熟練的語言、技術來解決一切問題。
我們在為新產品、新服務、新項目選擇技術方案時,一定要跳出自己已經掌握的技術,首先站在問題域去考慮,想想這個問題到底是什么、哪種技術更適合問題場景,這樣才能選擇好方向,后期開發、維護才會更順利。
2、新技術的成熟度
做技術方案選型時,一定要考慮這種技術有沒有頂級公司支持、有沒有知名產品。
3、生態
4、團隊的技術圖譜
我們做方案選型時,也要考慮團隊已有的技術積累。
5、技術引入的成本
引入一種新技術的成本,包括:
- 學習成本
- 招聘成本
- 時間成本
- 機會成本
如何在技術上持續精進
開發者的迷茫分兩個層面:
- 方向上的迷茫,即自己到底是否做開發,是否要繼續在開發的路上走下去。
- 執行層的迷惑,即自己繼續做開發,該怎么找目標,學點什么,學到什么程度,如何能持續精進。
做開發還是轉管理
有三種方法可以幫助你進行判斷
- 工作的三種維度
- 成就感來源
- 未來的樣子
1、工作的三種維度
根據交互對象不同,工作可分為三類:
- 數據和信息處理
- 人際交互
- 事務型操作
假如你發現自己更愿意圍繞著人際交互來做事情,希望自己的工作中大部分時間都在和人打交道,那么你可能更適合做管理、銷售、市場、客服、咨詢等方面的工作。
假如你發現自己更愿意做操作性的工作,比如修理電腦、組裝電腦、搭建局域網、修理汽車等,那么軟件開發工作可能不太適合你,運維或者網管也許和你更匹配。
假如你覺得信息很迷人,很享受與信息和數據之間這種確定性、一致性、可預期性較高的互動方式,也很享受通過組織、修改、整合、創造信息來解決問題這種工作方式,那么你現在正在做的開發工作,基本上和你的偏好是吻合的,因為開發者偏重于和數據、信息打交道,以信息和數據為輸入,也以信息和數據為輸出。
2、成就感來源
可以遵循下面的步驟尋找成就感來源:
- 回顧你做過的事情,找出那些讓你情感反應強烈的,記錄下來。
- 分析你的情緒底色,是快樂、高興、振奮、愉悅、充實等積極情緒,還是沮喪、灰心、挫敗、失落、空虛、失望等消極情緒。
- 挑選出帶給你強烈積極感受的事件,它們就是你的成就感事件。
- 分析成就感事件,看看它們用到了什么知識、技能、軟技能,看看在這些事件中,你印象深刻的交互對象是什么(數據、人、事務)。
3、未來的樣子
問自己兩個問題:
- 一直做開發,我會變成什么樣子?
- 如果轉向管理,我會變成什么樣子?
找到激勵你前進的動力
從倦怠期走出來,有兩個方向:
- 為你的工作重新賦予意義
- 為你的工作引入變化
做軟件講究迭代,講究熱更新,我們個人也是一樣的,要不斷自我探索和更新,找到技術在不同階段對自己的不同意義,只有找到開發工作對個人的意義所在,你才可能有動力去精進。
學習型心態
所謂學習型心態,指的是:有主動學習的意識,時刻以學習的眼光和心態來看待發生在自己身上的事情。
技術精進之道
1、對標管理法
對標管理法模型中有三個要素:
- 現狀
- 目標
- 執行計劃
要想日有寸進,必須要在日常的開發工作中找到努力的目標。
下圖是實踐對標管理法指導個人成長的基本過程。
在針對個人運用對標管理法時,可以從4個方面來尋找標桿:
- 優秀的人
- 一般性規律
- 技術本身的知識層次
- 項目指標
2、從優秀者身上找目標
3、一般性規律
所謂一般性規律,指的是那些通用的、可以指導我們在什么時候做什么事情的規律。
對于開發者來講,要關注專業能力成長的一般性規律,即技術成長三階段。
在技術領域內的成長,基本上都會經歷三個階段:
- 第1階段,專項能力的提升,這是初級階段,你為了做事情,必須先具備某些基礎能力。
- 第2階段,技能體系的構建,這是中級階段,你擁有了一組技能,圍繞某個方向構建了自己的知識圖譜,能夠用自己的方式來解決問題。
- 第3階段,融合創新,這是高手階段,你具有了豐富的實踐經驗,具備了T型知識結構,形成了自己的思維框架和解決問題的框架,能夠融合不同領域的知識,組合各種資源,創造性地解決各種問題。此時你跳出了具體的技術束縛,站在了更高的層面,用底層認知和思維來指導你的工作。
4、技術本身的知識層次
一般來講,學習一門技術時,有三個階段:
- 第1階段,基礎開發,了解API,基于API開發應用。
- 第2階段,熟悉內核原理,主要是了解框架的設計原理,閱讀源碼,洞悉內在機理。
- 第3階段,優化框架,主要是針對框架已有功能的不足進行完善、優化,或者使用框架提供的機制擴展框架功能,或者對框架進行定制,讓它適合特定情境。
5、項目指標
開發者的工作往往是由一個又一個項目串起來的,每個項目都會有預期結果,都會界定怎么樣才算是完成,然后會有一系列的指標用于衡量項目做得怎么樣,比如Bug率、延期時間、并發用戶數、持續運行時間、單元測試覆蓋率、安全性等,
6、拿來即用的自我提升方法
下面給出一些經過驗證切實有效的提升策略:
- 嘗試用同一技術的不同模塊或API來實現,能讓你更了解所用技術。
- 看看你正在用的技術,想想你處在三個層次的哪一層,找到繼續提升的空間,去學習、實踐。持續這么做,能讓你從泛泛的了解、基礎的使用,進階到熟悉、精通。
- 了解和當前所用技術相關的技術,可以拓展你的知識圖譜。
- 嘗試用不同的技術來實現,能加深對問題的理解,也能淬煉新的技術。
- 看看別人用的技術點、技術棧,嘗試了解,能拓寬你的視野。
- 看看同一項目內他人的設計和代碼,有助于理解整個項目。
- 嘗試新的設計,能加深對問題的理解,更能淬煉自己的架構和設計能力。
- 看看整個項目的需求、設計文檔。不要局限于自己負責的模塊,這樣可以提升全局觀和系統觀。
- 迭代式重構老代碼,迭代式重構可以解決時間不夠用的問題。
- 閱讀優秀源碼,看到好的,思考好在哪里,琢磨自己怎么做到的,這樣你就會日有寸進,終至千里。
- 參與開源項目。
- 寫作技術博客,有利于寫作、邏輯思考、講授、設計等能力的提升,也有利于系統化你的知識。
- 講給別人聽,鍛煉講授、演講、溝通、歸納總結、邏輯思考等能力,對知識的內化與系統也很有幫助。
- 與優秀的人和團隊在一起。
目標的設定與執行
當我們運用個人對標管理法從人、規律、技術、項目4個方面找到目標后,還要仔細地考慮兩個問題:
- 這個目標適合自己嗎?
- 如何完成這個目標?
1、適合性評估
先來看看如何判斷某個目標是不是適合自己。有兩個方面:
- 這個目標和自己的職業規劃是不是一致?
- 這個目標和自己當下的工作是不是可以關聯起來?
如果只能在一個技術方向上做到出類拔萃,你的選擇是什么?當你確定了這個方向,就擁有了主線劇情,可以運用個人對標管理法來確保主線劇情充足發展,同時也可以在必要的時候引入支線劇情,輔助主線劇情的發展。
2、如何完成目標
當你選定了與你相關的某個目標后,如何完成呢?有兩個關鍵點:
- 目標必須是有效的
- 找到下一步行動
精進的4個習慣
1、對標管理
2、三個問題
- 我昨天完成了什么
- 我遇到了哪些問題
- 我今天做了什么
3、刻意練習
一旦我們養成刻意練習的習慣,就可能在很多領域內稱為高手。
推薦《刻意練習》一書
4、復盤
復盤分兩種:
- 事件觸發型復盤:比如項目抵達里程碑節點。
- 周期性復盤:比如周、月度、年度、每五年。
通過復盤我們可以知道,事情結果比預期好還是壞,在執行過程中,有哪些環節做得好,哪些環節做得差,好的總結經驗,差的反思原因,這樣我們就可以獲得成長。
推薦《復盤:對過去的事情做思維演練》和成甲的《好好學習:個人知識管理精進指南》
習慣養成指南
1、找到內在驅動力
要想讓一個習慣真正在自己身上落實,這個習慣必須是由你發自內心的渴望驅動的,只有從你自身出發,由衷地想要去做,你才可能養成這個習慣。
2、降低改變的難度
很多時候我們無法養成一個習慣,源自于開始時給自己設置的難度太大。
3、讓改變可視化
即便你找到了內在動力,想長期堅持做一件事時,還是會有很大的困難。要走出這種狀況,提高成功率,一個切實可行的方法就是:讓改變可見。
這樣的感覺會激勵你繼續前進。
4、獎勵
當你完成一件事情、堅持了一星期以后,就可以給自己一個獎勵。這樣你的堅持就會更好玩兒,更有趣,更值得期待。
5、允許例外
在養成一個習慣的過程中,一定要允許自己有例外。偶爾有一兩次例外沒什么關系,修復一下,繼續執行,只有這些低頻的例外不影響整體的效果,就不用糾結。
培養技術層面的核心競爭力
人的能力分為三類:資源、應用流程、價值觀。
所謂資源,包括知識、技能、時間、金錢、人脈、天賦等。
資源往往是顯性的、外在的,非常容易被自己和別人感知。
應用流程指的是解決問題的方法、思維的框架、分配資源的方式、自我管理的模式等。
應用流程是內在的,容易被人忽略,但它卻是解決問題的真正能力,當你擁有應用流程能力之后,才能很好地利用資源來解決問題,創建價值。
一個人的價值觀,是其最根本的能力。價值觀決定了你在哪個方向做、以什么原則去做。沒有價值觀,你就會像浮萍一樣,東飄西蕩,很難做出有長遠意義的選擇,就很難形成有效的應用流程,也很難積累能被社會感知的資源。
決定程序員是否具有優勢,是應用流程方面的能力,即邏輯能力、思維能力、想象力、架構設計、解決問題的框架、快速學習、自我管理、創新與創造等。
公司內的職業規劃
- 自己的下一個臺階在哪里?技術、架構、職位
- 怎樣做才能站上下一個臺階?精進技術、文檔、設計、組織...
很多公司都對各個職級有描述,比如阿里的工程師,職級從P3~P10每一級的要求都有,可以查到。
你可以去研究這一級別的崗位定義和職能描述,看看它需要什么知識、技能、經驗,有針對性地去準備。
成為技術管理者
從開發者到管理者,并不是簡單直接的職位晉升,而是一種轉型,這種晉升,發生了職能轉換。開發者更多的是做事,親自解決具體問題,而管理者,更多的是領導團隊做事,通過他人完成工作,以團隊的成績來界定自己的工作結果。
理解管理者
管理者通過他人完成工作。這是管理者的定義。
管理者有兩大任務:
- 完成工作目標
- 培養下屬
優秀管理者應當做到這幾點:
- 下屬可以各盡所能,都能得到成長,個人目標可以在實現團隊目標的過程中得以實現。
- 下屬信任你,愿意跟著你干。
- 實現團隊目標。
- 上司信賴你,愿意把團隊交給你管,愿意把復雜的事情交給你的團隊去做。
《代碼之道》中說:“成為一名優秀的管理者,所有你要做的就是確保你的人能夠工作,并且把他們當人(而不是資源)去對待”。
走向技術管理的4種方式
- 技而優則管
- 從打雜到管理
- 從大公司跳入小公司
- 獲取PMP證書,切換到有需要的環境
1、技而優則管
“技而優則管”一般分為三步:
如果你的技術能力很強,在某些技術方向上有深厚的積累,能夠解決復雜的問題,在項目中做出了成績,那么你往往會被領導注意到,會讓你帶一些新人或者不如你資深的同事。這是走向技術管理的發端,第一步。
你帶人帶得不錯,小伙伴們跟著你能夠快速成長,你就可能被安排帶項目,帶著你的小伙伴一起做項目,此時你因為技術能力強,又有帶人的經驗,一些項目管理、人員管理的事情就會由你來完成。這是走向技術管理的第二步。
當你帶著一個小團隊,完成了項目,并且結果還不錯,符合領導的預期時,你就在領導那里留下了“某某可以帶團隊做管理”的印象。如果你持續帶人、帶項目,就會不斷加強領導心中的這種印象。
最后,若有做管理的機會,你就會順理成章成為技術經理或研發經理。
2、從打雜到管理
真正決定你是否能做好管理的,并不是技術是否出色,而是你是否能把打雜打好,即:
- 能不能準確理解需求并傳遞給程序員
- 能不能了解每個人擅長什么、想要什么
- 能不能合理地安排任務,讓每個人既能干擅長的,又能遇到一些挑戰
- 能不能協調各種資源,讓程序員可以順利開展工作
- 能不能屏蔽高層、需求、產品、市場、售后等相關干系人的干擾,讓程序員可以在一個時期專注地做一件事
- 能不能做好項目計劃并跟蹤執行
- 能不能做好團隊或部門規劃
- 能不能給程序員創造成長的機會
上述事情的結果,并不取決于你的技術多厲害,而取決于你是否真心想為大家服務、為項目服務、為公司的目標服務。
3、從大公司跳入小公司
用你現在的大平臺為你背書,跳到小公司做技術管理。
4、獲取PMP證書
這條路有兩點需要注意:
- 考取PMP資格證書
- 在實際開發工作中,把自己放在項目經理的角度上去看待項目,使用PMP的理論、方法、工具等來復盤所做項目的管理過程,提升項目管理能力
怎樣為成為管理者做準備
一個人的能力其實分為兩個層面:知識和技能。
所謂知識,就是你知道的、能引發你改變的信息。
所謂技能,就是你運用知識解決實際問題的能力。
要為技術管理者做準備,可以從知識和技能兩方面著手。
首先,你要儲備管理知識,這一點可以通過閱讀來完成。其次,你要想辦法實踐你學到的知識,把各種管理知識內化為你的技能。
推薦書籍如下:
《管理的實踐》
《卓有成效的管理者》
《管理:任務,責任,實踐》
《巨變時代的管理》
《創新與企業家精神》
《21世紀的管理挑戰》
《人月神話》
《成為技術領導者》
《人件》
《項目管理知識體系指南(PMBOK指南)》
《軟件工程》
《軟件工程:實踐者的研究方法》
《項目百態:深入理解軟件項目行為模式》
《所謂情商高就是會說話》
《關鍵對話》
《內向者溝通圣經》
《帶人的技術:不會帶人你就自己做到死》
《別讓猴子跳回背上》
《交辦的技術:職場晉升第一課》
《目標管理實務手冊》
《高效演講》
《金字塔原理》
《演講的力量》
《影響力》
《橫向領導力》
《你的團隊需要一個會講故事的人:用故事思維解決問題》
《認同感:用故事包裝事實的藝術》
《小強升職記》
《搞定》
《高效能人士的七個習慣》
《做事的常識:事情一來,馬上就知道怎么做》
當你儲備了技術管理所需的知識之后,就要努力去發現工作中管理相關的機會,去應用你所學到的知識,把這些知識慢慢地變成你的技能。
要在工作中發現管理相關的機會,關鍵在于你要跳出工作內容和崗位職責的范圍,放眼全局來思考。分三個方面,第一方面是產品或項目本身,多想想自己要做的軟件到底要解決什么問題,給用戶帶來什么價值,為什么要做成這個樣子,它是怎樣被用戶使用的;另一個方面是工程實踐,思考整個項目,從立項、需求、開發、測試、交付、運維、項目生產工具,分析哪個環節做得不好,哪個環節改善之后效果可以被看見,主動去做這些事情,主動成為銜接不同環節、不同人員、不同部門的橋梁;第三方面,發現領導的目標是什么,他看重什么,他在為什么困惑,自己能不能幫到他,因為從某種意義上講,你的工作,就是為了讓領導的工作更順利,你的工作目標,就是實現領導的目標。
站在項目管理角度看問題
站在項目管理角度看問題,琢磨現在的項目是怎么管理的,有哪些問題,怎么改善。給自己定一個目標,爭取每天挑出一個問題來琢磨解決之道。
主動承擔職責外的雜事兒
主動承擔與組織、協調、溝通、管理相關的事情,比如組織會議、跟蹤計劃、分派任務、推動多干系人協作等。
設想你是技術管理角色
站在管理者的角度思考,向身邊的管理者學習,復盤身邊的管理者,看他們哪里做得好、怎么借鑒,哪里做得不好、怎么改進,設想如果自己是管理者會怎么做。
找一位職業楷模
在組織內找一個從事技術管理崗位的人作為自己的職業楷模。
尋找這樣的職業楷模時,要考慮他實際的管理水平、團隊的狀態、他個人的行事風格是否與你的價值觀相符。
技術管理新人面臨的挑戰
角色轉變
從技術崗位晉升而來的管理者,在他們剛開始做管理工作時,往往會頂著管理者的頭銜做執行者的事情。
可能經常會拿自己的技術水平衡量團隊的其他人,當一個技術領導因為擔心下屬會出錯或不能按自己預期完成任務而收回這個任務自己做時,會讓下屬自己覺得自己無能,或是讓下屬覺得這個領導越俎代庖不干他該干的事,這就會產生嚴重的不良影響,不利于團隊成員自己成長、自己解決問題。同時,這位技術領導也會因為過分關注技術細節而忽略其他的組織、領導工作,導致“只見樹木,不見森林”,嚴重影響整個團隊的效率和生產率。
技術管理者,除了管理自我之外,還要管理他人。團隊需要你做規劃、定目標、跟蹤計劃、協調資源,他人更需要你輔導而非代替他們做事情。
謹記,一定要把更多的精力放在人、流程、項目上,你的工作是保障別人的工作能夠順利開展,是創建一個可以讓大家各盡所能、實現團隊目標和個人成長的環境。
要順利完成角色轉變,下列事情可能有幫助:
- 和你信任的同級別小伙伴多聊聊
- 閱讀,多讀領導力和管理方面的書籍
- 培訓,根據你所處階段,持續接受適合你狀況的領導力和管理技能培訓
- 導師
被動管理
剛上任的技術管理者往往還習慣于做具體的事,把大部分精力放在設計、編碼、解Bug等具體工作上,只留少部分時間和精力給管理,有問題了才需要管,沒問題則不用管。
這種被問題驅動的管理方式,就是被動管理(消極管理)。
管理者應該以積極、主動的態度實施管理。
對一個項目、應該在前期花費更多的資源,明確任務的目標、資源、時間、反饋機制、溝通方式、風險、制定相應的計劃和應急預案,同時在實施計劃的過程中周期性地采集狀態,根據項目狀態動態調整計劃,及早解決各種問題,確保所有項目參與者和干系人步調一致,最終順利交付。
對一個人,應該在工作中經常性地和他溝通,無論是工作上還是生活上的事情,都要有所了解,要了解他為什么在這里工作,要幫助他制定成長計劃,要讓他感到自己是特別的、被重視的,讓他愿意在這里工作。
弄不清職責
要想盡快搞明白你的職責,下面幾個策略可以幫到你:
- 與你信任的、有經驗的其他同級經理多聊聊。
- 和你的上司多溝通,
- 和支持部門(人事、行政、財務等)多溝通。
委派任務
要想比較好地委派任務,需要做到以下幾點:
- 了解項目目標
- 做好項目任務的分解
- 了解團隊成員的技術能力和個人意愿
- 分配任務時,遵循兩方面的原則,既要讓某位成員做其擅長的,還要給他一些超出能力范圍帶些挑戰的;既要給某位成員他愿意做的任務,也要給他一些他可能不是特別樂意做的任務。
- 以交付為目標,以人人滿荷為策略,統合不同成員的任務關系。
目標管理
作為技術管理者,首先要和自己的上級溝通團隊的目標,然后再把團隊目標拆解到每個人身上,形成個人目標。
資源管理
管理者的一個重要工作是保證下屬能夠開展工作,不要讓任何資源阻礙開發者開始工作。
關于開發或者測試所用的資源,協調不來往往有客觀原因——沒錢、要審批、等待發貨等等,但如果管理者不想辦法盡快解決,不但會產生很多隱形浪費,還會大大打擊開發者的積極性。
還有一種無形的資源——開發者的時間,也需要好好管理。這方面需要提醒幾點:
- 不要把開發者的時間排滿,到70%就可以了。
- 安排工作時不要把加班時間計算在內。
- 要遵循串行工作的原則,不要給一個開發者同時安排多個任務。
- 如果必須給一個開發者安排多個任務,也請做好時間規劃。
壓力管理
管理者要盡量避免用消極的行為應對壓力,要努力積極地面對壓力,勇于承擔責任,一切以解決問題為目標。
可以從兩個方面進行壓力管理:
- 換個角度看問題
- 宣泄
沖突管理
作為管理者,沖突處理是必修課,只有恰當地處理沖突,才能維護關系健康,促進團隊合作,塑造團隊文化。當你再次面對沖突時,一定要先停下來想一想:
- 沖突的原因是什么?
- 自己準備用哪種方式處理沖突?
- 還有更好的處理方式嗎?
這樣有助于你用恰當的方式解決沖突,避免給團隊造成嚴重的不良影響。
績效變差
從技術崗位晉升到管理崗位后,你往往是不能勝任工作的,在上任后到那個績效評估周期內,你所得到的結果,大概率是比你做普通員工時差。
面對這樣的時刻,你肯定會有情緒,這是自然反應,可以理解。但在情緒過后,你應該換個角度來看:其實技術領導崗位上,你是從0開始的,有一個爬坡曲線也是符合邏輯的。
擔心失去技術競爭力
技術管理新人會陷入糾結中,一方面想提升整個團隊的工作效率而不得不做很多的組織、激勵、領導、協調等工作,另一方面,這些非技術方面的工作會占用他們大部分精力,導致無暇深研技術而產生焦慮感。
其實,此時更重要的是視野。你可能對技術細節了解得少了,但對技術方案選擇、技術類別、技術的影響力等可能了解得更多,會形成更為廣闊的視野,這足以彌補你在技術深度上的欠缺。而且,其實你之前達到的技術深度仍然存在,甚至會發酵,反過來滋養你的技術視野。
有效到反饋機制
有了反饋機制,就可以知道自己做得怎么樣,哪些地方好、哪些地方壞,找到改進的方向。
在構建反饋機制時,可以從4個維度來考慮:
- 自我評估。這里有兩個方面,一是項目評估,二是關鍵目標分析。
- 來自下屬到反饋。
- 來自同級到反饋。
- 來自上級到反饋。
別人到議論
無論你做什么事情,都不可能符合所有人利益,總是有人會議論,為此而戰戰兢兢實無必要。
和下屬進行一對一溝通
- 在開始時闡明目的,為溝通定調
- 分享事實經過和你的想法
- 征詢對方的觀點,鼓勵對方作出嘗試
注意在談話過程中要保持尊重,不要批判對方的人品,不要隨便打斷對方的說話,不要隨便批判對方的話。
怕犯錯
其實犯錯也是一種成長,沒有犯錯就很難成長,把錯誤當作練習和機會,錯誤就可能變為財富。
要想少犯錯,從犯錯中成長,請記得以下幾點:
- 勇于承擔責任。
- 時刻牢記公司目標、團隊目標、項目目標。
- 因人而異進行管理。
- 重視思想和認知到改變。
- 建立反饋機制。
- 善用清單。
- 復盤。
時間管理
時間管理的重點就是:管理下屬占用的時間。
管理下屬占用的時間,重點是交辦與授權。
激勵他人
薪水是我們找工作的保障因素,是顯性到,那些激勵因素(有挑戰性、獲得認可、責任感、成就、個人成長)則是隱形到。
管理者如何創造隱形價值,可以從以下幾個方面進行改善。
- 了解員工為什么在這里工作
- 讓每個人都有參與感
- 改善分配工作到方式
向上管理
向上管理指為了給公司、給上級及自己取得最好到結果而有意識地配合上級一起工作的過程。
提升領導力和管理能力
領導的職責就是創造這樣一個環境,每個人都能在其中發揮出更多到能力。
跳槽8問
要想越跳越好,有兩個要點:
- 明確職業目標或個人未來愿景,指導跳槽
- 如果目標不確定,就要周期性(每次跳槽時)地回顧,慢慢發現自己的目標。
為什么要跳槽
跳槽可能會有很多原因。
回顧以下工作中讓你感到不能接受的事情,一一列下來,形成一個“不能接受”清單,對清單中的每一項問三個問題:
- 我不能接受它是因為什么?
- 我愿意因為它離職嗎?
- 采取哪些措施,可能會消除這一項?
把你不愿意因為它離職的、可以通過做點什么事情來消除的事情,都從不能接受清單上劃掉。重復做這一步,直到清單只有三項,那就可能是你離職的直接原因。
你如果因為無法忍受某些事情而想離職,那么一定是這些事情觸動了你內心的某個原則或你認為很重要的東西,你認為很重要的這個東西,就是你的需求,也就是你的職業價值觀。我們需要把它找出來,這樣就把離職這件事徹底想明白了。
什么時候跳槽好
跳槽的最好時機就是:你覺得真的該離開了,一天也不愿意再待下去了。
有四種方法判斷你自己是否真的該離開了:
- 消耗感
- 周末探視法
- 蓋洛普的Q12
- 需求供給分析法
消耗感
你留在這個地方,一直用已經熟悉的技能、方法被動地完成事情,不再有成長,你處在營養流失階段,一點點被消耗。
周末探視法
在周日的晚上,想到周一要去工作,你的心情是:沮喪、拒絕、低落、痛苦、擔憂,還是期待、高興、興奮、還是無所謂?
蓋洛普的Q12
蓋洛普的Q12可以用來測試你對當前工作環境的滿意度。12個問題如下:
需求供給分析法
你選擇一種職業,往往是因為你看重什么,也就是你的行為價值觀決定你的選擇。
什么是好的跳槽和壞的跳槽
職業目標,簡單地說,就是你要在什么領域、做什么事情、取得什么樣的成就、成為一個什么樣的人。
職業目標應當與你的人生目標和規劃關聯起來,這樣你的工作才能幫助你實現人生規劃。
按時間可以把職業目標分為短期(1~2年)、中期(3~5)、長期(5~10年)。想想3年后自己在做什么?每年審視、更新你的中期規劃。
跳槽還是臥槽
跳槽的一個關鍵屬性:不確定性。無論你權衡多少因素,都無法保證這次跳槽一定比上一次好。
所以跳槽時一定要優先考慮某個機會是否有助于實現自己的中長期目標,這樣才能大概率地做出有價值的選擇,避免越跳越糟。
持續性積累非常重要,不管是跳槽還是臥槽,我們都要以自己能否在某個方向建立積累為原則。符合你職業目標的跳槽,能持續為你在某個方法帶來積累,能讓你的職業生涯更上一個臺階,就是好的選擇。
要不要追薪式跳槽
最理想的跳槽是:既符合職業發展方向,薪水又高。
我們看到一個Offer,不僅要關注薪水數字,更要關注:它能提供給我們什么發展空間和成長機會。
選大公司還是小公司
做選擇的關鍵在于:你自己想要什么工作特質。
假如你很難確認自己想要什么,但又必須作出選擇,考慮到“從大公司進入小公司容易,從小公司進入大公司比較難”這種現狀,那就選擇大公司,去享受它的各種好處。這樣當你發現了自己的職業目標或者厭倦了大公司,需要離開時,這段經歷也可以為你的履歷增色。
去大城市還是小城市
城市大小對個人職業選擇與發展有較大影響,可以從下面四點來看:
- 城市與產業結構
- 城市大小與公共資源
- 城市與生活成本
- 城市節奏與個人性格
自己的選擇是明智的嗎
我們會在多個機會前糾結,難以選擇,往往是因為想要這個選擇能有一個確定的、好的、100%有保障的結果。然而,遺憾的是,所有的選擇,都可能有壞處。
我們能做的就是:接納不確定性,盡量明智地去選擇。
- 選擇之前,可以判斷這個機會是否符合你的職業目標。
- 選擇之后,你可以觀察自己的感受。
簡歷優化指南
簡歷優化模型
HR通常會快速掃描以下這些信息:
- 目標職位
- 從研發部分那里拿到的技術關鍵詞
- 學歷、學校
- 工作年限
- 工作過的公司(名字、規模),有知名公司會加分
簡歷優化在于提高匹配性、突出亮點。
圍繞著這個核心,我們的簡歷優化可以分為下面幾步:
1、明確你想要的工作特征
2、盤點你的價值和亮點
3、尋找機會
4、招聘信息分析
5、簡歷優化
明確你想要的工作特征
當我們更換工作時,心中都有期待。你對工作的期待,就是你希望這份工作具備什么特征。
只有你明確了對工作的期待,找到了你想要的工作必須具備的特征后,你才能有選擇地、有效地尋找工作。
可以從兩方面找出你想要的工作特征:
1、你想要什么樣的工作
2、你對當前工作有什么不滿
盤點你的價值和亮點
找到你的價值,對自己有個客觀的認識,這對你撰寫自己的簡歷非常有幫助,也是找到理想工作的關鍵所在。
個人的商業價值體現在5個方面:
對開發者來講,在簡歷中,通常會重點體現知識、技能、經歷這3個方面。
在投遞簡歷時,可以優先考慮人脈推薦的方式,它的成功率是海投簡歷的好幾倍。
尋找機會
尋找機會可以分為四步:
1、分析可能的職位
2、確認哪些公司提供這些職位
3、了解公司和職位信息
4、確定自己感興趣的公司和職位
招聘信息分析
要想讓你的簡歷在3~5秒的時間內抓住目標公司篩選人員的眼睛,就必須要細致入微地研究招聘信息。
一份好的招聘信息應該包括:工作內容、工作收獲、工作成就、工作伙伴、工作認可與獎勵、任職要求。
可以從6個方面提取招聘信息中的關鍵字:
- 學歷
- 工作年限
- 知識
- 技能
- 項目經歷
- 軟能力
分析目標職位招聘信息的過程,邏輯上分為兩步:
1、拆解關鍵詞
2、對照自己的價值篩選匹配點
簡歷優化
當你篩選出招聘信息中和你匹配的關鍵詞后,就可以有針對性地優化你的簡歷了。
簡歷優化主要分為兩部分:
1、技能評價欄
2、項目經歷
技能評價欄的優化
優化技能評價欄時,要瞄準招聘信息中的關鍵詞,列出匹配的三五點足矣。
項目經歷的優化
在簡歷中梳理呈現你的項目經歷時,請遵循下面4點:
- 略去無關項目經歷
- 突出項目過程中用到的與你目標職位匹配的技能
- 描述你做的事情
- 描述取得的成績(顯化、量化)
檢驗簡歷優化效果
有3種方法:
1、設想自己是HR或研發部門的程序員,根據招聘需求來評估簡歷
2、請他人擔任簡歷篩選人員,讓他根據招聘信息來評估你的簡歷
3、選取一些公司的職位,優化簡歷,投遞實驗
如何提高簡歷投遞成功率
- 確立求職目標
- 梳理知識、技能、經歷并記錄在案,形成基礎簡歷
- 篩選招聘信息,選擇匹配自己目標的公司和職位
- 針對每個招聘信息進行分析,提取關鍵詞
- 根據關鍵詞,結合基礎簡歷,優化技能描述和項目經驗,生成一份有針對性的簡歷
如何在跳槽時獲得想要的薪水
薪水不是談判出來的,而是取決于雙方的匹配度。
決定薪水的7大因素
薪水由下列因素決定:
- 市場行情
- 個人基于自我價值和市場行情的自我評估
- 公司的薪酬結構
- 公司基于需求和行情的評估(產生公司的預期薪水范圍)
- 個人價值與公司需求的匹配度
- 公司需求的緊迫性
- 公司需求的重要性
我們能直接控制哪些因素
能直接控制的只有個人自我評估和匹配度。
我們在跳槽時,就應該把精力花在這兩方面。同時圍繞這兩點所做的工作,影響力還可能擴散,帶動其他因素產生積極的變化。
匹配度這個因素的核心就是“知己知彼”。
“知己”這部分,在個人評估的過程中完成。
“知彼”這部分,主要是了解公司、產品、職位三方面的信息。
如何為薪水做準備
1、明確你想要的工作特征
2、盤點你的價值點
3、尋找與你價值點匹配的工作機會
4、了解市場行情
5、自我評估
自我評估時,以市場行情為基準,上下浮動20%~30%即可。
6、搜集目標職位的可能薪水范圍
7、有針對性地優化簡歷
8、搜集常見的面試題、精心準備
薪資談判的6個秘密
1、誰來拍板你發多少薪水
不是HR,雖然HR會負責和你談薪水,但決定你的薪資的不是他們。
能決定給你發多少薪水的,是招人的部門領導或者他的領導。
2、談錢傷感情,不談才傷
3、薪水是可以談的
很多公司給每個職位都有一個預期的薪水范圍,最低多少,最高多少。
瞄準你和目標職位的匹配度精心準備,讓面試管覺得你就是他們想要的那個人。
4、絕不要主動談論薪水,除非他們問你
5、千萬別先提數字
6、福利
什么時候可以降薪求職
當薪水之外的某個因素被你排在了清單的第一位時,你就可能會選擇降薪求職。
薪水與幸福成正比嗎
金錢在你貧窮時會帶來比較直接的幸福感,而一旦你的生活離開了貧窮狀態,金錢的增加可能會降低幸福感——因為你為獲得更多的金錢而犧牲了更多東西,比如時間、興趣愛好、陪伴家人和朋友。
轉型
你真的不再喜歡開發工作了嗎
從兩個角度來體會:
- 工作時的感受
- 對時間的感覺
程序員轉型的難處
常見的難點5個:
1、路徑依賴導致的隱藏假設
長時間做某件事,就會對它產生依賴、認同。一旦我們習慣了某件事,就會被它植入相應的隱藏假設——你必須做這個,進而在我們必須選擇時影響我們選擇。
這種路徑依賴和隱藏假設牢牢地束縛住我們,一方面是因為我們不愿意放棄經年累月辛苦積累起來的價值,另一方面是因為我們低估了自己的潛能,高估了在新領域取得成績的難度。
關于在開發經歷中的積攢起來的價值,在轉型時并不會歸零,你在這條路上積累的經驗、閱歷、做事流程與方法、邏輯思維與分析等,都是通用的,可以遷移到新的領域。
2、薪水落差
我們習慣性地認為職場只能一個臺階一個臺階往上走,習慣性地認為薪水只能一年比一年高,我們不能接受成長過程中的凹陷。
如果我們能回到“為什么工作”這個元問題,這樣的不舍和糾結就會瞬間散去。
3、缺乏技能
人的能力分為專業能力和通用能力。
專業能力是指只能在某個專業領域發揮作用的能力。
通用能力指的是可在不同領域間遷移的能力,比如學習、演講、組織、溝通、計劃、管理等能力。
如果你一直將焦點放在專項能力的淬煉上,忽略溝通、協調、管理、講授、分析等能力,久而久之,你就會發現自己在工作上很難再有大的突破。
所有問題,最終都是人的問題。而要解決人和人之間的問題,你必須綜合運用你的各種通用能力。
4、他人的期待
別人會對你有期待,他們希望看得懂你,不希望你帶給他們看不懂的意外。
別人會因為你做了軟件開發工作,就把你等同于程序員這一身份,會一直強化你的優勢——技術,而不看你別的方面。
當你因為別人給你貼的標簽而舉步不前時,要想想:
你不是你的工作,你不是你的技術,你不是你的成功,你不是你的失敗,你是一個立體的、多元化的人,你具有多重角色和身份。所有的角色都是你,但沒有一個單一的角色代表全部的你。
5、對不確定性的抗拒
轉型充滿了不確定性,你可能會選錯方向,也可能最初的方向正確但做上一段時間發現不喜歡,還可能做了幾年也沒什么起色,所以開發者在不能確定轉型100%會成功時,往往很難邁出第一步。
要想讓工作和生活走出枯井無波的狀態,就要引入一些變化,承受這些變化發生過程中伴生的不確定性。
轉型的分類
我們把職能分為5類:管理、專業技術、自有職業、創業、投資。
與開發者相關的轉型方向
轉型時,在行業或職能上有一個維度相關,就會相對容易一些。
比如你只是不想做開發了,還想做和軟件相關的事情,就可以考慮如下方向:
- 項目經理
- 產品經理
- 需求分析人員
- 文檔開發人員
- 測試人員
- 講師
- 技術作家
- 運維人員
- 等等
如何確認哪個職業適合你
遵循下面5個步驟,就可以快速找到你想做的職業:
1、羅列你感興趣的或印象深刻的人、事、物。
2、分析它們可以關聯的職業,形成清單。
3、對清單中的職業做信息搜集分析,篩選出你感興趣的職業。
4、選擇某個職業,學習相關知識、技能。
5、業余時間做做看,或者找兼職、實習機會做做看。
轉型的最佳實踐
按照下列步驟推進是比較現實的:
1、找到轉型方向
- 與軟件開發相關的方向
- 通過人事物尋找新的職業目標
2、儲備目標職業所需知識、技能
3、找機會實踐,體驗,看自己是否還愿意繼續做,如果不愿意,回到1
4、在目標工作地區,尋找感興趣的公司和職位。
5、針對每一個公司的每一個職位,準備一份簡歷,突出你與目標職位匹配的知識、技能、經歷。
6、優先考慮通過人脈、內推等方式獲取面試機會
重復上面的過程,迭代,優化,直到找到工作。
在轉型時有兩種選擇:
- 離職,全力轉型
- 一遍繼續當前的工作,一邊利用業余時間轉型