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

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