不知不覺畢業已三年有餘,加上本身在大學或者實習的時間,做爲一名程序員差很少已有四年到五年。記得還在實習期間,常常炫耀本身寫Flex,就鄙視那些用JSP等模板引擎渲染成前端頁面的人。好比本身用了Spring Mybatis等框架就開始嘲笑那些還在用servlet的人。偶爾還會陷入某種語言之爭,或者陷入對某種語言的偏執或者偏見。javascript
其實即使在工做大概2年左右,偶爾還會陷入相似的一些陷阱,好比我常常拿來講的就是除了會寫Java還會寫C#,javascript和c++,或者說我學會了用某個框架或者所謂的新技術,好比開始學redis,docker這些所謂的高大上的東西.但從去年下半年開始,我好像開始慢慢領悟到編程的本質。我更加偏向於脫離於編程語言層面的一些東西,好比各類編程範式的區別,各類編程語言的併發模型和內存模型,異構系統之間的交互,接口的設計,底層的網絡通訊,各類協議的設計初衷以及區別,分佈式服務架構的設計考慮的容錯,資源隔離,監控,服務之間通訊的異常處理,服務的優雅降級等等問題。好比在服務化的架構設計中,對於服務發現有多少種方式,好比常見的網關,富客戶端以及服務註冊中心的機制,以及他們之間的優缺點和設計過程當中的一些折衷。好比一上來有個架構師就跟你說用服務註冊,而後巴拉巴拉再說用什麼開源框架,這種架構師多半是半吊子。在工做中固然也遇到一些架構師,他們設計架構其實不是在設計,而是在套用架構,他們硬是把本身的業務設計的符合這套架構。再好比說你一跟他說須要共享session,他們立刻當即吐口而出什麼redis,memcached. 跟他說搜索,他就說lucene,跟他說分佈式他就直接說什麼一致性哈希,再好比跟他說存儲就說mysql,mongodb.這些人全都是半吊子先生,甚至在我看來就是壓根尚未入門。再舉服務發現這個例子,一上來就說zookeeper,有些人也許還知道keepalived, 更有心的也許還知道eureka。那我就問在使用zookeeper如何解決網絡分割問題?他確定說額,什麼是網絡分割。去年在團隊分享過一次redis相關的知識,其實我並無分享redis的哪些api,而是分享了redis的一些應用場景以及和傳統關係型數據庫的一些區別,以及redis內部自己一些好比主從數據同步的方式等。次日主管問其餘同事,有些說沒有乾貨。這就是不一樣層次關心不一樣問題的典型案例。說實話那個api有什麼可講的,直接看文檔就行了。前端
今天在技術中心評審中其實也發現了這個問題,好像你們對使用了某個框架或者所謂的技術很感興趣,就好像使用了某個框架就會了什麼武林祕籍同樣。說實話編程到必定的年限,把使用了某種框架當作新技術我以爲是很可悲的一件事,反正我熟悉一個新的技術要麼熟悉內部原理借鑑思路,要麼能夠作二次開發,我可歷來不認爲簡單用了下框架就是什麼新技術。因此能夠看到這一年來,我真沒有說過什麼其餘框架名詞,我只說解決了什麼問題。今天在評審中涉及對咱們團隊一些開發規範的質疑,說實話要說流程規範,文檔規範的確很欠缺,對於程序員來講開發規範和編寫好文檔的確是一項很重要的技能,我在團隊也一直在強調開發的規範化和工程化,但目前彷佛沒有引發什麼重視,但問題越拖越會暴露出瓶頸的。但說實話好比我設計的架構我須要文檔化,但你知道咱們的開發週期跟大團隊的開發週期徹底不是一個量級的。大家常常幾我的一個團隊作好幾我的月,甚至還不包括需求分析階段,而咱們呢?關於技術中心的編程範型,從我的角度來講,也許對新人還有必定的用處,但對咱們來講毫無用處,若是你連爲何毫無用處都不知道,我想仍是不要編程算了。技術中心目前的通用技術儲備還蠻落後的,至少要落後一線互聯網公司五年左右、舉個例子吧,我剛來訊飛的時候,發現大部分前端開發都只是是用用jQuery和開始探索前端mvc模式,但是你知道我做爲一名不是全職前端人員,差很少1年前就那麼作了嗎?java