前幾天吃了自己的生日蛋糕,28了呀。離那個(gè)我覺得應(yīng)該有事業(yè)的30+,又近了一些。最近我在想工作和事業(yè)區(qū)別,何為工作,何為事業(yè)?以前是沒有多大感觸,現(xiàn)在越來(lái)越覺得工作它僅僅是能讓你有一份收入,讓你不受饑寒。而事業(yè)是在你獲得到物質(zhì)收入的同時(shí),還有精神的充實(shí)感。事業(yè)的價(jià)值遠(yuǎn)高于工作,所以盡量讓自己用一份能夠?yàn)橹畩^斗的事業(yè)吧。
今天在上班的公車上,我聽完了極客時(shí)間上“左耳聽風(fēng)”這個(gè)課程,一共107個(gè)章節(jié),真是收益頗多呀。很難想象有人能夠把技術(shù)規(guī)劃講的這么全面,這么深刻??偟膩?lái)說(shuō)這是一個(gè)“授人以漁”的課程,它在嘗試教會(huì)你去學(xué)習(xí),然后在學(xué)習(xí)中提升自己,而不是直接把成果放在你的面前。就像它在文章中說(shuō)的那樣,一個(gè)走別人的路上山的人和一個(gè)自己開路上山的人,差距不是一點(diǎn)點(diǎn)。如果現(xiàn)在的你,有一些職業(yè)上的困惑,或是有一些對(duì)于自己將來(lái)的迷茫,那么我推薦你去看一看這個(gè)課程,這是一個(gè)工作二十年的軟件開發(fā)者的總結(jié)。
回到今天要說(shuō)的話,總結(jié)一下自己工作七年以來(lái),所信奉的“至理名言”。七年的工作經(jīng)歷中,這個(gè)“名言”的集合里,有一些一直在,有一些是后來(lái)加入的,當(dāng)然也有一些隨著工作的經(jīng)歷被剔除掉了。
- You do not know what you do not know
你不知道那些你不知道的
這句話是在“左耳聽風(fēng)”的文章中看到的。當(dāng)時(shí)看到這句話的時(shí)候,腦子里著實(shí)風(fēng)暴了一把。
三年前,我在一個(gè)公司任研發(fā)崗位。當(dāng)時(shí)手上的任務(wù)是開發(fā)一個(gè)系統(tǒng),它能夠集成多個(gè)不同類型的數(shù)據(jù)庫(kù)的數(shù)據(jù),來(lái)統(tǒng)一為上層提供數(shù)據(jù)服務(wù),總的數(shù)據(jù)量在三億左右。當(dāng)然該系統(tǒng)必須滿足高性能、高可用。歷經(jīng)一年的折騰以后,這款被我們命名成“虛擬數(shù)據(jù)中心”的產(chǎn)品問世了。
好吧,現(xiàn)在來(lái)說(shuō)說(shuō)它的幾項(xiàng)“如果當(dāng)時(shí)知道”。
- 如果當(dāng)時(shí)知道有Maven,就不用那么辛苦的去網(wǎng)上各種download jar包了,也不用費(fèi)勁的手動(dòng)編譯、打包...
- 如果當(dāng)時(shí)知道有Git以及GitFlow, 我們就不會(huì)揪心于各種代碼沖突導(dǎo)致的開發(fā)障礙了,有一個(gè)合適的版本管理工作流,是多么重要呀。
- 如果當(dāng)時(shí)知道有Dubbo,我們就不用采用java rmi這種原始的rpc方案了。是的,java原生序列化效率真的不高。
- 如果當(dāng)時(shí)知道有Dubbo,我們就不用手動(dòng)寫輪詢調(diào)用,手動(dòng)捕獲異常重試以及統(tǒng)計(jì)權(quán)重了。是的,真的很累,而且很難跟蹤bug。
- 如果當(dāng)時(shí)知道有spring-boot,我們就不會(huì)糾結(jié)于各種jar的版本適配問題以及各種繁重的xml配置了。當(dāng)時(shí)想想真的是cry了。
- 如果當(dāng)時(shí)知道有中間件,我們就會(huì)知道,這個(gè)系統(tǒng)其實(shí)就是類似于一個(gè)數(shù)據(jù)庫(kù)中間件的產(chǎn)品。
一年的時(shí)間,我們重復(fù)造了一個(gè)巨大的輪子。
而這個(gè)“巨輪”的產(chǎn)生根源就在于這句話,“你不知道那些你不知道的”。是的,所以搜索引擎也無(wú)能為力,因?yàn)槟愀静恢缿?yīng)該搜什么樣子的關(guān)鍵字。
學(xué)習(xí)的過程,是一個(gè)漸漸知道的過程,也是一個(gè)漸漸無(wú)知的過程。作為一名程序員,一名工程師,你的知識(shí)面很重要。至少你得知道個(gè)關(guān)鍵字,是吧。
博觀而約取,厚積而薄發(fā)
很幸運(yùn),現(xiàn)在的我們處于信息爆炸的時(shí)代,你可以通過搜索引擎找到任何你想要的知識(shí)?;诖髷?shù)據(jù)的分析,它甚至?xí)鲃?dòng)的出現(xiàn)在你的面前。
很遺憾,現(xiàn)在的我們處于信息爆炸的時(shí)代,充斥在你身邊的很多可能都是沒有價(jià)值的信息,甚至是錯(cuò)誤信息。當(dāng)你無(wú)法鑒別真?zhèn)?,而選擇來(lái)者不拒的時(shí)候,悲劇就發(fā)生了。
當(dāng)然,初期的你會(huì)因?yàn)楂@取到這些知識(shí)而滿足,它給你帶來(lái)了一種虛幻的成就感和滿足感。接著你會(huì)因?yàn)樾畔⒌亩喽s亂感覺到焦慮,你無(wú)法通過這些碎片來(lái)組裝自己的知識(shí)圖。當(dāng)遇到需要實(shí)踐到項(xiàng)目的時(shí)候,你破碎的知識(shí)體系只會(huì)讓你無(wú)所適從。
我明明學(xué)習(xí)那么拼命,不是嗎?
想象一下,我們所接觸到的技術(shù)博客是作者的總結(jié)歸納,一篇千字的文章會(huì)涉及到整本書,甚至數(shù)本書的知識(shí)。你看完了文章,覺得自己掌握那些書,掌握了那項(xiàng)技術(shù)。這就像是高中語(yǔ)文考試題中總結(jié)中心思想,而你通過看完所有課文的中心思想總結(jié),覺得自己完成了整個(gè)高中語(yǔ)文課程。
一個(gè)實(shí)際例子,半年前我喜歡通過訂閱微信的技術(shù)公眾號(hào)來(lái)學(xué)習(xí),數(shù)了下,一共有27個(gè)技術(shù)訂閱號(hào),收藏的文章在數(shù)百篇之多。這些文章占滿了我的所有碎片時(shí)間,每天上班路上、下班路上、吃飯、休息。經(jīng)過這樣大約三個(gè)月的時(shí)間,我卻感覺自己越學(xué)心里越?jīng)]底。有一些文章講解的框架是四五年前的老版本,有一些文章明明說(shuō)的是相同的技術(shù),卻在論述著不同的觀點(diǎn),更有甚者所記錄的完全是沒有親身實(shí)踐過的技術(shù)。以上種種,真是讓人奔潰。
博觀而約取,我們要學(xué)會(huì)去辨別哪些是對(duì)我們有利的信息。來(lái)者不拒的話,只會(huì)讓自己疲于奔命,而最后一無(wú)所獲。
好的學(xué)習(xí),要有好的來(lái)源,如官方的文檔、有沉淀的書籍以及身邊的大牛。
架構(gòu),其實(shí)就是平衡的藝術(shù)
沒有最好的架構(gòu),只有最適合自身業(yè)務(wù)的架構(gòu)。我們?cè)谶x擇一個(gè)新的架構(gòu)或者引入新的技術(shù)的時(shí)候,必然會(huì)失去一些東西。比如redis cache對(duì)于讀性能的優(yōu)化很好,我們選擇引入它,那么就會(huì)面臨一些其他的問題,如系統(tǒng)可用性變低,系統(tǒng)復(fù)雜度變高,數(shù)據(jù)的實(shí)時(shí)性變差等等。而最后是否還是需要引入它,那么就需要你做好此中的權(quán)衡了。簡(jiǎn)單來(lái)說(shuō),權(quán)衡就在于收益是否大于支出,是的,就像你花錢買東西一樣,你只要覺得東西的價(jià)值足夠大,你才會(huì)選擇花錢。
那么如果去計(jì)算這個(gè)收益得失呢?
很可惜,沒有準(zhǔn)確答案。比如當(dāng)你的業(yè)務(wù)只是一個(gè)MIS系統(tǒng)的時(shí)候,那么肯定沒有必要引入如緩存之類的高性能組件,因?yàn)槟愕臉I(yè)務(wù)場(chǎng)景就決定了這個(gè)不是一個(gè)高并發(fā)的場(chǎng)景。當(dāng)然這是一個(gè)比較好決策的實(shí)例。而對(duì)于其他的,就要依靠你的經(jīng)驗(yàn),你對(duì)于業(yè)務(wù)的理解程度,以及對(duì)于人員、成本等一些外在因素的考量。
好的架構(gòu)師,好比一個(gè)精打細(xì)算的小商販,要計(jì)算著每單的支出與收入。
而好的架構(gòu),也是在基于實(shí)際的業(yè)務(wù),計(jì)算著各個(gè)技術(shù)點(diǎn)的成本與收益,然后找到一個(gè)平衡點(diǎn)。
技術(shù)的價(jià)值來(lái)源于業(yè)務(wù)
這句話是我在Qcon技術(shù)分享上看到的。我相信這個(gè)應(yīng)該是不少人的痛點(diǎn)吧。是的,無(wú)論你研究了多么底層的技術(shù),學(xué)習(xí)了多么新的框架,你可能都需要回頭看看,看看它們是否能夠服務(wù)于了業(yè)務(wù)。
我想理想的開發(fā)場(chǎng)景應(yīng)該是這樣的:
七八個(gè)人的小團(tuán)隊(duì),正著手于公司新業(yè)務(wù)的從零出發(fā),他們有著身為工程師的榮譽(yù)感,有著身為程序員的修養(yǎng),更有著一致的目的。于是在拼搏若干月后,他們完成了第一個(gè)版本的發(fā)布。系統(tǒng)流入市場(chǎng)后,受到了很多用戶的正面評(píng)價(jià),于是一傳十,十傳百,便匯集了更多的用戶。一段時(shí)間以后,一些業(yè)務(wù)的不足點(diǎn)浮出水面,系統(tǒng)也在高并發(fā)下出現(xiàn)了延遲不可用的情況。團(tuán)隊(duì)于是開始了第二版的開發(fā),針對(duì)切實(shí)的用戶痛點(diǎn)進(jìn)行需求整改,針對(duì)系統(tǒng)的延遲進(jìn)行優(yōu)化以及重架構(gòu)。然后第二版發(fā)布,再第三版,再第四、第五...
是呀,讓業(yè)務(wù)去推動(dòng)著技術(shù)的進(jìn)步,這是一件多么美好的事情呀。
我們不怕開發(fā)過程的辛苦-加班、熬夜、無(wú)休。我們希望自己的技術(shù)能夠去服務(wù)于一些人,去優(yōu)化一些事,如果從中還能再得到一些正面的反饋,那真是極好的。
我相信,這才是技術(shù)的價(jià)值。