程序員工作兩年后的感受
大家好,我是3y。
不知道你們還是學(xué)生的時(shí)候,是否好奇工作兩年的人,究竟在公司學(xué)了些什么東西。我當(dāng)年還是比較好奇的,但卻不好意思去問(wèn),因?yàn)檫@樣會(huì)顯得我很呆。
我現(xiàn)在工作已經(jīng)兩年了,我想來(lái)簡(jiǎn)單講講這兩年我的工作體會(huì),給還在大學(xué)讀書的同學(xué)一些微小的參考。
在開篇之前,首先你們需要降低下預(yù)期,不要想著我經(jīng)常寫博客,就以為我懂得很多,其實(shí)不然。
技術(shù)和項(xiàng)目
在實(shí)習(xí)之前,憑借著我大學(xué)時(shí)期的"努力",當(dāng)年我找實(shí)習(xí)的簡(jiǎn)歷技能清單如下:

看起來(lái)還是很豐富很牛逼的,對(duì)吧?
其實(shí)很多只是用過(guò),里邊好多技術(shù)棧都是沒(méi)有真正理解它的思想和實(shí)現(xiàn)原理。
在大學(xué)期間自己動(dòng)手做了兩個(gè)小項(xiàng)目,從前端到后端到服務(wù)器部署都是自己搞的,往簡(jiǎn)歷貼了下在線地址。面實(shí)習(xí),小公司一般不成問(wèn)題,畢竟還是能從簡(jiǎn)歷看出,我是能干活的(:
面大公司?基礎(chǔ)、基礎(chǔ)、還是TM的基礎(chǔ)
“當(dāng)年只是自己用了下Git命令把代碼push到Github,就敢寫熟練應(yīng)用了
當(dāng)年只是自己用Maven的打包命令工具打個(gè)包,就敢寫熟練應(yīng)用了
當(dāng)年只學(xué)會(huì)了幾種設(shè)計(jì)模式,就敢說(shuō)自己熟悉常見的設(shè)計(jì)模式了
當(dāng)年連AQS的源碼都沒(méi)看懂,就敢寫自己熟悉Java基礎(chǔ)了
當(dāng)年
....唉,年少輕狂
回過(guò)頭來(lái),我認(rèn)為學(xué)生時(shí)期,沒(méi)有必要學(xué)習(xí)這么多"亂七八糟"的框架。因?yàn)槊嬖嚬僖豢春?jiǎn)歷就知道,你簡(jiǎn)歷寫的大多數(shù)技術(shù)棧,只是懂得如何使用罷了(:
很有可能面試官也沒(méi)用過(guò)各類你在簡(jiǎn)歷上列出的框架(別想著坐你對(duì)面的面試官是多么地牛逼,或許幾年之后,你也變成了面試官,你拿到簡(jiǎn)歷時(shí),一樣會(huì)發(fā)現(xiàn),存在很多自己還沒(méi)接觸過(guò)技術(shù)框架)
當(dāng)然啦,大廠的面試官都是有幾把刷子的(我認(rèn)識(shí)的大廠同學(xué),大多數(shù)下班之后都會(huì)自主學(xué)習(xí),提升自己)。
在簡(jiǎn)歷上只要有其中一二,面試官是了解的,他就可以問(wèn)針對(duì)某個(gè)框架一直問(wèn)原理了(比如Spring這種常見的)。這樣一來(lái),你寫在簡(jiǎn)歷上寫著各種了解某某某框架,意義也就沒(méi)那么大了。
面試是雙向選擇,放平心態(tài)吧
回到現(xiàn)在,像Shiro、Activiti這種框架,兩年后的我,只大概記得知道它們是干什么用的,細(xì)節(jié)都忘光了。
即便我大學(xué)時(shí)沒(méi)學(xué)過(guò),以目前的經(jīng)驗(yàn),花點(diǎn)時(shí)間擼會(huì)文檔我還是能快速入門一把。
工作以后,校驗(yàn)一個(gè)人是否真正有過(guò)項(xiàng)目經(jīng)驗(yàn)。我自認(rèn)為看他會(huì)不會(huì)用Maven和Git是一個(gè)很好的校驗(yàn)方式(如果他簡(jiǎn)歷上寫了這兩項(xiàng)工具的話)。比如:
“1.先說(shuō)下你日常使用的Git命令有哪些吧
2.假如我寫完項(xiàng)目代碼,沒(méi)切分支直接push到master分支了,怎么解決?
3.說(shuō)一下你日常使用的Maven姿勢(shì)唄?日常升級(jí)jar包版本的姿勢(shì)是怎么樣的?
4.現(xiàn)在項(xiàng)目起不來(lái)了,懷疑是各種依賴出現(xiàn)了版本問(wèn)題,導(dǎo)致失敗了,怎么排查?
因?yàn)楣ぷ髁艘院?,一般?lái)說(shuō)都會(huì)大量用到這兩個(gè)工具,而在沒(méi)工作之前是比較少機(jī)會(huì)深度使用的。
自然地,兩年后的我對(duì)部分工具的使用熟練度就日益提升了。
在技術(shù)方面,舍棄了很多還是學(xué)生時(shí)所了解過(guò)的技術(shù),而轉(zhuǎn)向于在工作項(xiàng)目中實(shí)際使用到的技術(shù)。
很多人曾經(jīng)問(wèn)我怎么提升自己的技術(shù),感覺自己所負(fù)責(zé)的項(xiàng)目太挫了。工作了以后應(yīng)該學(xué)什么東西,往往我給出的建議是:學(xué)工作中能用到的技術(shù)。
“比如,你用到了Kafka消息隊(duì)列,你就可以去學(xué)習(xí)Kafka的原理是怎么樣的
比如,你用到了Redis內(nèi)存數(shù)據(jù)庫(kù),你就可以去學(xué)Redis的原理是怎么樣的
比如,你用到了Flink流式處理框架,你就可以去學(xué)Flink的原理是怎么樣的
比如,你用到了HBase數(shù)據(jù)庫(kù),你就可以去學(xué)HBase的原理是怎么樣的
比如,你就只用到了Spring,你都可以去學(xué)習(xí)Spring對(duì)Bean生命周期的管理,以及各種日常使用注解其原理是如何實(shí)現(xiàn)的
....
在剛工作的時(shí)候,我對(duì)項(xiàng)目中使用到的技術(shù)都感興趣,想了解他們的實(shí)現(xiàn)原理是怎么樣的,又或者說(shuō)想了解這些框架誕生的過(guò)程。我覺得這是一件在技術(shù)成長(zhǎng)過(guò)程中很有趣的事。
“了解框架誕生的思想說(shuō)白了就是:在學(xué)習(xí)這個(gè)框架之前,知道為什么要使用該類型的框架,假如沒(méi)有該類型的框架以前是怎么樣的,而它的設(shè)計(jì)理念又是怎么樣的,為什么它能從同類型的框架脫穎而出,在項(xiàng)目里為什么又用到它。
從零學(xué)習(xí)一項(xiàng)能在生產(chǎn)環(huán)境中落地的技術(shù)的思想和原理,是幸福的。
由于老東家的技術(shù)還可以,所以基本市面上流行的Java后端技術(shù)我都淺嘗輒止地?cái)]了一遍,這兩年很大程度上提高了我的技術(shù)廣度,在這個(gè)過(guò)程中,就可以真正體會(huì)到:很多技術(shù)的思想是互通的。
比如各個(gè)技術(shù)框架(中間件)對(duì)待「持久化」這件事上,思想幾乎都是WAL(預(yù)寫日志):一邊寫內(nèi)存(緩存),一邊順序?qū)懭罩尽?/p>
精于基礎(chǔ),廣于工具
除開技術(shù)之外,還想說(shuō)的就是項(xiàng)目能力了。
曾經(jīng),我歸屬于某個(gè)leader下,他找我要了一份現(xiàn)在我所負(fù)責(zé)的系統(tǒng)文檔。我不知道他啃了多久,再后來(lái)有新的業(yè)務(wù)需求找到他時(shí),他就給我畫了下技術(shù)方案,并問(wèn)我這樣做是否可行,是否合理。
當(dāng)他跟我對(duì)方案的時(shí)候,我懵圈了(:原來(lái)我的老板是有讀過(guò)我所負(fù)責(zé)項(xiàng)目的代碼的啊,原來(lái)還有人不靠著我的描述就能把系統(tǒng)的架構(gòu)給弄懂的啊,我這老板強(qiáng)啊...
項(xiàng)目能力我認(rèn)為是需要時(shí)間積累的,5年經(jīng)驗(yàn)和2年經(jīng)驗(yàn)的人理解同一個(gè)新事物的速度是不一樣的(:
如果是新入職進(jìn)公司,不了解業(yè)務(wù)系統(tǒng)很正常。我認(rèn)為最快熟悉系統(tǒng)的方式就是:
首先去找系統(tǒng)負(fù)責(zé)人聊下業(yè)務(wù)背景:包括系統(tǒng)功能、系統(tǒng)架構(gòu)、系統(tǒng)日常問(wèn)題、系統(tǒng)上下游負(fù)責(zé)人等等... 刷歷史文檔和代碼,梳理系統(tǒng)運(yùn)行流轉(zhuǎn)核心鏈路 排查問(wèn)題/Debug/寫需求
不僅技術(shù)
我在大學(xué)的時(shí)候,選修過(guò)一門課程,課程名我忘記叫什么了。
印象比較深刻的是:當(dāng)時(shí)那老師在聊到職業(yè)發(fā)展的時(shí)候,她提及到:”絕大部分的職業(yè)都需要有良好的溝通和表達(dá)能力“
隨后補(bǔ)充:“但,除了有個(gè)職業(yè),程序員。感覺他們就坐在電腦前一直敲敲敲...”
大家都聽著,也沒(méi)人反駁。
工作了以后,才發(fā)現(xiàn)這是外行人對(duì)程序員的刻板印象。
我們需要面試進(jìn)入公司,面試不單單考察的是你技術(shù)能力,還得在這過(guò)程中需要表現(xiàn)你的溝通能力??赡芗夹g(shù)知識(shí)點(diǎn)你都了解,但你沒(méi)辦法清晰表達(dá)出來(lái),那面試官是不清楚的。 在工作中,我們需要跟產(chǎn)品聊需求是否可靠、跟同事聊業(yè)務(wù)背景、跟業(yè)務(wù)方聊細(xì)節(jié)等等,這些都需要自身去跟他人溝通,讓對(duì)方能快速get到你的問(wèn)題 在工作中,我們有技術(shù)分享,一場(chǎng)好的技術(shù)分享是需要讓大部分觀眾都能聽懂你在講述什么 在晉升中,我們需要在晉升會(huì)議上在十分鐘左右表述自己過(guò)去為公司做了什么貢獻(xiàn)。領(lǐng)導(dǎo)是不會(huì)想聽你修復(fù)了多少BUG,用了多少的設(shè)計(jì)模式編寫了多少行的代碼...
溝通表達(dá)(演講)能力對(duì)程序員來(lái)說(shuō),是很重要的,這是能夠讓你在同一個(gè)環(huán)境中脫穎而出的重要技能
大多數(shù)公司都會(huì)執(zhí)行KPI/OKR制度,每個(gè)季度都需要填寫績(jī)效(甚至可能每個(gè)周都需要寫周報(bào)),晉升/轉(zhuǎn)正需要寫PPT來(lái)簡(jiǎn)述自身的工作。人人都在笑阿里味(賦能、聚焦、抓手、閉環(huán)...)
但很多的時(shí)候,你不得不承認(rèn),這東西寫PPT/績(jī)效,確實(shí)有一手,這的確也是一種能力。
我歷屆的leader或者學(xué)長(zhǎng),曾經(jīng)都是技術(shù)大牛,都專研過(guò)行業(yè)內(nèi)技術(shù)各種方案和原理。但是,他們的現(xiàn)在的心思都不會(huì)只放在技術(shù)上。
我上一任leader曾經(jīng)跟我說(shuō)過(guò):”技術(shù)對(duì)于程序員來(lái)說(shuō),是最基本的基礎(chǔ)。我認(rèn)為每個(gè)程序員都應(yīng)該去了解現(xiàn)在熱門的技術(shù),不能偏離掉程序員的根本。但同時(shí),希望你們多發(fā)展些軟技能,這對(duì)職業(yè)發(fā)展是很有幫助的。不能只會(huì)寫代碼,寫代碼對(duì)于大多數(shù)程序員來(lái)說(shuō)都太簡(jiǎn)單了?!?/p>
我第一任學(xué)長(zhǎng)曾經(jīng)跟我說(shuō)過(guò):”可能你們剛畢業(yè)的都喜歡專研技術(shù),我能理解,我當(dāng)年畢業(yè)的時(shí)候也是這樣的。但是現(xiàn)在,我更去想要成為一個(gè)「業(yè)務(wù)專家」,技術(shù)這條路專研下去我認(rèn)為可能受益沒(méi)那么高。但不是說(shuō)你們就可以不專研技術(shù)了,只是重心我希望你們不僅僅只有技術(shù),可以多考慮考慮未來(lái)的路怎么走“
在告別杭州前,也找了我第二任學(xué)長(zhǎng)約過(guò)飯。他給我分享經(jīng)驗(yàn)就是:”我覺得,我們這種搞互聯(lián)網(wǎng)的,優(yōu)勢(shì)就在于對(duì)數(shù)據(jù)比較敏感。你說(shuō)我們?nèi)绻粚懘a了,要干什么去,也不好說(shuō)啊。“然后給我分享了個(gè)成功案例,靠著對(duì)現(xiàn)有數(shù)據(jù)的分析以及對(duì)互聯(lián)網(wǎng)流量的看法,是怎么一步一步創(chuàng)業(yè)的...
技術(shù)是硬技能,軟技能也很重要
當(dāng)我向上一任leader提出離職的時(shí)候,leader表示能理解,并表示:如果能早點(diǎn)回到自己的家鄉(xiāng)打拼,未嘗是一件壞事。
我第二任學(xué)長(zhǎng)也表示:離開一個(gè)城市轉(zhuǎn)到另一個(gè)城市的風(fēng)險(xiǎn)就在于,所維護(hù)的圈子和人脈可能就要重新認(rèn)識(shí)了,這成本可是很大的。
當(dāng)我的學(xué)長(zhǎng)或者同事離職后去新的去處之后,他們都會(huì)發(fā)出邀請(qǐng):”要不你來(lái)我這邊試試唄?“
包括我現(xiàn)在寫公眾號(hào),也是有自媒體的圈子。
一個(gè)好的圈子,一定是會(huì)給你帶來(lái)正收益的反饋

工作兩年后,技術(shù)相較于以前有明顯的提升,圈子發(fā)生了變化,思想也發(fā)生了變化。
以前覺得一個(gè)月拿很高工資的人牛逼,但后來(lái)發(fā)現(xiàn),他們大多活得都不那么容易(老板給你多少錢,一般是需要你付出多少代價(jià)的)。
以前覺得技術(shù)很重要,后來(lái)覺得在職業(yè)道路上技術(shù)好像又沒(méi)想象中那么地重要。
以前覺得很多事情沒(méi)那么簡(jiǎn)單,后來(lái)發(fā)現(xiàn)只要給我時(shí)間,也沒(méi)這么困難。
以前覺得網(wǎng)上的大神很牛逼,后來(lái)自己寫了文章才發(fā)現(xiàn),原來(lái)也就這么一回事,他們也未必做到了如文章所寫的事。
向陽(yáng)而生,好好生活

我是3y,我們下期技術(shù)干貨見吧
