彷徨中的成長-記一個文科生的IT成長過程
糾結了許久,要不要寫這篇文章,然而最終還是寫了。就權當總結與呻吟吧。。當然,呻吟最開始還是發在自己的站點的,忍不住手賤,還是想發博客園。
1 劇透
人算不如天算;時隔多年,我竟然搞起了前端。
2 發端
7年前,它進入SYSU學習檔案管理。
2.1 UG1
大學一年級,上學期,完全是小白!沒有任何的計算機專業知識。沒有任何相關課程學習。只記得專業課叫機關文件管理,還有高數。前半年過的各種悠閑。
下學期,初識IT;第一門課是4個學分的大學計算機公共基礎。這門課只有第一章配得上基礎。。第二章數字編碼與字符編碼,各種原碼,反碼,補碼計算,第三章微機系統結構,各種總線。。第四章Javascript,說是最適合非專業人員的編程入門語言(當時是2009年),然而剛接觸計算機的我根本編不出來程序。。為了應付期中考試,各種突擊;當時還有一本書很火,叫“JavaScript王者歸來”,然而我買了沒看。。不管怎樣期中考試考了96!然后還是不會編程,因為它考的都是程序填空,不過終于可以擺脫編程了,期中考試之后,第五章還是Javascript基于對象的部分,第六章Word和Excel,第七章多媒體,第八章忘了,第九章HTML,CSS。期末考試重點考這個,為了應付期末考試,當時把FrontPage玩兒的很溜。。好多標簽都會背了。。最后98分。。然而我還是不會編程。但當時并不在意,只是把這門課作為高數和英語來學習的,畢竟檔案管理專業。
2.2 UG2
大學二年級,上學期,專業課程序設計,4個學分。用的是譚浩強教 授的C程序設計,綠色封面的當時。由我系Happy Ball(學生戲稱)執教。他講的C語言通俗易懂,極易入門,感謝他把我們專業的很多人帶入了程序設計的大門;在他的安利下,我也走上了IT從業人員的不 歸路。這門C程序設計,主要以解決各種問題的實踐出發,上課先編程,后講語法;我在這門課學習了大量的算法,也自命不凡地上去寫了回籠數判斷程序,然而上 去發現有個問題沒解決。。沒寫出來。。。期中考試99分,數數數錯一位扣了1分,期末考試,60%編程題,最后97分。。這門課是我學習計算機以來學的最 開心的一門課。當時對編程的喜愛遠非現在所能比擬,畢竟都是算法的東西;約瑟夫環問題記憶猶新。Happy Ball所說的系統分析師,十年磨一劍,銘記至今。然而學了這門課之后,我以為C語言只能寫控制臺應用程序,對IT中的工程和算法一點兒概念都沒有。
大學二年級,下學期,專業課數據庫系統,4個學分,每周5-6個學時。上的相當辛苦,前期各種不懂,用C語言的思維完全不能理解數據庫的模型與應用;第一次有了應用系統的概念,但具體還是不清楚;上課老師提到了CSS+DIV,提到了ASP,PHP,JSP;然而我并不知道是什么。這門課學習了大量的數據庫基礎理論,比如關系代數,SQL, 子查詢,各種查詢;曾經寫過5-6行的SQL語句。。當時確實搞了好多東西,期末94分;專業課計算機網絡,4個學分,感覺并沒有學到什么,上課左耳進, 右耳出,經常睡著。。。以至于使我對網絡留下了不好的印象,期末88分,考試考了子網劃分。。總體評價沒學好,全忘了。選修課Access數據庫應用,選 修課。。一直在點鼠標,并沒有學會什么,完全在考專業課混學分。。。
大二過后,沒有寫過一個圖形界面程序。。。
大 二第三學期(小學期),科研實踐,進了技術組,選了一個小型數據庫管理系統設計;為了實現有圖形界面的程序開始瘋狂學習,那是認識了計算機321,如鵬 網,當時好多資源在veryCD上下。。楊中科的C語言也能干大事系列令我受益匪淺,從此入門了應用級開發。最后看到了.net,下載了Visual Studio 2005,第一次編程,爽的飛到天上了!從此愛上了C#還有微軟。。還有.net,最后用ADO.net連接SQL Server2005做了個winform程序交差,科研實踐優秀。
2.3 UG3
大 三上學期(2010年),愛上了winform,根本停不下來,又做了2個比賽用的小程序。專業課網絡開發技術,主講JSP。這門課終于知道了之前數據庫 系統中好多沒聽懂的東西。JSP語法,JSP內置對象,JavaBean,文件操作,JDBC,Servlet,MVC模式,這門課使我學了不少Java 和web開發模式,做了6次項目作業,struts幾乎入門,然而由于當時被Visual Studio沖昏了頭腦,并沒有繼續學Java,轉向ASP.net,但并不開心。不喜歡在服務器端拖控件的開發方式。可能是JSP先入為主。
大 三下學期,兩門課選修課對我影響很大,一門是喬海燕老師的函數程序設計,Haskell,這玩樣兒給我累慘了,作業各種不會做,后來學了數據結構,才發現 高階函數這些東西里面有好多遞歸;期末考試要畫分形樹,沒花出來,現在還不知道會不會畫,然而現在我再來看Haskell,這覺得這門課使我寶貴的財富。 函數式思想在這兩年方興未艾,當年的LINQ剛剛興起,Scala也是那時候開始火,后來Java8(當時還是Java6)什么的就更多了,或許不久之后 我還會重拾函數式程序設計這個大方向的吧。另一門課是XML技術,講了 DTD,Schema,Workspace,XLink,XPath,DOM,JAXP,...反正講了好多。
2.4 UG4
大四上學期,完全沒有編程,前面學的幾乎忘光。。
大 四下學期,畢業設計選擇了檔案管理系統,為了搞這個,當時接觸了Delphi,真神!!PowerBuilder,不過最后還是用了.net,把 ADO.net玩兒個遍,最后用了 Typed Dataset,感覺就是.net下的對象關系映射,不管怎樣,畢業設計就用ADO.net給實現了,之后發覺.net并沒有想象中那么好,轉投 Java,決定放棄微軟。
考研期間,參加了軟件學院的win8技術預覽版以及VS2013預覽版(當時叫VS11)推廣活動,第一次看到了windows phone開發,感覺移動開發很神奇。重新回到微軟。
3 發展
2年前,他進入HUST學習軟件工程
3.1 G0
研 究生入學前,由于當時好奇移動開發,看到windows phone開發實習興奮不已,提前前往實驗室實習,就搞一個windows phone項目,然而整天按XAML寫界面,感覺好無聊,而且windows phone下很多界面實現不了,當時并不開心,每天并不想去。第一次聽說Web Service,然而我還是不知道怎么調Web Service(Web Service是基于Java EE的),1個月后,罷工。。。
就在實習期間,認識了大牛付總!當時他是windows phone的資深開發人員,曾帶領團隊上線了好幾個應用項目。對付總的能力敬佩不已。嘛,本篇只講技術,不言其他,不具體講團隊的事了。
這次不開心實習經歷使我再度放棄微軟技術。現在再來看,windows phone技術確實也并沒有得到太大的發展。(慶幸)
3.2 G1
研究生各種修課,設計模式,Java,。。。反正學了很多。然而具體技術并無太大長進。
上 學期末尾,項目實訓,兒童在線音樂平臺,這是一個.net項目,再一次回歸net陣營。當時高校實訓還是以Java為主,Java又以SSH為 主,.net當時使用WCF+EF,我當時開發了win8平板電腦的客戶端,數據綁定各種犀利,一天時間實現客戶端全部功能,也是醉的不行。(實訓2.5 個月。。。)
實訓結束,又上了移動平臺開發的課,用的也是微軟技術,開發的也是win8平板程序,我又開發了2個類似的程序,并傳到應用商店,混了個學分。。。此后告別移動開發。
2013年,node.js已經開始火了,當時我覺得這個東西很厲害,力薦我們團隊學習,然而最后被無情的駁回了。。。
3.3 G2
前往日本留學,各種學習,然而技術轉型也在悄無聲息的進行著。專業課Ruby on Rails,被Rails的思想給驚呆了,真正領略到了Web開 發的魅力,徹底放棄了Java和.net,對大三學習的JSP和ASP.net產生了極大的懷疑。買了個MacBook,專心學習Rails,在此過程中 接觸到了Github,Cloud9,Heroku,LESS,SASS,NoSQL等一系列新概念,新平臺。開發了不少demo,并傳到了 Heroku。
學習了形式化方法VDM++,感覺很多代碼和Haskell很像,為自己曾經學習過函數式程序設計感到自豪。
畢 業設計要實現一個移動應用的服務器端,開始研究各種解決方案,發現了Rest風格的Web Service,然后就是各種輕量級框架和全棧框架。比如Ruby on Rails,Sinatra,Grape,嘗試了一天Spring MVC后放棄,后轉向Java下的Play framework,實現了原型1,之后接觸了Node.js,使用node.js+Mysql實現了原型2,被Express框架驚呆了,開始從 Ruby轉向Node,當然用了coffeescript(至今仍然最愛coffee,其次typescript,不愛js),不過因圖形庫原因,項目最 終遷移到.net,使用Nancy Framework.
幾經輾轉,我對Node的愛不斷加深,Markdown,hexo什么的實在是用的太爽了!現在除了MEAN工具鏈和Ruby工具鏈,我已經不想在搞Java和.net了。
3.4 G3
現在的計劃是,首先繼續學習coffee(1),然后是HTML+CSS(2)的學習,之后是JQuery和Ajax(3). 1個月之后,我會看看MEAN里面的AngularJS(4),最后我準備看看JS的數據結構與設計模式。
一切塵埃落定之后,追究還要回歸到Node,HAPI.js值得一看。
4 尾聲
4.1 幾年求學的遺憾
PHP一片空白,然而我知道PHP有很多出色的架構和框架。
F#,WinJS,ASP.net MVC,這些微軟技術似懂非懂等于沒學。。。
5 最后
不管怎么樣吧,最終還是回到了起點,然而大一時候的JS與這個時候或許已經完全不同。沒想到現在又搞起了前端。。
謹以此文與大家共勉。不忘初心,向架構師的理想努力奮斗。十年磨一劍,至今時間已過7年,不知道此劍磨的如何。
El Psy Congroo. 臨表涕零,不知所云。
寫于留學歸國前