softnshare / careergrowth

職場, 職涯成長
https://softnshare.wordpress.com/slack/career-growth/
102 stars 12 forks source link

舒適的程式設計之路? #4

Open maoyang opened 8 years ago

maoyang commented 8 years ago

聲明在先,這是一個寫實的悲慘人生路,之所以悲慘完全是我的個性使然,與旁人無關。事實上,這一路走來遇到不少「貴人」,要不是他們,我可能不會在軟體開發領域走那麼久。謝謝!

失意肄業生

我是北部某五專電子科,肄業。讀電子科,聽過歐姆定律,但我不知道(也沒興趣知道)那可以幹嘛,基本電學修了二次,電子學到現在還沒及格,電子電路上課時間在教室找不到我,因為我在圖書館裡翻書,很雜的書,跟本科一點關係也沒有的書。這完全是走錯科系的格局。

職場新鮮人

原本當兵立志要利用時間學程式設計,沒想到過太爽,沒學到什麼皮毛。買了一本侯捷老師譯的《C++ Primer》,就只看了語法,寫幾個比 Hello Word 多幾行的程式,如此而已。倒是花了不少時間用 PE2, HE(漢書)寫公文,練中打(當時倉頡練到一分鐘超過一百字,收集了一些成就點)。

我的履歷上完全沒有軟體開發相關經驗,所以 2001 年退伍後,竟然有軟體公司願意接納一個五專肄業生,就知道這間公司老闆眼光確實獨到XD。開始上班才知道原來公司是用 C++ 開發專案,是我熟悉的 Windows,而且不用 MFC,幾乎每個專案都是用 Windows SDK/DDK 手工打造而成。唉喔~好像來對地方囉...

一開始我碰不到專案程式碼,被指派用文字編輯器修改鎖碎的設定檔(.ini)。記事本太陽春,記得是先找到 UltraEdit,後來發現 Editplus 這好物,竟然可以錄制巨集,飛天了我!記得有一次老闆看到我用飛快的速度編輯文件,驚呼連連。(不小心又收集了一些成就點)

帶我的師父是個好人,教我不少東西。不過,找我進公司的目的其實是他要離開「舒適圈」到大公司接受別的挑戰。我有一年的時間,不對,應該說我「只有」一年的時間把原本幾乎由他一手包辦的專案維護以及新專案的開發工作承接下來。公司當時的客戶不少,產品多為 Windows Application + Device Driver,主管問我行不行?我說不行也得行吧。幸好 Device Driver 另有資深工程師幫忙分擔,不然 GG 的可能性不低。

一年多後師父走了。公司因為接到大單(這是後話,一開始不知情),開始了突飛猛進(業績跟功力)的旅程。我在這間公司一待就是 13 年,大概可以說是跨不出「舒適圈」的典範吧XD

版控是什麼碗糕?

做專案的頭幾年,公司完全不使用版本控制系統。而是用目錄來分版號,可想而知有多危險。後來我知道 CVS,但沒多理會。直到 Subversion 有名到我這個山頂洞人都知道了,才認真研究。後來自行架設公司用的版控伺服器,然後就是說服,說服,不斷說服同事接納 Subversion,然後真的成功了。會出現《Driving Technical Change》這類書,完全不意外。

大家都知道 Git 幹掉 Subversion 的故事,我也是兇手之一。不過,這次在原公司沒有推成功,大概是改變太大,再加上已經有 Subversion,「沒有壞就不用改」的力道大於改變的力量,最終我放棄了,也因此意識到在原公司,要學新技術,提昇功力,只能靠自己了。

題外話,同事依然使用 Subversion,而我轉成 Git (DVCS) 的過程中,也用過高嘉良前輩的 SVK 。最終是用 git-svn 應戰,水火同源。

這就是程式設計的全部了嗎?

先前提到原公司是用 Windows SDK/DDK 來造軟體,但我知道那不是唯一,更肯定不是最好的方法。所以我去摸 MFC(好險沒陷入太深)、ATL、WTL。然後很衝動地在接一個 TOSHIBA 的案子時,大量使用了 C++ Template,最後因人員調動,擦我屁股的前輩幾乎把我的碼重寫過。必須承認那次真的是失敗作,也學到了 C++ Template 的使用時機。

我很晚才接觸 Design Pattern,一開始根本看不懂也摸不著頭緒。真心覺得這東西要有經驗才容易體會,而且懂了就是懂了。我不同意王垠對 Design Pattern 的批判,我認為這些範式是必學的知識,要懂得利用到實務上,而不僅止於理論。Design Pattern 是很務實的技術,一點也不理論吶。

超神的縮小到工作列的動畫

人容易嚮往手上沒有的東西。看過縮小到工作列的動畫後便對 Mac 唸唸不忘。有一天,一時衝動自費買了一台 Mac mini。然後,就沒有然後了....。那個便當盒被冰了一年多,現在是新公司的 Printer Server。

Mac mini 被冰的主因是不能帶著走,過了幾年,我又自費買了神器 MacBook Air 13"。這次真的成功移轉到 Mac 平台,現在是 Windows/Mac 兩棲,主力是 MacBook Pro 15"(是的,手超滑XD)。一直到現在,我還是覺得 MacBook Air 13" + Windows 是最完美的 Windows 筆電。

那些還沒跨出的舒適圈

截至目前為止,我還沒有釋出任何開源碼專案,原因很多,但不會維持現狀是肯定的。

有一年,我花了不少時間在 Chromium 專案上,是單方面研究學習,沒有做出任何貢獻(掩面逃離...)。天天看 chromium-dev,編譯 Chromium,看看高手的程式碼長怎樣,也從中學習頂尖程式設計高手(不限 C++),如何利用文字交流、討論並解決難題。這學到的不只是程式設計技巧,更多的是如何把問題清楚描述,以及怎麼做才不會被公幹XD

後來我在許多專案中用到了 Chromium 裡頭的函式庫(是 C++ Library,而不是時下流行的 CEF 或 Electron)。又收集了一些成就點。

我參加過一些研討會或演講,當下心裡總會問:「如果站在台上的人是我,能做到如此從容不迫嗎?」當兵時任偽政戰士,連長要求我參加單位的演講比賽,雖然賺了一天榮譽假,但我知道自己的表現很爛。我還沒有能力承受眾人的目光直視(雖然前排長官多已低頭思故鄉)。

職涯前十五年我一直是個「潛水員」,今年開始想做一些轉變...

這是我在 C/C++ 版說的,今年的計劃是浮到水面,初期以文字的方式,利用社群平台與同好交流。所以我現在正在進行一個跨出舒適圈的動作。

我樂意與人分享好東西做技術交流,但生性內向(宅男不都這樣?)導致目前為止還沒有上台演出的機會♫♫♫。不過,我知道總有一天這會改變,所以在原公司從原本一直聽別人說,到後來主動說給別人聽。跟客戶開會主動做簡報(工程師不是不碰 Paper Work?),一切都是為了將來有一天...

跨最大的一次

一年半前跟主管出走成立新公司,大概是出社會以來跨最大的一次。這無疑是個大挑戰,但一年半前我考慮的時間不到十秒,因為再不跳,四十歲以後還有體力嗎?我覺得三年是一個關卡,成敗與否,二年後再來。🔚

About Sam Tsai

目前任職於閎藝科技, 也是Soft & Share C/C++ Slack channel版主看了Sam的文章, 有興趣跟Sam一起工作嗎? 閎藝科技徵才中, 歡迎參觀閎藝科技的官網徵才資訊。

Sam’s blog: https://samtsai.org Twitter: @mhtx