有人說有天分固然重要,但是更重要的是努力,但在我看來,想成為一個程式設計師,需要的天分其實遠大於努力!
自從筆者成功轉職成一個程式設計師以來,每隔一陣子總會有朋友詢問要怎樣成為一個程式設計師,或是怎樣入門等,一直有個想法要把心得整理出來,不過筆者的經驗不一定是能成功複製的經驗,也一直沒有對於該如何轉職的定論,所以暫時只能把這些時候的想法用雜談的方式呈現。
筆者一直對資訊產業很有興趣,在某次待業過程中得知政府有全額補助的職業訓練課程可以去報名上課,才正式開啟轉職之路。但其實這類課程即便是精心安排的由淺入深,時間和強度也足夠媲美中上程度的大學課程,這樣對於就業來說還是很不足,以筆者自身經驗來說,結訓後學會了 HTML CSS JavaScript PHP JAVA/Android,但真的要投入就業市場卻還是有段差距,當然同期的同學中有強者很快獲得待遇很優渥的工作,在這方面的確是你努力了多少,獲得了多少,筆者必須承認在學習上的努力不夠,畢竟學習是件跟努力程度成正比的事情。
那怎麼本篇文章的引言下的如此聳動?就筆者投入程式設計師兩年左右的經驗,曾和老闆和同事面試不少求職者,太多人都是屬於「碼農」,就是只能照說照做沒有自己想法或是自己解決問題的能力的這種人,如果只是要當一個「碼農」,經過一定強度的訓練後,只要不是程度太差的人都能成功轉職,但這是你想要的生活嗎?或者是說,當你做了五年或十年,你的程度沒有辦法在往上,薪資也沒辦法在往上的時候你還能做的安穩做得開心嗎?你能做一輩子嗎?如果你的答案是不行,那請不要浪費寶貴的時間去證明你只是一個「碼農」!
所以才說天分太重要了!努力還能培養,但是天分幾乎是不行!沒有成就感,隨著時間沒有在程度或薪資上成長是會摧毀一個人的意志的,聽過太多不少人在意志被消磨後放棄了程式設計師這種外人認為高薪的工作,但其實也沒多高薪!
另外也必須說到一件更重要的特質,就是熱忱!就算不是聰明絕頂,但是熱忱是能支持一個人走下去的動力,筆者是很歡迎也很建議多方嘗試自己沒接觸過的東西,如果接觸了寫程式,讓你覺得很有成就感、很有熱誠、很有動力想繼續往下挑戰新東西的話,自然就會努力、自然就會意志力堅定,那這樣竟不用管天分到底是多少啦!做自己開心的事情做重要了不是嗎!?
開啟成為程式設計師的大門需要的是天分的鑰匙,但是支持往前走的是熱誠!
最後稍微說一下應該是最多人想問的,要怎麼學以及要用什麼程式語言入門,這兩件事情我跟同事也是辯論許久,先說結論,結論是沒有標準答案,因為就是會有天才自學就能比所有人都強啊!那麼對於一般人來說呢,要怎麼學這件事情,有個好老師太重要了!真的找一個好老師事半功倍,也才不會養成一些奇怪的壞習慣;要用什麼程式語言入門,最近一兩年都很多農場文章都說要用 JavaScript 入門,筆者個人是覺得最好不要,JavaScript 太多坑,有些觀念跟主流的靜態的、物件導向程式語言不同,容易養成壞習慣,或是轉去學新的程式語言時容易無法轉換適應,也請不要直接學 C/C++,直接摧毀你對於程式設計的熱誠(因為 C/C++ 也是跟其他主流的程式語言太不一樣,又難門檻又超高),筆者會比較建議直接從 Java 或 C# 入手吧,學習門檻比 JavaScript 高一些沒錯,但是在泛用性、職場需求、學習其他程式語言上有很大的幫助,而且直接從這 Java 或 C# 學習還能跨過這個門檻的人,至少能確定你的天分至少是夠用的!如果沒辦法跨過的話,那真的就別想太多,去別的地方尋找你的天分吧!