成為軟體工程師的前兩年我學了什麼?

看了這篇文章:成為軟體工程師的前兩年學了什麼? (What I Learned in My First Two Years as a Software Engineer) 個人也蠻有感而發。

其實我進入職場前兩年,完全與「軟體」這兩字無關。退伍後沒多久先到如同資策會的資訊機構,花了半年時間上了關於 MCSE、Novel CNI/CNI 等與系統管理面的認證養成班。我算是很積極的,上完課的同時就去考認證,接連考取了上述的認證執照 (共 10 來個科目)。

當年認證是很夯的,也還沒有被搞爛 (一堆考古題),所以我找相關系統管理的工作是還蠻容易的。不過我後來選擇擇了一家從事 Client/Server 系統開發的公司,他們在應徵資料庫管理師。因為我對該公司採用 Oracle 資料庫系統極感興趣,起因是上 MCSE 有一門 SQL Server 科目,我對裡面有個範例 (圖書館資料庫表格結構設計) 非常好奇與納悶,為何表格分析可以這樣環環相扣? 問了當時的講師他也不知道。 :)

總之,一進入該公司後,我向經理提出要到 Oracle (當年位於民生東路) 上相關資料庫管理的課程。經理也很乾脆,當年這類課程 (MCSE、Novel CNE) 要價可不斐,至少 5 萬以上起跳。我可是很積極的,從完全不懂所謂的資料庫是做什麼,到考取 Oracle DBA 的專業認證,只花了不到三個月 (每上完一堂課就馬上去考,共有五門科目),這期間 K 的原文教材可是有 3000 多頁,只不過當年學習熱忱洋溢,可說是相當享受那種成就感。

當年我可還是全台灣第五個考上 Oracle DBA 的認證,甚而 Oracle 台灣訓練中心經理想要挖我過去那邊上班,不過當年我還是樂於待在那家公司,也可說是感謝那位經理能給我教育訓練的預算讓我上課充實技能。

不過這樣待了一年,老實說,我對與「系統 (OS/Network/資料庫)」的相處發現興趣不太大,工作上只要把關好兩件事:備援與效能調校,那就相當輕鬆了。所以閒暇之餘,想要自行寫一個圍棋 (學生時代最熱愛的棋藝,也在圍棋協會昇上業餘初段) 對弈的軟體。我還記得第一個自學的程式語言就是 Java,為此我又在工作期間花了一個月時間買書用力 K 相關語法,然後又去考取了一張 SCJP 認證。雖然勉強可以「寫出來 (那時我還是用 Java Applet 寫的)」,但程式碼卻是「落落長」,非常沒有成就感。

就是那個時候我才第一次聽到所謂的 OO (Object-Oriented) 物件導向這類神秘的技藝,聽說會了它就可以解決軟體許多相關的問題。 (能解決什麼問題我也不知道 !^^)

反正當年我還特別跑到重慶南路位於2F的「巨擘書局」,買了五本 OO 原文的書籍,當然沒有一本看得懂。那時國內也出了一本「世紀末軟體革命」,賣得嚇嚇叫,理所當然也跟風買了一本,用力研讀內容覺得好像很神,應該是技術能力要相當高深才能看得懂,總之當年我就是看不懂在寫什麼。現在當然可以理解了,然後也才知道這本書內容其實言之無物的。 >_<

真正引領我進入軟體業這一行的,是我去上當年應該也只有唯一教授物件導向的 MISOO,而且講師對所謂「虛」的哲理掌握以及應變的機智還有相當幽默的口條,都是我從未見識過的,非常折服。所以後續幾年,甚而辭掉穩定且收入不錯又超級輕鬆的工作,有點算是弟子類型,跟著學習 (還有開車當司機,哈)。

嗯,本篇主題是擺在軟體業的前兩年學了什麼?!

回想起來,我只知道進入所謂的軟體業前五年吧,我完全不知道我學到什麼!當時的 導師兼 Mentor 絕不會告訴你 How-to,也不會告訴你答案,一切都要你從自身去體悟,再把自己的心得說出來聽,然後幾乎都是被否定。那種心裡的挫折感,導致我期間有兩年的時間完全放棄,任何一本書 (除了聖嚴法師的著作) 都無法閱讀,甚至還得了焦慮症。

總之,以前所學的都是「務實」,有學有看有操作就會 (How-to)。但「物件導向」的哲理卻是「務虛」的,你必須對 What & Why 先有相當的理解,然後又不能只唱高調,還要能「落實」,也就是「虛實合一」都要能掌握,那種難度,對資質駑鈍的我,難如上青天!

還算運氣,雖然沒有「頓悟」的天份 (在軟體這一行10幾年來我只看過一個有這樣的天份),但撐久必勝,前五年不斷的看書 (幾乎看不懂)、不恥下問 (大都沒人理,因為問題太幼稚)、反覆思考問自己 ....等等。大約就是五年後,在逐漸「體悟 (漸悟)」的過程中,突然某個時間點就「蹦」的「頓悟」了,套句 Martin Fowler 所說:「腦袋恍如重生」 :)

這個時候就很容易理解各類書本內容作者的假設點了,也知道哪些可以學習、哪些有問題。學習 How-to 也相對輕鬆,因為很容易找到答案。當然不是說現在你已經通曉一切,而是如同對比武功修煉來說,當有一定的內功修煉基礎後,學習任何外功夫,就相當輕鬆很多了;也可以說也比較能掌握「通往彼岸的那一條路了」。

純粹有感而發,也祝福各位只要能找到自己的熱忱,然後工作上又能發揮所長,在「虛 (成就感)」與「實 (報酬)」能得到相當的回饋,那就已算是圓滿如意了!