開發(fā)者怎樣在枯燥的工作中尋求技術(shù)的提升
技術(shù)成長(zhǎng)是很多同學(xué)面臨的問題,一些工作了幾年的同學(xué)會(huì)遇到成長(zhǎng)瓶頸,覺得自己進(jìn)步緩慢,無論是公司業(yè)務(wù)的原因還是個(gè)人原因,覺得自己的技術(shù)水平得不到成長(zhǎng)了?;蛘咭恍﹦偣ぷ鳑]多久的同學(xué)和在找工作的同學(xué),都想在一個(gè)好的環(huán)境下工作,提升自己的能力。
如果你有一個(gè)好的平臺(tái),你可能做一個(gè)很小的功能就會(huì)有幾十萬幾百萬的用戶使用。做一個(gè)新產(chǎn)品,從主線產(chǎn)品稍微導(dǎo)入一點(diǎn)流量過來可能就有幾十萬幾百萬的訪問。你不僅要將功能開發(fā)出來,還要考慮到性能問題,能支持多少的訪問,是否需要水平擴(kuò)展,是否需要做負(fù)載均衡等等問題。每次不斷有新問題不斷有新挑戰(zhàn),就可以不斷成長(zhǎng)。
如果你沒有這樣一個(gè)平臺(tái),可能你們公司運(yùn)營(yíng)了1、2年的產(chǎn)品才有幾千、一萬的用戶,有些技術(shù)問題你根本連遇到的機(jī)會(huì)都沒有。用戶量沒有上去,業(yè)務(wù)不復(fù)雜,什么分庫(kù)分表、讀寫分離、負(fù)載均衡、分布式設(shè)計(jì)等等和你無關(guān),因?yàn)楣井a(chǎn)品還沒有發(fā)展到那樣的級(jí)別。
我偶爾會(huì)聽到一些在二線城市的朋友說:“做技術(shù)就在北上廣待著,別回來,小城市的項(xiàng)目不養(yǎng)人。做的東西沒什么挑戰(zhàn),沒幾個(gè)用戶,都是CRUD,時(shí)間久了人就廢了。”
這是外部原因,不得不承認(rèn),一個(gè)好的平臺(tái)對(duì)一個(gè)人的發(fā)展至關(guān)重要,無論什么職業(yè)。我個(gè)人對(duì)技術(shù)提升有一些自己的見解,我們高中物理都學(xué)過「勻加速直線運(yùn)動(dòng)」,他的公式是這樣的:

