程序員這個(gè)群體受到媒體的關(guān)注度越來越高:蘇享茂自殺事件,華為清理35歲以上程序員,中興被勸退程序員跳樓,阿里程序員穿特步相親被拒。
以上這些事件讓程序員貼上了這樣的標(biāo)簽:錢多,話少,節(jié)儉,死得早...

而程序員作為一個(gè)習(xí)慣了在被人黑的基礎(chǔ)上再繼續(xù)自黑的群體,并不在意外界貼的是什么標(biāo)簽,甚至還會(huì)更用力地自黑,外界說程序員是碼農(nóng),我們干脆就自稱為碼畜,說我們不解風(fēng)情,我們就創(chuàng)造更多的段子來自娛自樂。
那么,程序員究竟是怎樣的群體,又該如何規(guī)劃自己的職業(yè)生涯?
不要把標(biāo)簽內(nèi)化成了性格
工資高,加班累成狗,木訥, 人傻, 節(jié)儉, 死得早...
以上這些外界貼的標(biāo)簽有其合理性,畢竟人總是習(xí)慣于用簡(jiǎn)單粗暴的概念去理解自己不清楚的人或物。就好像,一說起廣東人,外省人都覺得我們什么都吃,所以才有“廣東人吃福建人”的梗。
行業(yè)外的人給程序員貼什么樣的標(biāo)簽沒關(guān)系,重要的是不要給自己貼標(biāo)簽。不要把自己的低情商歸咎于自己是一個(gè)程序員,然后就應(yīng)該是不懂得交流,就只能是傻傻地敲代碼。你不是因?yàn)楫?dāng)成程序員而傻,而是你本身就傻。只不過這種傻在程序員這個(gè)職業(yè)中受到的容忍度比較高。
就各行業(yè)平均薪酬來說,程序員的工資確實(shí)是相對(duì)較高的,因?yàn)檫@個(gè)行業(yè)還行業(yè)紅利期,不少從業(yè)兩年不到的人就能夠拿過萬的工資,而且其中不乏只是在培訓(xùn)班幾個(gè)月速成的人,相比其他傳統(tǒng)行業(yè),這種工資的漲幅是很大的。但“存在即合理”,有需要就有市場(chǎng),能找到工作就證明能力得到了認(rèn)可,所拿的待遇也是應(yīng)得的??扇绻惨萦诂F(xiàn)狀,以后的日子肯定會(huì)很難。
我見過很多程序員,每天只是在做重復(fù)性的工作,雖然有三至五年的工作經(jīng)驗(yàn),但其能力其實(shí)跟從業(yè)一年的人沒多大區(qū)別,只不過是復(fù)制粘貼的速度更快罷了。技能并沒有提升,工作內(nèi)容并沒有改變,卻拿著比新從業(yè)者高很多的收入。這樣的人,別說到35歲,到30歲就會(huì)被淘汰了,要么接受降薪,要么被辭退。
如果40歲還在跟20歲的年輕人做一樣的事,那是很悲哀的。不管是哪個(gè)行業(yè),這樣的人都會(huì)被淘汰。只不過程序員是熱門話題,媒體更喜歡拿這種話題弄個(gè)大新聞,然后把程序員批判一通。但試想一下:哪個(gè)行業(yè)會(huì)招一個(gè)40歲的人去做一個(gè)20歲就能做的事,但要付給40歲的人雙倍的工資?而且還要忍受一個(gè)40歲老油條的各種脾氣?
想想那個(gè)被辭退的收費(fèi)站大姐所說的話:“我今年36歲了,除了收費(fèi)啥也不會(huì)!”。
如果程序員不思進(jìn)取,以后就是:"我今年36歲,除了寫增刪改查的業(yè)務(wù)邏輯代碼,啥也不會(huì)"。
不要被語言所限制
由于分工的細(xì)化,程序員都會(huì)有具體化的崗位,一般以語言作為區(qū)分,如java程序員,php程序員,python程序員。這是公司分工的需要,但不意味著自己就只需要掌握一種語言。絕對(duì)不要以為自己可以憑一門語言就能夠養(yǎng)活自己一輩子。
語言是解決問題的工具,程序員是用編程語言去解決問題的人,不同的問題,不同的場(chǎng)景用不同的語言去解決會(huì)更高效。如果只會(huì)一種語言,思維的局限性很大。
“如果你手里只有一把錘子,你看什么都是釘子”
如果我們把語言比喻成刀,有些語言是菜刀,有些是剪刀,有些是指甲刀,若你只會(huì)一種語言,好比你手上只有一把刀,那么請(qǐng)問你會(huì)用菜刀剪指甲嗎?會(huì)用剪刀砍排骨嗎?同理,你會(huì)用c++寫一個(gè)web頁面嗎?會(huì)用php寫App嗎?
建議每年都學(xué)一門新的語言,語言學(xué)得越多,思維越開闊,學(xué)習(xí)的成本越低

