我的軟體修習之路(一)——迷茫
2006年,高考結束,出於對物理的喜愛和未來就業的考慮,我選擇了機械設計製造及其自動化專業。當時喜歡用電腦玩遊戲,也曾考慮過是否能寫出自己的程式,可是我並沒有考慮計算機相關專業。回想當時的情形,可能是自己覺得這些專業比較高階,自己選擇的幾所高校的這類專業也非強項,就放棄了。
機械設計及其自動化專業,被定位為寬基礎的工科專業。因為機械是所有工業的基礎,所以機械的學生就應當瞭解除去機械本專業之外的其他交叉學科的知識。在本科四年,印象最深的是在放假前,當其他專業的學生已經考完所有科目提前離校時,我們還在準備著最後幾門課的考試,課程最多的時候,一個學期大概會有16-18門課程。本科四年學習的內容涉及機械原理,機械設計,機械製造,機械製圖等專業基礎課,還包括各種數學,力學,強電,弱電等其他交叉學科的知識,更有管理方面的課程。由於自己選擇了機械電子工程專業,因此又加入了很多嵌入式及控制類的課程。本科期間我主動報了CAD和ProE的課程,也曾想過在機械之路上走在前列。
現在我雖然做了軟體,但是回想本科時候機械專業的所學,我絲毫沒有覺得它耽誤了我的軟體修習之路,相反,機械的流程化和標準化正是當今軟體工程所追尋的目標。機械的設計理念也對軟體設計理念有著相輔相成的作用。設計模式正是軟體開發中的標準件,而架構設計生成的各種文件則類比於機械設計出的圖紙,是軟體開發的圖紙。機械專業帶給我的是對軟體開發更加嚴謹的態度和對軟體質量的高度關注,機械的故障修復成本很高,軟體則不同,所以經常會有很多程式設計師甚至公司忽略軟體的質量,認為有bug是正常的,改了就好,但是很少去想如何讓我的軟體產品bug少一些或者沒有bug。
C語言是工科必修的課程,我們學校將C語言課程定在了大一下學期。高中時候養成的習慣,我會提前預習下個學期重點關注的課程,自己對程式設計比較好奇,所以大一寒假,自己買了一本計算機二級的C語言教材就先看了起來(當時自己選教材的能力還是有點low)。放假期間,看著書,把書上的例子儘可能都在電腦上試了一次,經過預習知道了自己哪裡不是很明白,也對C語言有了感覺,一切等開學上課再說吧。
開學後正式開始學習C語言,由於自己對程式設計感興趣,作業中一道題經常給出多種編碼實現方式,也因此得到了老師的誇獎。當時還曾考慮考個軟體相關的職稱,但是考慮到自己機械人的身份,感覺自己不務正業,估計也考不上,所以就此作罷,考過了計算機二級也就功德圓滿了。
可是自從學習完C語言後,心裡總是嚮往能夠編寫出規模大一些的程式,可是練手的機會很少,考察了機械的諸多專業後,最後選擇了機械電子工程,當時想法單純又簡單,就是覺得機械電子工程是機械中偏控制的,我應該有機會好好練練自己的程式設計能力,甚至於給自己定的目標是機械人中程式設計很好的。可是,實際上課後發現,實際的使用C語言程式設計只是機械電子的一部分,做好機械控制還要了解電機拖動,PLC,數控程式設計等等,我沒有辦法進行專業的C語言練習。
就這樣,一直到了大三,感覺四年機械學完,自己好像什麼都能做,但又什麼都做不了,因此,決定考研,結果很不錯,考到了國內某985院校,一等獎學金,不需要交學費。現在回想這個決定,還是相當正確的,在上研階段我更清楚地認識了自己,也接觸到了更多優秀的人,從而可以更清楚地知道了自己要的是什麼。
當時考試結束,就和導師要了個專案,目的是為了讓自己快速上手,本科畢業設計提前做點老師專案相關的內容。專案使用的是NI的LabView,當時在控制模擬和感測測控方面還是很新的程式設計工具,採用了圖形化程式設計的方式,可以很方便的搭建測控系統。
這個專案讓我明白了程式設計不只是像C語言一樣寫程式碼,還有很多其他的方式,也明白了最符合需求的程式語言和程式設計工具才是最關鍵的,我沒有必要將自己困在一種程式語言或者一種程式設計思想,排斥其他的技術。但是自己只是小白,我需要學習和實踐來驗證自己的想法。
就這樣,我的大學本科四年結束了,機械專業方面該學習的,自認為未曾懈怠,否則也不可能順利考到自己心儀的大學繼續研究生的學習。可是自己的興趣並沒有得到很好的發展,本來以為可以曲線救國,通過機械電子專業滿足自己對程式設計工作的嚮往,但是也失敗了。
畢業之時,心裡還是很忐忑的,繼續考機械的研究生正確嗎?本科四年努力學習機械專業的知識對不對?自己到底該做機械還是繼續追求自己的軟體工作?到底什麼才算好學生,才是有用的人?怎樣我才能對得起自己的心?總之,伴隨著心裡的種種迷茫,我踏上了新的旅程。
題外話:本科最大的收穫可能並不是在自己的興趣發展上,倒是在感情上,搞了物件,我們不是一個專業,但是考到了同一所學校繼續讀研——她現在是我的老婆,此時此刻,她正在陪我們可愛的孩子玩耍。在追求自己興趣的道路上,她也和我共同承擔了風險。本科的這個收穫,或許也是我後來可以安心追求自己興趣的基礎。