僅就自身的經驗作為心得記錄,並不適用於每個人,請斟酌參考。
畢業於理工科系,最初接觸的程式語言不是現在人人推前後端都能做的javascript,也不是初學易懂好上手應用廣的python,而是如同傳統企業核心用COBOL、Java,理工科入門語言--fortran。這一點在面試時也不意外的被面試官嘲弄了一番,在他那個年代學的東西到了現在還被學校當作入門,同時也被質疑到底會不會寫程式。
什麼程度才能叫做會寫程式?
以程式語言都有的基本共通特性來說,要學的不外乎
- 變數
- 判斷邏輯
- 迴圈
- 陣列
- function
做為科學應用,上面提到的部分已經可以完成大多數要做的基礎內容,畢竟只是想辦法把推倒運算後的數學式改用程式腳本寫出來罷了,要的是結果,程式只是工具。能不能跑?當然可以!程式運行效率很差而已,其中的問題在於不具有軟體設計的思維,不考慮模組化、不考慮維護性、不考慮擴充性、不管時間複雜度,只要好好的運作這些步驟,活像個巨集指令。
之後真正考慮把寫程式作為工作選項之一,我思考的不是去培訓機構,而是看看自己與本科生間缺了什麼該補足的地方。於是在Youtube上找到了CS50的公開課,教授解釋得很清楚,於是又碰了點C語言,深入點資料結構,接觸網路運作,一點一點的挖,一點一點的補,在了解一定程度後,開始打開Leetcode刷刷題目作為練習。
於是自學了一段時間後,開始找了幾間公司投遞履歷,通常都會被問到一個問題:怎麼不一開始就去某某培訓機構?至少出來還有個作品。而這些比較深入的知識,其實不怎麼被問到,一方面也許該職缺用不到這些知識,另一方面也許面試官也不期待一個非本科的人能回答這些問題吧?
開始工作後,使用的是Java,遇到的難點不是程式邏輯,而是環境建置。Python Flask 一句flask run 就在本機啟了個server,反觀在Java內要匯入一堆XML設定檔,寫好一堆設定的連線,打到特定的程式運行等等。我想,對我來說工作上最大的收穫,就是把已經會的網頁呈現、程式運作、資料庫指令等等獨立的操作實際地串起來,雖然不是做得很完全,至少可以有個雛形呈現。即使這項Java的技術偏向老舊,在了解框架後再上youtube看那些Django教學也變得容易許多。
最後,我認為最重要的語言還是--英文。在google打上遇到的問題大多都是前人已經踩過的坑,或多或少會有可行的解法,具備一定的英文基礎後,不論是判斷錯誤訊息、教學資源、命名方式跟設計上,都能有進一步的理解。
當然,還是取決於想要認知的深度以及權衡所投入的時間成本。