程序員最應(yīng)該掌握的技能
永遠(yuǎn)保持好奇心
善用Google
熟練的英文讀寫能力
有好奇心,你才不會(huì)平庸度日。才會(huì)想辦法將自己從無聊的耗時(shí)的任務(wù)中脫身。
好奇心會(huì)驅(qū)動(dòng)你去學(xué)習(xí)、檢索新知識(shí)。此時(shí)就會(huì)發(fā)現(xiàn)百度在搜索技術(shù)資料方面真是很弱,這主要是源于優(yōu)質(zhì)的技術(shù)文章、社區(qū)都是在英文世界中。Google會(huì)給你一個(gè)全新的世界,我現(xiàn)在寫代碼的流程一般是這樣:分析要解決的問題,遇到不懂的用英文在Google中搜索,Google一般會(huì)給出github或stackoverflow的答案,這種方式能解決90%以上的問題。如果用百度,就呵呵了,基本上看到的都是互相轉(zhuǎn)來轉(zhuǎn)去的幾篇過時(shí)文章。

善用工具形成自己的工作流
每一個(gè)程序員都應(yīng)該打造屬于自己的高效工作流
以下是我整合工具的過程:
因?yàn)轱柺躻indows下開發(fā)環(huán)境各種不兼容的痛苦,完全切換成linux又有諸多不方便,就嘗試在win10用wsl,但這個(gè)linux子系統(tǒng)的坑相當(dāng)多,無法滿足開發(fā)需求,時(shí)不時(shí)踩到一個(gè)坑,到官方倉庫一看,原來是一個(gè)bug,這種感受是很令人崩潰的。繼而用虛擬機(jī),雖然能滿足開發(fā)的需求,但過于笨重。然后又找到了docker,在win10上安裝了docker,創(chuàng)建ubuntu鏡像,現(xiàn)在全部的開發(fā)工作都在docker容器上進(jìn)行,體驗(yàn)相當(dāng)好。既沒有wsl的坑,也比虛擬機(jī)要輕巧靈活很多倍。
由于開發(fā)環(huán)境都在linux上,體驗(yàn)到了命令行的高效便捷,經(jīng)常用到vim,從一開始對(duì)vim的茫然、畏懼,到現(xiàn)在所有編輯器都只用vim模式,只用了兩個(gè)月的時(shí)間。有同事問我是怎么學(xué)會(huì)的,我回:“你嘗試著只用vim作為編輯器,用一段時(shí)間,自然就會(huì)了,一開始會(huì)很別扭,無從下手,但習(xí)慣了其設(shè)計(jì)理念,就會(huì)知道為什么vim是編輯器之神了”。
很多時(shí)候,我們對(duì)事物的恐懼是源于未知,敢于挑戰(zhàn)未知的人是真正的勇士。想想清代人以為拍照會(huì)將人的魂魄攝走,我們現(xiàn)代人會(huì)感到他們很愚蠢可笑,可其實(shí)現(xiàn)今的我們也是一樣,人性并沒有變。只是面對(duì)的事物不同罷了
以編輯器為例,用ide的人將vim視為有怪癖好的裝逼怪,用vim的人覺得用ide就是技術(shù)渣。這其實(shí)挺搞笑的,與其浪費(fèi)口水在爭(zhēng)論,不如用時(shí)間將兩者都體驗(yàn)下,然后自己就能作出選擇了。能力的強(qiáng)弱是看代碼質(zhì)量,而不是看用的工具好壞。我在寫小腳本時(shí)就用vim,大型項(xiàng)目時(shí)就用ide,ide開啟vim模式,不用去記憶不同ide的鍵位,這種體驗(yàn)對(duì)我來說是最佳的選擇。有些人喜歡將vim折騰成ide,這種強(qiáng)迫癥思維有時(shí)會(huì)把自己逼進(jìn)死胡同,vim的設(shè)計(jì)理念本身就不是要成為ide,何必去強(qiáng)求。
此外,默認(rèn)的bash過于樸素,改用成功能強(qiáng)大到炸的終極shell--"oh my zsh", mysql默認(rèn)的客戶端很難用,改用語法高亮且自動(dòng)提示補(bǔ)全的“my cli”,經(jīng)常需要同時(shí)打開多個(gè)終端,用xshell的標(biāo)簽頁不便于管理,改用“tmux”, python的版本切換很麻煩,改用“pyenv", 文檔工具用nodejs寫的"Gitbook"....
以上,每一種工具的使用都是出于我對(duì)現(xiàn)成工作流程的不滿而探索到的。
程序員是一個(gè)很好的工作,只要你有足夠的好奇心,你可以用工具加倍的提升你的工作效率,同樣的工作量,一年前的我,可能需要一天才能完成,而借助工具或自己寫的自動(dòng)化腳本,可能只需要半小時(shí)就完成,至于只需要敲一個(gè)命令,程序就自動(dòng)在跑了。但大多數(shù)人,并沒有這種意識(shí),善用工具是節(jié)省時(shí)間,節(jié)省時(shí)間就是延長(zhǎng)了生命。
所以,如果一個(gè)程序員一直在加班,要么是公司的項(xiàng)目一直很多,要么就是他很笨
要記住:“寧花機(jī)器一分鐘,不花程序員一秒”。