我們都學(xué)過這個(gè)公式,S是位移,V0是瞬時(shí)速度,a是加速度,t是時(shí)間。在技術(shù)成長(zhǎng)之路上,S是你的技術(shù)能力,V0是你當(dāng)初決定鉆研技術(shù)的熱情,a是你技術(shù)成長(zhǎng)的加速度,t是時(shí)間。你技術(shù)的能力有多少,不是你一時(shí)的熱情決定的,而是你成長(zhǎng)的加速度和時(shí)間決定的。t很好理解,如果你堅(jiān)持學(xué)習(xí),隨著時(shí)間的推移,現(xiàn)在的你一定會(huì)比以前的你更有能力。
a是我認(rèn)為最重要的一項(xiàng),它指的是技術(shù)成長(zhǎng)的加速度,由兩部分構(gòu)成:
- 你所在的平臺(tái),這一點(diǎn)我剛才已經(jīng)提到了,一個(gè)好的平臺(tái)很重要。
個(gè)人的學(xué)習(xí)
當(dāng)你同時(shí)滿足這兩點(diǎn)時(shí),你才能在相同的時(shí)間內(nèi)比別人學(xué)的多很多。然而并不是每個(gè)人都會(huì)有一個(gè)好的平臺(tái),畢竟BAT就招那么多人,明星互聯(lián)網(wǎng)企業(yè)就那么點(diǎn),不是每個(gè)人都能進(jìn)去。還有大量的二三線城市的開發(fā)者,可能他們的業(yè)務(wù)做的并不是那么大。
當(dāng)你沒辦法保證你的***項(xiàng)時(shí),你只能想辦法讓自己的第二項(xiàng)足夠優(yōu)秀。這樣,你的整個(gè)a才能不至于比別人小很多。
怎么通過個(gè)人學(xué)習(xí)來提升自己呢?我們都知道一定要學(xué)以致用,學(xué)了的東西如果不用,過一段時(shí)間就忘了。如果你平時(shí)經(jīng)常寫PHP,突然一段時(shí)間因?yàn)楣ぷ髟蛉慓olang了,等再回來寫PHP的時(shí)候發(fā)現(xiàn)手生,寫起來沒有以前流暢了。
你看了《高性能MySQL》,看了《Unix網(wǎng)絡(luò)編程》還看了《深入理解Nginx:模塊開發(fā)與架構(gòu)解析》,你不去實(shí)踐,你是很難更深層次的理解他們的。但你所處的環(huán)境又涉及不到這些怎么辦?你就是個(gè)寫業(yè)務(wù)層代碼的,你們公司產(chǎn)品沒多少用戶根本用不上這些,你只是一個(gè)小外包公司做網(wǎng)站的,功能要求能用就行。我覺得這些根本不是你追求更深層次技術(shù)的借口,或許你現(xiàn)在用不上,但總有一天你會(huì)用得上的。只是你現(xiàn)在的方式可能有一些問題。
你需要先從你手上的工作開始。
如果你是一個(gè)寫業(yè)務(wù)層API的,每天的工作就是照著套路去寫代碼,按照一定的規(guī)則一個(gè)一個(gè)的寫?;蛟S你可以嘗試一下讓自己不再去做這種重復(fù)性的體力勞動(dòng),能不能寫一個(gè)程序,讓這個(gè)程序自己生成API,而你每次只需要做一些簡(jiǎn)單的配置。這樣騰出的時(shí)間可以去做自己感興趣的事情,可以學(xué)習(xí)一些新東西。你的領(lǐng)導(dǎo)發(fā)現(xiàn)后,你也會(huì)有機(jī)會(huì)做更有意思的事情。
同樣,你也可以閱讀一下你所使用的框架的源代碼,學(xué)習(xí)一下別人的設(shè)計(jì)思想,如果你覺得哪里有問題或者不夠好,你可不可以給作者提交一個(gè)Issue或者PR。
平時(shí)用到的Apache、Nginx、fpm這些,你知道他們的master進(jìn)程是怎么管理worker進(jìn)程的嗎?他們是怎么接收請(qǐng)求的,select、epoll這些你了解嗎?
你平時(shí)開發(fā)解決的一些特殊場(chǎng)景,例如加解密、支付接口調(diào)用、Excel導(dǎo)出、繪圖等,可不可以單獨(dú)做成一個(gè)庫(kù),開源出來和大家交流學(xué)習(xí)?
你有寫博客嗎?或堅(jiān)持寫博客嗎?
或許我們表面上在做著一些枯燥乏味的事情,這些沒有辦法幫助我們成長(zhǎng),但我們自己要有極客精神,我們要用極客的手段釋放自己的勞動(dòng)力,我們要樂于分享樂于學(xué)習(xí),能從簡(jiǎn)單的事物中發(fā)掘它的本質(zhì)。工作大部分都是重復(fù)性的、枯燥的,不同層次感受都是一樣的,你每次設(shè)計(jì)功能知道怎么支撐并發(fā)怎么高可用,重復(fù)這一套大同小異的東西,你一樣也會(huì)覺得沒什么意思。我們不斷在這種枯燥的工作中尋找有趣的事情,才是有價(jià)值的。
和團(tuán)隊(duì)的同學(xué)聊天時(shí)的感悟,即興而寫,希望對(duì)你有一些幫助。