時間一晃而過,大學畢業轉眼間已經工做9年了,總結一下本身這些年來感覺。前端
一次作規劃局的項目,規劃局的職員非常欽佩地說:「大家真了不得,在電腦上敲敲鍵盤就能作出軟件來。」,編程
規劃局領導說:「跟電腦打交道是最簡單的,難的是跟人打交道。」。小程序
領導的話頗有深意,一語道破了本質,作程序的人,是比較簡單的。微信小程序
大學本科,讀「計算機科學與技術專業」(相信看這篇博客的人多半也是學這個專業的 ^_*),課程重理論而輕實踐。設計模式
最初學習C語言,對於編程沒有任何概念,我清楚的記得,一次在課堂上問老師:「計算機輸入法,可視化操做界面已經很完善了,爲何要用C語言中 Print() 函數輸出一段字符呢?並且咱們學習使用Console控制檯的黑白屏輸入輸出,也不像是平時使用的軟件啊?」。微信
老師聽後也是一臉的懵逼,說:「你好好學,慢慢就明白了」。閉包
你不懂的,老師也無法回答你,只有靠本身慢慢地摸索,慢慢去領悟。架構
初學Java,這是我接觸的第一個最具備實用意義的編程語言(能夠作網站,作軟件,雖然C語言,C++也能夠開發應用軟件,但畢竟使用的人較少,對於初學者,找到一個合適的教程都困難)。當時的學習,基本是自學,上網下載視頻教程,一集一集地看,不懂的概念上網查,去圖書館借閱相關書籍資料,什麼JSP標籤,Servlet,JDBC,到Struts MVC,Hibernate,Spring,設計模式,半年時間,算是初步入門,儘管對知識仍是隻知其一;不知其二,但仍是成功用Java作了畢業設計,作過幾個小程序。框架
工做以後,開始使用C#,算是與.NET平臺結緣,一行一行地敲代碼,一個接一個的作項目,一版又一版的升級軟件,一晃9年了。從最初的ASP.NET WebForm,ADO.NET,到ASP.NET MVC,WebAPI,EntityFramework,面向服務架構的WCF,以及最新的跨平臺.NET Core,微軟爲軟件開發人員,提供了編程最大的便利性。編程語言
僅從開發語言自己角度講,C#並不比Java差,而且不少細微的地方,C#比Java作的要好,好比,C#中的get,set屬性訪問,要比Java的字段訪問方便不少,相同邏輯代碼運行效率方面,C#的MSIL比Java的字節碼容許效率還要稍微高一些,可是無奈,.NET平臺發展始終不及Java平臺。誠然,平臺的發展不能僅從開發語言自己考慮,平臺運行環境,平臺參與人員總體水平,使用成本等,更是起着決定性做用,.NET平臺在互聯網大潮中,逐漸被邊緣化,免費的Java平臺,被開源社區擁抱,成爲互聯網項目開發平臺的中流砥柱。微軟彷佛意識到問題所在,逐步加入開源隊伍,並提供了跨平臺方案.Net Core,但並無明顯轉機,.NET平臺開發人員心中難免有一絲悲觀情緒,.Net平臺開發人員彷佛比Java開發人員始終矮一頭的感受。
作Web開發,離不開HTML,CSS,JavaScript,儘管平常工做之後臺開發爲主,但接觸的多了,慢慢地理解深刻,從只會使用JS寫函數,發展到使用JS面向對象的功能,理解了JS中閉包的概念(好燒腦,用離散數學中的概念來表示函數集合,讓沒學過集合概念的同窗情何以堪)。明白了JS的面向對象編程,經過JS自定義前端控件,數據與邏輯代碼分離,達到優雅地實現前端邏輯。學習的過程是曲折的,有時候一個概念始終理解不了,但一旦明白過來,會有一種眼前一亮,豁然開朗的感受。起初一直不明白,爲何JQuery中的「$」這麼牛,一個「$」符號能操做一切,讀過JQuery源碼以後才明白,這個「$」原來是jQuery在Window中定義的的一個變量,同時也是jQuery這個函數的別名,每次調用$(...)時,其實間接地建立了一個JQuery的示例。固然,這種操做得益於JS是一直動態語言,能夠給對象任意添加屬性和方法(相比較Java和C#是不能這樣操做的)。
技術更新迭代的速度,遠超想象,每每是剛學會一個新技術,另外一個更新的技術又變的火熱,彷佛新技術的產生,也在遵循一個摩爾定律。追趕技術的腳步,就如同夸父追日通常,你一直在追趕,但它一直在你前面。好在,每個新技術,新架構的產生,都是在爲更簡單、更高效的解決現有的問題,因此,新的技術,雖然增長了學習的負擔,可是新技術的應用,可以解決現實的問題,是效率的提高。從這個角度講,學習是值得的。一般來講,沒有誰天生就會作什麼,只要肯學習,別人能作到的,你也能作到。
React火熱的時候,學習React,瞭解了這種基於模板的開發方式,見識了這種相似於MVC,實現數據與業務邏輯分離的編程方式在JS中的實際應用,對於這種僅須要一個render()函數的超簡潔的框架讚歎不已。
Facebook搞出了React,國人也不示弱,因而誕生了Vue,相對來講更簡潔,使用更方便。
React發展出了React Native,圈子裏更是爲止振奮,爲火熱的移動端開發又添了一把柴,讓移動端開發,在Android和IOS原生開發以外,又多了一種全新的選擇。
我用3天時間,學會了開發微信小程序,完成了原有Web功能向小程序的移植。
Node.JS火熱的時候,我用了一週的業餘時間,學習NodeJS編程,配合MongoDB,搭建了簡單的日誌系統。
提及來有點吹牛的意思,但倒是事實。
一方面,不論是React,微信小程序,Node.JS,本質上都是JavaScript,Html,CSS的組合使用,類似度很高,只是各自有各自特色的規範特點而已,學習難度是逐漸下降的。
另外一方面,我相信大多數人也有感覺,當工做經驗,認知水平達到必定積累以後,學習實際上是一件水到渠成的事情。
有一次跟朋友聊天,朋友說,「感受本身越學習,越感受到不懂的方面更多了」。
我笑笑,表示贊成他的觀點,這是一個叫作「知識邊界」的問題,每一個人的知識,就如同是一個圓,圓內是你已經瞭解的知識,圓以外就是還不懂的知識,一我的掌握的知識越多,這個圓也就越大,而圓越大,圓周所接觸的那些未知領域也就越多。若是一我的說本身沒有什麼不懂的,那隻能說明他知識面過小。如此,當咱們意識到本身有不少不懂的東西的時候,也不用焦慮,由於咱們的知識在擴展,保持一顆開放,學習的心,這是人生路上所必須的。