九年程序人生 工作總結

時間一晃而過,大學畢業轉眼間已經工作 9 年了,總結一下自己這些年來感受。

與程序打交道的人生,是簡單的人生

一次做規劃局的項目,規劃局的職員很是欽佩地說:「你們真了不起,在電腦上敲敲鍵盤就能做出軟件來。」,

規劃局領導說:「跟電腦打交道是最簡單的,難的是跟人打交道。」。

領導的話很有深意,一語道破了本質,做程序的人,是比較簡單的。

不懂什麼叫編程

大學本科,讀 「計算機科學與技術專業」(相信看這篇博客的人多半也是學這個專業的 ^_*),課程重理論而輕實踐。

最初學習 C 語言,對於編程沒有任何概念,我清楚的記得,一次在課堂上問老師:「計算機輸入法,可視化操作界面已經很完善了,爲什麼要用 C 語言中 Print() 函數輸出一段字符呢?而且我們學習使用 Console 控制檯的黑白屏輸入輸出,也不像是平時使用的軟件啊?」。

老師聽後也是一臉的懵逼,說:「你好好學,慢慢就明白了」。

你不懂的,老師也沒法回答你,只有靠自己慢慢地摸索,慢慢去領悟。

Java 還是 C#,平臺選擇的愛恨情仇

初學 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 開發人員始終矮一頭的感覺。

前端編程,JavaScript 從無知到覺醒

做 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 的組合使用,相似度很高,只是各自有各自特點的規範特色而已,學習難度是逐漸降低的。

另一方面,我相信大多數人也有感受,當工作經驗,認知水平達到一定積累之後,學習其實是一件水到渠成的事情。

總結

有一次跟朋友聊天,朋友說,「感覺自己越學習,越感覺到不懂的方面更多了」。

我笑笑,表示同意他的觀點,這是一個叫做 「知識邊界」 的問題,每個人的知識,就如同是一個圓,圓內是你已經瞭解的知識,圓之外就是還不懂的知識,一個人掌握的知識越多,這個圓也就越大,而圓越大,圓周所接觸的那些未知領域也就越多。如果一個人說自己沒有什麼不懂的,那隻能說明他知識面太小。如此,當我們意識到自己有很多不懂的東西的時候,也不用焦慮,因爲我們的知識在擴展,保持一顆開放,學習的心,這是人生路上所必須的。


原文:http://www.cnblogs.com/flame7/p/9110579.html

微信公衆號:javafirst

更多資源掃一掃免費獲取