輸出自己的知識(shí)
學(xué)到的知識(shí)要輸出才能有更大的作用。
輸出知識(shí)是一件很消耗時(shí)間精力的事,如果只是單純的記錄技術(shù)筆記,隨便寫寫就好。寫成教程,不僅要將來龍去脈交代清楚,還要顧及不同受眾的知識(shí)理解水平,盡可能讓不同層次的受眾都能有所啟發(fā),這是很難的事情。
前陣子嘗試寫django的教程,總共寫了四節(jié),閱讀量并不多,這種純技術(shù)類的文章本身讀者就不多,雖然有簡(jiǎn)友來催更,但由于這種寫作方式?jīng)]有達(dá)到我自己的預(yù)期,過于干巴巴,并沒有讓讀者有更深入的理解,也沒能將我對(duì)django的理解充分表達(dá)。所以就暫時(shí)停止更新。最近在探索新的技術(shù)輸出形式,考慮加上錄制視頻,這樣才能更好地表達(dá)自己對(duì)知識(shí)的理解,讀者也更易于接受。
我之所以要做寫教程這么難的事,是因?yàn)槲乙糯笞约褐R(shí)的影響力,如果你覺得我的文章對(duì)你有所幫助,請(qǐng)給予我回饋,最好的回饋方式就是給予打賞。是的,就是這么簡(jiǎn)單粗暴...
趙樹理曾說:“我希望農(nóng)民能用兩個(gè)雞蛋換我的小說”,趙樹理并不缺這兩個(gè)雞蛋,但有了兩個(gè)雞蛋,他才知道農(nóng)民是真正喜歡他的作品。
同樣,我不是缺你這兩個(gè)雞蛋,而是你打賞了,我知道你是真心喜歡這篇文章,愿意為之付出時(shí)間之外的成本,所以無須用評(píng)論說謝謝,能用錢解決的事情就不用多說話了。
打賞,是你對(duì)我最真誠(chéng)的認(rèn)可方式