“跳槽”還是“臥槽”,你想好了嗎?
原創(chuàng)【51CTO.com原創(chuàng)稿件】2019 很快就過去了,不知不覺中已經(jīng)在 51CTO 的平臺(tái)上發(fā)表了 20 篇文章。
圖片來自 Pexels
到了年終一般都要做總結(jié),今天借 51CTO 一方寶地來說說心里話,從如下幾個(gè)方面和大家分享一下 IT 從業(yè)人員的心聲:
- 思維方式
- 學(xué)習(xí)與提升
- 職業(yè)發(fā)展路線
- 跳槽和臥槽
- 總結(jié)
思維方式
記得在稻盛和夫的《干法》一書中,對(duì)于人生和工作給出這樣一個(gè)公式:
人生(工作)的結(jié)果=思維方式*熱情*能力。
公式中的“熱情”可以理解為“努力”,分?jǐn)?shù)從 0 到 100 分。“能力”可以理解為智商,情商,組織能力,表達(dá)能力,健康等等,分?jǐn)?shù)從 0 到 100 分。
“思維方式”與其他兩個(gè)不同,它的分?jǐn)?shù)是從 -100 到 100。這也就意味著“思維方式”有可能為負(fù)數(shù),如果它為負(fù)數(shù)的時(shí)候,付出的努力越大,擁有的能力越強(qiáng),就越有可能得到相反的結(jié)果。
我常常在反思,在平時(shí)的工作和學(xué)習(xí)中,是否運(yùn)用了正確的思維方式:
- 程序出現(xiàn) Bug,是找到原因并且進(jìn)行總結(jié),還是埋怨項(xiàng)目進(jìn)度太緊,系統(tǒng)混亂。
- 遇到需求不清楚的時(shí)候,是努力整理問題列表,還是抱怨產(chǎn)品經(jīng)理不專業(yè)。
- 當(dāng)受到老板/客戶的非議時(shí),是積極傾聽采取改進(jìn)措施,還是怨天尤人。
有人說程序員只要專業(yè)知識(shí)過硬就夠了,其他的不用過多考慮。這種說法“正確”,也“不正確”。
專業(yè)能力是進(jìn)入 IT 行業(yè)的門檻,在進(jìn)入之后還需要在各個(gè)方面不斷的打磨和提升自己。
平時(shí)的工作就是在不斷發(fā)現(xiàn)和解決問題,能否在這個(gè)過程中受益,思考就顯得尤為重要。
職業(yè)生涯開始的幾年,我是在摸索中度過的,對(duì)工作的意義也不太清晰,感覺寫代碼就是一個(gè)賺錢的營生。每天想的是,快點(diǎn)把手上的任務(wù)完成,下班以后打打游戲,刷刷劇。
測試同事給我報(bào) Bug,能推就推,說:“這是操作問題,不是程序的問題”。對(duì)于經(jīng)理報(bào)上來的需求盡量,都會(huì)說:“難度太大,需要更多的時(shí)間”,各種理由搪塞。
久而久之,發(fā)現(xiàn)自己在原地踏步。于是,通過觀察身邊優(yōu)秀的人和通過閱讀書籍來找答案。
《終生成長》一書中提到了,人有兩種思維模式,一種是固定型思維,另一種是成長型思維。
擁有固定型思維的人認(rèn)為自己不需要改變,保持原有處理問題的方式,需要改變的是外界。
而擁有成長型思維的人認(rèn)為,需要不斷調(diào)整做事的方式,來滿足不斷變化的世界。
特別是當(dāng)今是一個(gè)復(fù)雜,多變,不確定的時(shí)代。程序員更應(yīng)該擁抱變化,迭代自己,專注思考。
學(xué)習(xí)與提升
學(xué)習(xí)提升的道路有很多條,基本上分為自我學(xué)習(xí)和向他人學(xué)習(xí)。
自我學(xué)習(xí)
很多時(shí)候?yàn)榱藢W(xué)習(xí)專業(yè)的知識(shí),我上網(wǎng)翻看 Blog,關(guān)注微信公眾號(hào)的推文。遇到工作上的問題,打開搜索引擎用最快的方式找到答案。
習(xí)慣了享受快餐知識(shí)帶來的愉悅感。甚至不清楚復(fù)制粘貼代碼所表達(dá)的意思,看過大神文章也不得要領(lǐng),只有不明覺厲的感覺。
古人講究“觀,為,得”。大多數(shù)情況下,我們做了“觀”的事情,知道有這個(gè)知識(shí),大致知道如何使用工具,但沒有形成自己的知識(shí)體系。
要在“觀”的基礎(chǔ)上,自己把知識(shí)的前后關(guān)系梳理一遍,在知道 What 和 How 的同時(shí)知道 Why。
將每個(gè)知識(shí)點(diǎn)做好筆記,保存下來,下次遇到有關(guān)聯(lián)的知識(shí)時(shí),對(duì)照起來參考。這才做到了“為”。
最后,把每個(gè)知識(shí)點(diǎn)串聯(lián)起來,形成線,再將線變成面,講給別人聽,或者將其形成文章分享給大家,這樣才能做到“得”。
如果把每次遇到的問題都如此總結(jié),周而復(fù)始技術(shù)/理解能力會(huì)有明顯的提高。
特別是有幾年工作經(jīng)驗(yàn)以后,需要針對(duì)基礎(chǔ)的計(jì)算機(jī)知識(shí)進(jìn)行系統(tǒng)的學(xué)習(xí)。因?yàn)榛镜木幊碳记珊凸ぞ叨茧x不開這些基本原理的支持。
例如:數(shù)據(jù)結(jié)構(gòu),組成原理,數(shù)據(jù)庫設(shè)計(jì),設(shè)計(jì)模式,算法。在這個(gè)過程中可以對(duì)知識(shí)進(jìn)行重新梳理,分類,站在更高的位置審視所學(xué)知識(shí)。
向他人學(xué)習(xí)
記得在《易經(jīng)》中有一卦叫做“比”卦,意思是要“親比”他人。在任何一個(gè)組織中都有領(lǐng)袖,也是需要大家輔佐的對(duì)象,比如:項(xiàng)目經(jīng)理,技術(shù)組長,架構(gòu)師等等。
“親比”的意思是圍繞在有能力的人周圍,輔助他們,同時(shí)從他們身上學(xué)習(xí)知識(shí),技能和經(jīng)驗(yàn)。
你注意觀察你身邊的人,包括家庭,公司和學(xué)校都有你“親比”的對(duì)象。在他們身上有很多閃光點(diǎn),是值得我們學(xué)習(xí)的,甚至我們會(huì)希望成為像他們一樣的人。
把他們作為自己的目標(biāo),結(jié)合自己發(fā)展的方向(Java 架構(gòu)師,項(xiàng)目管理),列出學(xué)習(xí)條目(架構(gòu)設(shè)計(jì),項(xiàng)目管理)。
以半年為期限,定時(shí)去查看目標(biāo)是否實(shí)現(xiàn),還有哪些需要彌補(bǔ)的。時(shí)刻提醒自己目標(biāo),能否成為你理想中的那個(gè)人。
之前項(xiàng)目組有一個(gè)程序員的 Bug 很少,于是我就學(xué)習(xí)并且模仿他的編碼風(fēng)格,半年以后發(fā)現(xiàn)我的代碼質(zhì)量有了明顯的改善。
除了學(xué)習(xí)人以外,GitHub 上面一些開源項(xiàng)目也是學(xué)習(xí)的對(duì)象,看看別人如何構(gòu)架系統(tǒng),如何使用設(shè)計(jì)模式,對(duì)自己的工作也是啟發(fā)。
模仿是最好的老師,久而久之結(jié)合自身的特點(diǎn)就形成了自己的風(fēng)格。
比卦示例圖
如何檢驗(yàn)學(xué)到的知識(shí)
檢驗(yàn)知識(shí)的方法有很多,例如:今天學(xué)到了編程方面的知識(shí),應(yīng)用到工作中就可以檢驗(yàn)是否成功。
這些檢驗(yàn)的方式是有特殊場景的,從問題到解決方案,是被動(dòng)的驗(yàn)證方式。
如果說在日常工作中沒有那么多的問題需要解決,而又需要檢驗(yàn)學(xué)習(xí)的知識(shí),那應(yīng)該如何操作?
這里分享一種主動(dòng)驗(yàn)證方式,從學(xué)習(xí)知識(shí)到教授知識(shí)。在開始學(xué)習(xí)的時(shí)候,就要確定學(xué)習(xí)目的是:要教會(huì)別人也學(xué)會(huì)這個(gè)知識(shí)。
也就是,學(xué)習(xí)完成之后,你就是關(guān)于這個(gè)知識(shí)的專家了,有責(zé)任教會(huì)其他人搞懂這個(gè)知識(shí)。
如此這般,才能在學(xué)習(xí)過程中對(duì)知識(shí)精益求精。具體過程可以這樣:學(xué)完某種知識(shí)以后,用自己的話,對(duì)著鏡子復(fù)述一遍。剛開始的時(shí)候會(huì)結(jié)結(jié)巴巴找不到要領(lǐng)。
不過不要緊,針對(duì)不清楚的部分,回去查資料,再進(jìn)行演講。直到演講的過程順暢為止。
此時(shí),已經(jīng)有點(diǎn)信心了,可以找三五個(gè)好友,對(duì)著他們演講,此時(shí)會(huì)有點(diǎn)緊張畢竟有了觀眾,可以準(zhǔn)備簡單的 PPT 幫助梳理和回憶。
接下來,再找機(jī)會(huì)在公司內(nèi)或者小組內(nèi)做一次分享。逐步擴(kuò)大分享的范圍,在每次分享完畢以后,做個(gè)總結(jié),針對(duì)演講中不熟悉的地方,再進(jìn)行補(bǔ)充。
這是一個(gè)不斷自我完善的過程,期間可以形成自己學(xué)習(xí)的體系和方法,鍛煉組織,演講能力。
同時(shí),在不斷擴(kuò)大范圍的過程中,會(huì)得到不少反饋,使你對(duì)知識(shí)的認(rèn)知的程度不斷提高。
最后,在時(shí)機(jī)成熟的時(shí)候可以發(fā)表一篇文章,對(duì)其做一個(gè)總結(jié)。整個(gè)過程不但驗(yàn)證了知識(shí),還會(huì)成為某個(gè)垂直領(lǐng)域的專家,提高專業(yè)知名度。
職業(yè)發(fā)展路線
職業(yè)發(fā)展路線是經(jīng)常被提到的話題,針對(duì)不同階段,職業(yè)規(guī)劃是不同的。剛剛進(jìn)入 IT 業(yè)的同學(xué),可以考慮掌握一門“安身立命”的技術(shù)。能夠養(yǎng)活自己,并且有成長的空間。
開始時(shí)候可以涉獵多一點(diǎn)技術(shù),在其中選擇一個(gè)覺得“舒服”的技術(shù)堅(jiān)持下去。前幾年讀過一本書叫做《逝去的武林》,講述的是一位老者 40 年學(xué)武的經(jīng)歷。
其中有一段講到,他剛開始學(xué)武時(shí),他的師傅教了他好幾招。然后問他:“哪一招,練起來最舒服。”他回答師傅以后,師傅就要他只練“覺得舒服”的那幾招。
一年以后,才教他其他招式。他問師傅為什么。師傅說:“招式雖然變化多端,但底層原理是不變的。如果有幾招已經(jīng)精熟了,那么學(xué)習(xí)其他招數(shù)也就易如反掌了。
反觀,學(xué)習(xí) IT 技術(shù)不也是這樣嗎?學(xué)習(xí)那么多的編程語言,他們之間的底層原理都是相通的。分布式架構(gòu),通訊方式,設(shè)計(jì)模式,在思考方式上也有互通互聯(lián)的地方。
所以,初進(jìn)入職場的 3-5 年可以在一個(gè)垂直的技術(shù)領(lǐng)域深耕。精通以后,再選擇后面的路如何走。
除了技術(shù)能力,綜合能力也是必不可少的。例如:演講,寫作,溝通,管理。不管今后是往技術(shù)方向還是管理方向發(fā)展,這些技能都能夠幫到你。
所以,在適當(dāng)?shù)臅r(shí)候需要鍛煉自己的綜合能力,比如:
- 定期可以進(jìn)行技術(shù)演講,把技術(shù)干貨分享給同事。
- 將平時(shí)工作中遇到的問題,寫成文章分享到網(wǎng)絡(luò)。
- 讀幾本心理學(xué)書籍,學(xué)會(huì)如何和人溝通。
- 定期在網(wǎng)上學(xué)習(xí)管理視頻。
在學(xué)習(xí)專業(yè)知識(shí)的同時(shí),也要獲取其他領(lǐng)域的知識(shí),豐富自己的知識(shí)體系。
有了好的開始,那么具體的發(fā)展有哪些路可以走呢?下面列舉三條路線供各位參考。
技術(shù)路線
程序員→中級(jí)程序員→高級(jí)程序員→技術(shù)經(jīng)理
這是一條技術(shù)發(fā)展路線。隨著開發(fā)經(jīng)驗(yàn)以及對(duì)架構(gòu)的理解,可以先往中級(jí)工程師、高級(jí)工程師崗位方向發(fā)展。
剛開始的時(shí)候關(guān)心如何編寫出代碼,減少 Bug,實(shí)現(xiàn)功能,通過模塊測試;而中、高級(jí)程序員需要從整個(gè)項(xiàng)目出發(fā),考慮如何編寫模塊,算法。
之后,可向技術(shù)經(jīng)理的方向發(fā)展。在擔(dān)任工程師階段,積累了大中型項(xiàng)目的經(jīng)驗(yàn),也熟悉了技術(shù)標(biāo)準(zhǔn)、技術(shù)規(guī)范,學(xué)會(huì)編寫、審核各種技術(shù)方案和文檔。
同時(shí)具備編寫軟件核心代碼、處理軟件故障和領(lǐng)導(dǎo)團(tuán)隊(duì)的能力,基本達(dá)到了技術(shù)經(jīng)理的崗位要求。
技術(shù)經(jīng)理之后,可以往技術(shù)總監(jiān)、CTO 等崗位發(fā)展,這些崗位的要求會(huì)更高,因此在編程過程中要注重其他方面的積累,如算法思維、測試方法、技術(shù)文檔、技術(shù)團(tuán)隊(duì)管理等。
管理路線
程序員→中級(jí)工程師→系統(tǒng)架構(gòu)師→項(xiàng)目經(jīng)理
系統(tǒng)架構(gòu)師是一個(gè)要求兼具溝通能力,設(shè)計(jì)能力和技術(shù)能力的崗位。技術(shù)是基于業(yè)務(wù)的,因此要對(duì)業(yè)務(wù)有深入的了解,需要與客戶、產(chǎn)品經(jīng)理、技術(shù)人員、項(xiàng)目經(jīng)理等都保持良好的溝通。
針對(duì)業(yè)務(wù)場景,設(shè)計(jì)規(guī)劃系統(tǒng)架構(gòu)和應(yīng)用場景、解決開發(fā)過程中遇到的疑難問題;還要提高開發(fā)質(zhì)量,推進(jìn)開發(fā)進(jìn)度;也要協(xié)助管理技術(shù)團(tuán)隊(duì),做好技術(shù)文檔、說明文件等工作。
項(xiàng)目經(jīng)理是軟件項(xiàng)目的組織者和領(lǐng)導(dǎo)者。對(duì)內(nèi)要組織管理技術(shù)團(tuán)隊(duì),制定開發(fā)計(jì)劃、測試計(jì)劃、培訓(xùn)計(jì)劃、量化任務(wù)等;解決開發(fā)過程中出現(xiàn)的問題,保證軟件按照進(jìn)度推進(jìn);做好技術(shù)文檔、說明文件的存檔工作等。
對(duì)外要與客戶溝通,了解、完善、修改需求;要與公司溝通,及時(shí)匯報(bào)項(xiàng)目進(jìn)度、工作情況和資源需求;要做好市場調(diào)研,及時(shí)調(diào)整技術(shù)方案等。
程序員如果具備很強(qiáng)的溝通、設(shè)計(jì)和團(tuán)隊(duì)管理能力,可以考慮往管理路線發(fā)展。不具備這些方面能力的程序員,可以多考慮技術(shù)管理方向發(fā)展。
系統(tǒng)架構(gòu)師和技術(shù)經(jīng)理在工作內(nèi)容上有一些區(qū)別。架構(gòu)師對(duì)內(nèi)負(fù)責(zé)技術(shù)架構(gòu),對(duì)外需要和業(yè)務(wù)溝通;技術(shù)經(jīng)理多會(huì)專注于內(nèi)部的技術(shù)規(guī)范,技術(shù)標(biāo)準(zhǔn)的制定和執(zhí)行。
產(chǎn)品路線
程序員→產(chǎn)品助理→產(chǎn)品設(shè)計(jì)師→產(chǎn)品經(jīng)理
在日常工作中,你會(huì)發(fā)現(xiàn)有些程序員,對(duì)產(chǎn)品設(shè)計(jì)、產(chǎn)品管理有很好的想法。
那么他們已經(jīng)具備了產(chǎn)品設(shè)計(jì)的基礎(chǔ)能力:對(duì)產(chǎn)品理解、功能邏輯有思路、有判斷。
程序員往產(chǎn)品方向發(fā)展,有自己的優(yōu)勢和劣勢:
- 優(yōu)勢是:程序員知道程序開發(fā)的過程,熟悉功能實(shí)現(xiàn)的方式。站在產(chǎn)品的角度能夠和開發(fā)人員有良好的溝通,對(duì)產(chǎn)品的開發(fā)周期、實(shí)現(xiàn)方式、故障判斷等都可以很好的把控,使產(chǎn)品在技術(shù)層面出現(xiàn)的問題盡快得到溝通解決。
- 劣勢是:程序員在客戶需求分析、市場調(diào)研、產(chǎn)品設(shè)計(jì)、產(chǎn)品管理、運(yùn)營分析、用戶培訓(xùn)等各方面要從零開始學(xué)習(xí),這是需要一定時(shí)間的。
如果要往產(chǎn)品方向發(fā)展,大部分需要從產(chǎn)品助理開始,不僅要保持住自己優(yōu)勢的地方,還要一步一個(gè)腳印學(xué)習(xí)、積累,逐漸消除自己的劣勢,往產(chǎn)品設(shè)計(jì)師、產(chǎn)品經(jīng)理,甚至是 CIO(首席信息官)方向努力。
跳槽和臥槽
程序員由于職業(yè)特點(diǎn)決定了是一個(gè)跳槽比較頻繁的職業(yè)。特別是這幾年社會(huì)對(duì) IT 技術(shù)的需求量逐漸增大,對(duì)程序員的需求也在增大,這也導(dǎo)致整體行業(yè)跳槽比率偏高。那么什么時(shí)候該跳什么時(shí)候不該跳呢?
我在網(wǎng)上找了很多文章,發(fā)現(xiàn)有好多原因可以被考慮,例如:自身發(fā)展,公司發(fā)展,行業(yè)發(fā)展,老板魅力。
其實(shí),歸根到底說的都是,你現(xiàn)在的工作和你想要的工作之間的差異。新的工作是否給你帶來更多,包括薪水,發(fā)展,平臺(tái),人脈等等。
這里介紹工作特征模型,通過這個(gè)模型可以針對(duì)不同職業(yè)階段進(jìn)行打分,最后再做出判斷。
如果分?jǐn)?shù)呈現(xiàn)上升或者平穩(wěn)趨勢,建議“臥槽“獲取更多能量。如果分?jǐn)?shù)有下降的局勢,建議根據(jù)職業(yè)發(fā)展方向,找新的工作。
工作特征模型,需要定義幾個(gè)特征變量,每個(gè)變量定義 0-10 分,分?jǐn)?shù)越高說明和特征越符合,將每項(xiàng)打分完畢以后帶入到一個(gè)公式中,得到最終的分?jǐn)?shù)。
①技能多樣性(Skill Variety)。工作中使用的技能是否多樣,是否需要多種技能才能完成工作。
很多情況下,我們說的“搬磚”,是一種技能單一的表現(xiàn),利用現(xiàn)成的技術(shù)并且不斷重復(fù)類似“增刪改查”的操作,讓人感覺每天都在重復(fù)自己。
相反,如果工作中涉及到技術(shù)面比較廣,類似全棧工程師;又或者需要做橫向/縱向溝通以及管理協(xié)調(diào)的工作,就會(huì)讓人充滿了新鮮感,保持職場的活力。
②任務(wù)一致性(Task Identity)。需要完成的任務(wù)和實(shí)際完成的任務(wù)是否一致。
例如:領(lǐng)導(dǎo)給你布置系統(tǒng)架構(gòu)的任務(wù),在實(shí)施時(shí)你才發(fā)現(xiàn)做的都是一些“救火”的事,對(duì)系統(tǒng)的修修補(bǔ)補(bǔ)。
只有保持任務(wù)的一致性,才能讓你的目標(biāo)和結(jié)果保持一致,增強(qiáng)獲得感,不斷提高工作能力。
③任務(wù)重要性(Task Significance)。這個(gè)不言而喻,如果你現(xiàn)在的工作非常重要,是公司盈利的核心或者是公司未來發(fā)展的方向。
那是非常好的事情,和公司的發(fā)展保持一致,會(huì)獲得更多的資源,更容易把事情做好,成長也是最快的 。
④自主性(Autonomy)。工作內(nèi)容,工作形式是否能夠自己控制。例如:每天上班是否打卡,完成的工作都是別人指派給你的,還是你自己主動(dòng)承擔(dān)工作的。
越是有自主性的工作,越能提高員工的工作動(dòng)力,大家都盯著一個(gè)目標(biāo)前進(jìn),會(huì)想盡辦法把事情做好。
⑤反饋性(Feedback)。你做的工作是否得到了正向的反饋,這種反饋可以來自同事,客戶,領(lǐng)導(dǎo)。
只有不斷的得到反饋,才能修正自己提高自身的能力。同時(shí)只有自己的工作成果得到反饋才能激發(fā)下次完成任務(wù)的動(dòng)力,驅(qū)動(dòng)自己不斷前進(jìn)。
最后將上面的特征變量帶入下面的公式,就知道最終的得分了:
這個(gè)分?jǐn)?shù)的計(jì)算是一個(gè)長期的過程,每隔一段時(shí)間(1-2 月),可以給自己進(jìn)行一次評(píng)價(jià),這樣一段時(shí)間下來會(huì)形成一個(gè)曲線,通過曲線的上升和下降就知道在當(dāng)前的公司是否有利于自己的職業(yè)發(fā)展了,從而確定是跳槽還是臥槽。
總結(jié)
程序員的自身發(fā)展,需要有正確的思維方式。成長型的思維模式能夠幫助自身不斷迭代。在學(xué)習(xí)過程中需要注重自我學(xué)習(xí)和向他人學(xué)習(xí)。
自我學(xué)習(xí),講究“觀,為,得”,知識(shí)不是知道就完了,還要去實(shí)踐,思考,最后才能夠掌握。
向他人學(xué)習(xí),要找好你的學(xué)習(xí)目標(biāo),設(shè)置時(shí)間限制,用先“學(xué)習(xí)模仿“,后“自成一派“的方式推進(jìn)。
職業(yè)發(fā)展,先找到突破口切入,深入以后再觸類旁通??梢愿鶕?jù)自身?xiàng)l件,選擇技術(shù),管理和產(chǎn)品的方向。
跳槽與否,不要憑感覺,用科學(xué)的方法論來指導(dǎo)。多樣性,一致性,重要性,自主性,反饋性是需要考慮的關(guān)鍵點(diǎn)。
作者:崔皓
簡介:十六年開發(fā)和架構(gòu)經(jīng)驗(yàn),曾擔(dān)任過惠普武漢交付中心技術(shù)專家,需求分析師,項(xiàng)目經(jīng)理,后在創(chuàng)業(yè)公司擔(dān)任技術(shù)/產(chǎn)品經(jīng)理。善于學(xué)習(xí),樂于分享。目前專注于技術(shù)架構(gòu)與研發(fā)管理。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】