做爲程序員,我到底在恐慌什麼前端
程序員們會以爲恐慌麼?有時候我會。java
或者說,如今也會。程序員
這種恐慌大概是在上學的時候就有了。面試
上學的時候我不知道怎麼入門,去書店裏看書,C,VisualBasic,Java,C#,C++,Pascal,這些語言讓我困惑。算法
特別是學的數據結構,計算機網絡,算法,這些東西學了以後,倒底能幹嗎,我知道UDP是有可能不按順序到達的,我知道數據鏈路層是在物理層之上的,sql
我知道了能夠深度遍歷,能夠廣度遍歷一棵樹,可是這跟寫代碼有什麼關係呢?小程序
Access,Mysql,Oracle這三種又該學什麼呢?後端
還有JSP,PHP,ASP,這些書上講的不少概念,都讓我恐慌。設計模式
我以爲我是陷在了一個知識的海洋,不是知識的泥沼中,或者是知識的酒池肉林,迷宮,黑暗森林,摺疊空間。緩存
要找工做了,我該找什麼工做?
迷失方向,無所適從,這是我做爲初學者的恐慌。
好在我選擇了考研,總算把這種恐慌,推遲了三年。
讀研的時候,漫無目標的選方向,人工智能,那是什麼鬼。
數據挖掘?挖掘機嗎?
天然語言處理?我可不想當翻譯。
信息安全?算了,看到那些加密解密我就頭大,仍是福爾摩斯密碼有意思~~
網絡安全?得,OSI七層協議我已經學的夠夠的,讓滑動窗口見鬼吧。
圖形圖像處理。。。。。不想當一個畫圖的。
模式識別。。。難道之後我就要去當成一個魚類分撿器嗎。
我只是想老老實實寫代碼而已啊,嗯。基於Agent的軟件工程,這個不錯~~~
一直想知道軟件怎麼開發出來的,這個Agent的概念看起來好厲害的樣子,並且也很容易和我之後的工做聯繫起來。
單隻憑本身當年的認知,很難在分叉口決定倒底應該選擇哪條路走下去。
而後,又到了找工做的環節。
鬼使神差的選擇了Java。
大概唯一的緣由,就是招聘網站上,招java的公司太多了。
我天天都在刷網站,天天都在認真的記錄招聘網上倒底要什麼技能。
我每次面試都要解釋本身沒有工做經驗,只是作了一個兼職,會了點ASP。
我在北京的街頭來回遊走,在一個陌生的城市四處奔波,我學會了表達本身,但長進最大的技能就是問路。
保安能夠問,打掃衛生的阿姨能夠問,警察能夠問。
年輕人不能問,過路的人不能問。
中關村圖書大廈,就是個人圖書館。
把書按斤賣的二手書店,就是個人導師。
而每次面試,都是我糾正方向,貪婪的學習新知識的課堂。
到底什麼樣的水準,能讓我找到一份工做?這是在找到工做以前,最大的恐慌。
終於入職了一家公司,而後就是鋪天蓋地的新知識點,新環境。
第一次上班,我也去看了一些職場上要注意的點,但是總以爲陌生又不敢嘗試。
我懼怕跟其餘同事交談,唯恐他們知道了我是一個菜雞。
我連什麼是IDE都不知道,一直分不清Eclipse和Myeclipse的區別,在那一個月裏,我主動熬了兩個通宵,
週末就是學寫JDBCTemplate,Mysql,JSP,Html,CSS,JavaScript,Struts,Spring。
各類In Action。
我以爲那一個月裏,我弄明白了不少東西,這些都是之前我上學的時候沒有學過的,我以爲本身是在嘗還債務。
我想,科班出身的人,應該不會像我同樣吧?畢竟我本科不是計算機專業啊。
學了這麼多以後,我開始有了本身的思考。
我不喜歡那家公司的命名方式,也不喜歡如今他們作的事情,天天就是寫CMS,天天就是寫CMS。
入職之後,本身的我的成長應該往哪一個方向走?
到了第二家公司,又學會了WebService,學會了Maven,學會了Shell,學會了解析XML,學會了版本命名。
到了搜狐以後學會的東西更多,哇,那個驚天地泣鬼神,無助,弱小,可憐的萌新菜雞,在大神面前瑟瑟發抖。
他們展現給我看了一個優秀技術人員的素養:熱情,主動,嚴謹。
而在這個時候,我不斷的衡量本身和他們的差距,最終的結論就是,大概在五年以內,我都不可能達到他們的高度。
我該怎麼辦?最初是恐慌本身會不會被團隊發現我是一個菜逼,而後被開除,被恥笑。
而後是困惑,本身看到了眼前有神同樣的人,好像是沒法突破的大山。
他們可以在兩個星期以內搞懂Erlang,而且用到線上,還可以推廣給全團隊。
他們可以猜出來Facebook的開放平臺是如何實現,討論各類不一樣的技術方案最後整理出來了本身的一套標籤庫。
他們可以直接修改Tuscany的源碼,把ActiveMQ完美的嵌入進Tuscany的框架裏,讓咱們用到消息隊列的時候,根本不用關注細節。
而我。。。剛入行一年的程序員,連JDK的源碼都沒看過。
並且,那個時候一直在有人說,程序員在30歲之後就沒辦法寫代碼了,我該怎麼辦?
個人同窗,在畢業以後,一直作天然語言處理,而我也終於明白了天然語言處理是作什麼的。
他們作分類,作聚類,天天抓取Twitter的內容,玩的很開心。
我想我應該選擇去作算法,畢竟,作算法的人,越老越吃香,而程序員呢?總會有新的技術被代替。
在算法和架構之間,實際上是程序員對於將來生存能力的恐慌。
因而我到了一家作算法的公司,在那裏又開始了新的領域。
我學會了抓取,學會了分詞,用CRF寫了實體識別,還學會了Hadoop和Cassandra,順帶又學會了什麼叫實時搜索。
到如今我都記得,這是跟原來當程序員的時候,徹底不同的體驗。天天看英文文檔,天天倒騰語料,天天調整參數。
而我身邊的人呢,每個都有本身擅長的領域,作搜索的小朋友手把手教我怎麼調試Lucene的高亮算法,作Hadoop的小朋友告訴我一個Job倒底該怎麼寫,怎麼跑。
而我作NLP的朋友,教會我如何生成語料,怎麼樣自動抽取新詞,作去重的小朋友告訴我什麼是Spotsig算法。
在那個時候,我能體會到的就是每一個領域的深不可測,想在一個領域裏作成專業,精通的人,都很困難。
咱們老大告訴我說,公司裏的每個人,都是聰明人。
我認真的對比如今和當初的選擇,無論怎麼樣,我知道不少人比我聰明的多,在這些專業的領域裏,我比不上他們。
而在算法上的恐慌,就來自於根底不足,好後悔當初在碩士的時候,爲毛沒好好學習數據挖掘和算法。
不只如此,咱們還要作搭建一個知識庫。什麼是知識庫?什麼是OWL?
什麼是三元組?
知識庫又是一個新的大門,而我,在當時,多是搭建了一個全國惟一的一個證券領域的知識庫系統。
這套系統的價值,到如今都沒被髮揮出來,可是我對知識庫的畏懼,從未曾消除。
老大找的是一個博士,來協助我作相關的工做。在跟那個博士交流的過程當中,我愈加的畏懼。
是對知識的畏懼。這些東西,恐怕我要在知識庫領域裏,沉澱好久纔會明白。
但是在這個時候我有了一點厭倦,作了大概一年算法的時候,慢慢就明白,沒有科研功底,想改變算法是徹底不現實的事情。
算法更多的就是在調整參數,調優,優化,把正確率和準確率一點點的提高。
而我原來在搜狐的時候,未徹底消化的團隊協做模式,敏捷開發流程,系統架構能力,卻又是當前公司最須要的。
除了我,他們都不懂這些。
而我這個時候實際上是很懼怕的,畢竟在搜狐是大神們搭好了框架體系,而我,如今是要本身來。
從使用別人的架構體系,到本身從頭開始搭建一套體系,當心謹慎的犯錯並解決問題,這是初級程序員走向中級程序員的畏懼之心。
在這個時候,我開始瘋狂的刷Apache,Spring等各類開源框架,天天都想去看看,他們有沒有新的版本,有沒有新的框架能夠應用在咱們本身的領域上。
我用了QPID替代ActiveMQ作爲本身小型系統中的消息隊列,用了OSCache做了頁面級的緩存,用MongoDB替代了Cassandra。
我還作了運維的工做,手忙腳亂的搭私服,搭Hudson,搭confluence,搭SVN服務器。
這些基礎的東西,包括敏捷開發的流程,包括多團隊並行開發的管理,線上Bug的修復,全部的這些,都在這段時間裏,由搜狐留下的種子,慢慢生根發芽。
老大帶我去參加Qcon大會的時候,跟我說,你就是咱們公司的架構師。
我是麼?我以爲有點不太可能。我只是一個工做不到三年的架構師,我跟原來的大神們比起來差遠了。不少時候我只能反來複去的解決問題,我不知道問題的根源在哪裏,我也沒有時間也沒有耐心去認真的讀他們的源碼。
又或者我看了他們的源碼以後,根本不是本身喜歡的風格,我去讀重構,去讀設計模式,去學習什麼是優雅代碼,去看敏捷開發。一直都以爲本身太菜了,太弱小了,什麼都不會。
身上有了責任以後,恐慌每每就來自於,你就是全公司最後的技術支柱,別人解決不了的問題,你必須解決,完成最後一擊的人,必須是你。
而到了後來,由於我的對殺人遊戲的喜歡,又迷戀上了規則引擎。早就對這種棋類遊戲的開發看不慣了~~
這明顯就是規則引擎應該處理的啊。
殺人遊戲,象棋,捉鬼,徹底就是規則的問題,因而又死命的學Drools,學RETE算法,欲仙欲死。
寫了N多的規則,雖然不爽,可是很開心啊,不少底層的東西沒弄明白,可是已經摸索出來一套可行的東西了。
在此期間又折騰了Erlang,Erlang的語法真心是。。。若是不是我恰好懂了點Drools,百分百不明白。爲了配合公司的應用場景,保證不丟消息,實現Comet的過程當中又改了點東西。
後來在作多人掃雷的時候,發現Comet徹底支撐不了延時,一次點擊大概會有18MS~38MS的延遲,根本沒法達到實時遊戲的效果,怎麼辦?
WEBSocket又橫空出世,因而又去看WebSocket怎麼作,看Jetty,仍是Tomcat,仍是Resin支持。
這個時候就特別的恐慌,太多東西不明白,太多底層的東西須要花時間理解,每個方向上都能遇到比你瞭解更深刻,更專業的人,我須要怎麼作?
而微信公衆號又出現了,去了解微信公衆號的API,token機制,還順便搭了一個OPENID的服務器,就是沒用Auth。
不旦如此,我在管理上面的成長也很是快,並且對於PM產生了極大的興趣。
厭倦了老是成爲別人手裏的工具,程序員代碼寫的再好,也彌補不了產品自己的缺陷,加班熬夜再多,也只能修復Bug,不能帶來流量。
因此在作需求評審的時候,有一種衝動,想去作產品。
這個時候又是一個轉折點,到底應該是繼續作技術,或者是作管理,或者是作產品?
我選擇了去學習產品和運營。
這種恐慌,仍是來自於對技術的不肯定性,總覺得命運掌握在別人手裏。
我還學了前端,JQuery,Bootstrap,AngularJS。
但是每過一段時間,就會出現一些新的知識點和概念。
當Go語言出現的時候,他們說Let’s Go。
當ReactNative出現的時候,當Swift出現的時候,當Kotlin出現的時候,當Vue出現的時候,當區塊鏈出現的時候。
甚至連一直平靜的算法界也出現了深度學習的時候。
Devops一直讓人眼花瞭亂,從Docker,Ansible,到openstack,到如今的脫機運維,雲服務的概念讓運維升了仙。
灰度發佈,彈性擴容,隨着雙11,春節,各類高併發的場景層出不窮。
而中國的互聯網率先走向國外,異地數據同步的問題又扔到了人前人後。
還包括VR和AR,ibeacon還未能徹底發揮熱量,可能就已經被遺忘了,支付的快速發展,讓支付寶和微信的支付SDK幾乎成爲了標配。
而IM的興起,第三方統計數據的SDK更是佔所一席之地,不用說分享組件和第三方登陸組件了。
微信公衆號不斷的開放接口,小程序又落地誕生,科大訊飛的語音識別也越走越遠,直播的興起讓技術又一次走上高潮。
Openresty+Lua在微服務的世界裏開心了一下子,Spring Cloud和Spring Boot 和Shiro 又出如今眼前。
Json快要成爲標配的時候,yaml說我更簡潔。
Maven在後端領域成爲了標準的王者,Android的世界卻打上了Gradle的烙印。
還不用說前端領域一片亂戰。
這是一個技術讓人瘋狂的時代,每一項技術都爆發出來迷人的光輝和色彩,而我卻在他們的照耀之下,面色慘白。
我到如今還有不少東西不明白,而這些又是讓我無限恐慌的來源,不少時候,你被逼着要懂不少東西,是由於你要去作的東西,必須這麼幹。
Zabbix尚未徹底獲勝,各大雲服務廠商已經推出來本身的監控API。
而現在你想作一個餐飲系統,對接美團,餓了麼這些外賣平臺的坑,是必然要走的。
還有萬惡的金融,銀行存管的事情,他們又有了各自的接口。
咱們得知道,如何在O2O平臺中,計算用戶周邊有哪些便利店,這樣要用到MongoDB。
咱們得知道,ElasticSearch可以作到實時索引,並且比Solr更簡單。
咱們還得知道,大數據那一套龐大的體系正在不斷的孵化新的東西,Spark這些東西還在遠方閃閃發亮。
我不知道這對於程序員來說算什麼,而我內心其實一直很恐慌。
我還在努力的學習PM,學習運營,學習公司管理,學習商務談判,更重要的,在我熟悉的領域裏,學習如何教導更好的程序員。
是不斷的學習,或者是一我的的學習能力,最終能讓一個程序員心安麼?
仍是各類東西舉一反三,咱們不用太過擔憂,老是能輕易而舉的在該用到的時候,會用到他們?
又或者,不管外界怎麼變換,我均可以用個人SSH打遍天下無敵手。
仍是說,我只須要在區塊鏈上有深刻研究,就足以讓我作到退休。
與此大相徑庭的,又是大部分人的工做,都不會接觸到這些東西。
是這個行業細分的愈來愈嚴重了麼?
仍是在20%的領域裏纔會這麼細分,80%的人都不用關注到這些內容?
因此往往有前端工程師,大喊着我要用NodeJS打遍天下的時候,我都忍不住回想一下全部全部這些後端中我列出來的內容。
如今還有誰敢稱本身是全棧工程師,全棧皮毛黨都很難作獲得吧。
在以前,這種恐慌,是我一直在努力學習的動力,由於恐慌而去掌控世界。
而如今,這種恐慌,很難讓我再沉下心去學習,這又帶來了新的恐慌。
這個世界,是屬於這些90後的。
我對着本身說,對着本身身邊的朋友說。
「總不能一直敲代碼吧?」
「爲何不能夠一直敲代碼?能夠的。」
「過不了多久,就能夠用算法寫代碼了。」
「那到時候,咱們幹嗎?」
「咱們能夠寫算法啊。」
「若是有一天,連算法均可以用算法寫了呢?」
「放心,你活不到那一天。」
推薦一個交流學習羣:650385180裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多: