Computer science 相關科系的學生一畢業進入業界,要不了多久,聰明的孩子們就會發現學術研究跟實做的不同。例如不懂詳細 SMTP 或是 HTTP 並不代表你在 computer science 的領域學得不好,只表示截至目前為止還沒有用到這些東西的必要。又譬如熟悉不熟悉 MFC 或是其他種種 library, framework 的用法,也是相同。
然而對於業界而言,程式設計師多半是可取代的一堆螺絲,最好是拿來就能用,所以一個才智平庸但是熟悉這些玩意的工程師往往吃香。要注意我在這裡所指的平庸是相當嚴格的。那麼當你想在這領域取得一席之地,該如何瞄準目標?選擇目標就已經是個大學問了。
假定,你知道自己是平庸的。那麼瞄準各類電腦補習班(包括那些有頭有臉機構辦的)、證照等等或許是不錯的手段。在那些地方你多半只能學到技而學不到藝,那將使你成為成功的工人,但甚至達不到中級以上水準。這類的人,在台灣 MIS 相關公司最多,你會注意到這些公司多半執行軟體專案,掛許多 CMMI、證照之類,喜歡宣傳各類成功案例等等。他們喜歡告訴你他們如何專業、如何以客為尊,如何採用最新的技術達成需求等等。當你越來越熟練,你會在這類公司佔有一席之地,並且開始懂得各種政治技巧來保衛自己的地盤。
假定是中才以上呢?這裡定義的中才,是至少你要可以直接閱讀 RFC, datasheet 等等英文資訊,並且有能力自行消化、寫出程式。對你來說,取得經驗是最佳競爭力。不要管什麼學理了,往那冷僻的技術細節鑽就對啦。會寫 driver、懂詳細的 protocol、實務上對業界常用的工具熟悉,可以用毫不精巧的手段達成目的... 又或者你處在比較高階的軟體領域,那就比較危險,表示你至少要熟讀 design pattern/UML/一種以上的專案開發模式(extreme programming? RUP?),並且可以毫不猶豫的運用其中詞語。達成以上,那麼恭喜你,你的工作非常安全,而且只要具有正常人格,很快你就可以升經理讓新進工程師覺得莫測高深,或是轉換跑道嚇嚇那些以為你不懂的無知研發人員。
那,你會問,要如何才能成為精英呢?你能使用的工具應該包括 Lex & Yacc、能讀懂 assembly、知道 functional programming 是什麼意思、熟用一種以上 scripting language 並真正理解部份 compiler/os 內部運作。除此之外,你必須謹記所受過的一切學術訓練,那有助於你在最短時間內猜測/理解一個新的規格/問題,並且將你已有的技能集恰當的運用於其上。你應該會擁有自己的工具集,並且善用他們,以其他工程師無法理解的速度產生正確程式。
理解自己身處的位置只是容易(或者有些殘酷)的部份。困難的是如何接受並執行自己該做的事。
我怎麼覺得你說得這些事情我大部分都會,可是照目前的狀況我大概很難「快速」升上去...。
回覆刪除