February 18, 2013

程式設計師一定要會的語言

不記得是在哪兒看到網友提出類似的問題。身為程式設計師的我在求學時代(五專、二技及碩班)曾接觸過C、C++、Visual Basic、Java、Visual Basic .NET、C#、ASP、ASP.NET及PHP,出社會後則專注於ASP.NET(C#與Visual Basic .NET)。看似接觸不少語言,但要問我精通哪個嘛?哈。

回想了一下求學時代及這幾年工作經驗,如果有人問我這問題,我想我的回答不會是上述我列的這幾個語言,也不是Perl、Python或Ruby等一堆我沒列出的熱門語言。我的答案會是英語。會選擇英語作為我的答案其實很簡單,因為它讓我得到了更多的表現機會和增加了不少能見度及報酬,不論是在求學時代或是在工作上。

先來說說我的英語程度:舊制多益895分,新制多益875分,全民英檢中級合格,全民英檢中高級初試通過。單以這些測驗來衡量我的英語能力,算是有中等程度,而以一個程式設計師而言,這樣應該有中上的程度了。

碩班時,我的老闆是位熱愛學習英文的年輕教授。在當時他的學生畢業論文也大多是和英文學習系統有關,我的碩論當然也是。他除了是資工系的教授外,還身兼學校語文中心主任,指導學生開發英文教學及學習系統來推廣校內的英文學習風氣。在當時我和幾位學長、同學及學弟妹就一同開發了校園英文新聞系統,我們身兼多職,不僅要寫code、採訪、寫英文新聞、錄音、後製,還要當主播。因為同時有技術與英語能力,讓我得以取得老闆的信任被指派為team lead,不僅要和開發人員討論技術,還要跟無技術背景的系統使用者溝通,survey一些可以採訪的新聞和溝通協調人力資源,在目前來看有點像是個有技術背景的專案經理。當時因為學校和ICRT有簽約,也讓我有機會可以到ICRT見習一個月,見識到國內首屆一指的英文電台。有了老闆的信任,我也因此多了不少機會可以賺取一些外快,讓我在碩班時無貸款負擔。

出社會後任職的第一間公司用到英語的機會不多,但公司仍有激勵政策如果多益達到特定分數以上,公司以加薪做為獎勵。也因此我在當時準備了舊制多益的考試,順利地為自已加薪了四張小朋友,相當激勵。在第二間公司時,一樣有激勵政策,除了因此為自己加薪外,還有機會接觸到國外專案,和來自世界各地的工程師一起合作,也出差到了美國及義大利做簡報,見見世面,練練膽量。接著因為獵人頭的引薦讓我進入目前任職的外商公司,同事們來自不同的國家,唯一的溝通語言就是英語了。因為有著技術和英文溝通能力,雖然我並不是最資深,但仍有幸被指派擔任team lead,有機會跟不同層級的主管對話,了解到不僅於技術面向的事。因為在外商公司,用到英語的機會變的更多,也得以讓自己的英文能力再更上一層樓。

以上是我個人的小故事,也許看倌們會覺得我是運氣好。不過平常加強英文能力原本也只是當成興趣和習慣,當初也沒想到可以帶來這些"副作用"。如果平常我沒加強英文能力的話,當這些機會來時我能把握住嗎?當然我並不認為把英語學好就好,到底我仍是個程式設計師,技術能力的磨練與加強仍是必須,畢竟用英語說得一口好程式能走得長久嗎?

把英語學好未必能找到好工作,但我相信能得到很多不一樣的機會,你可能
  1. 加薪機會變多。例如英文證照加給
  2. 工作機會變多。除了本土商,還有外商可以選擇,甚至是出國工作
  3. 市場身價變高。有機會跳到外商,薪水三級跳
  4. 見識變多。有機會到各國走走、和來自世界各地的人工作了解不同的文化
  5. 得到賞識機會變多。當大家的技術能力不相上下(或是主管根本無法評斷下屬們的技術能力差別)時,如果你的英語能力不錯,可能被指派到重要的國際合作案
  6. 抗壓性變高。你會需要用英文做簡報,熬得過的話抗壓性自然變高
  7. 強化英文能力機會變多。當你因為英文能力強開始受益時,你會更常使用它,自然越磨越亮
以上僅列出幾點我的發現,其實把技術磨練的很強也是有上述機會,只是輔以英文能力相信可以有著比別人更多的機會。加強英文能力也不只是為了這些潛在的機會,相信大家平常閱讀較新的技術文章及資料大部份仍是以英文居多,如果英文好看得快的話,花相同的時間就能比別人看更多東西,了解更多。

其實這篇文章主要是針對台灣的程式設計師包括我而寫,希望能有一點激勵的效果。相信大多數人都不是以英語為母語,寫出來的code也許自認不會比外國人差,可是如果只是因為英文不夠好,無法進入夢想中的外商大型企業服務或是有滿腦子的想法卻無法在面試時跟外籍面試官表達,甚至無法拿到理想的薪資待遇,內心實在是很嘔。因為這樣的場景我就發生過,明明聽出面試官在問我什麼,但我卻無法好好地用英文表達我的想法,來為自己加分,雖然offer還是拿到了,但不免還是有小小遺憾。說到這大概有人會問我是怎麼加強自己的英文能力了,我不是專業,但是可以分享些心得,不過這又是另一篇文章了。

February 15, 2013

Tools I use for development

Here's a list of tools I use for development. These are not exhaustive and will be updated over time.
  1. Balsamiq Mockups - a UI prototyping tool, I use it when presenting to business people or developers how I am going to lay out the web page
  2. CruiseControl.NET - a free open-source continuous integration tool
  3. Fiddler
  4. Git Extensions
  5. Git for Windows
  6. ILSpy - a .NET assembly browser and decompiler.
  7. Jenkins - a free open-source continuous integration tool
  8. Legit Log Viewer - a log parser which can read logs generated from NLog and log4net
  9. LINQPad
  10. Network Monitor
  11. PostSharp
  12. RDCMan
  13. Robocopy - a powerful command line tool for synchronization/copy between files/folder, built-in Windows 7/Windows 2008
  14. TeamCity
  15. TortoiseSVN - a subversion client
  16. Trac - an issue tracking system
  17. Redmine - an issue tracking system
  18. StyleCop
  19. VisualSVN Server - a windows-based subversion server
  20. WinMerge
  21. WiX
  22. WixEdit - a GUI tool for editing WiX configuration file
  23. Zeta Resource Editor