[碎碎念] 程式開發領域由菜鳥到老鳥的成長歷程 (1) - 學生階段:認識程式開發這工作
PS: 本系列文係參加 IThome 鐵人賽人生組的系列文,將它搬回到部落格。
程式開發 (Programming) 這份工作,基本上就是和電腦用一個特定的語言進行對話與控制電腦執行需要的工作,以達成既定需求的一個工作,而做這份工作的人,除了要了解電腦有哪些東西以外,還要了解如何和電腦溝通,但隨著日後經驗的增長以及歷練後,會認為"人"才是程式開發成敗的最重要關鍵。
前面所講的特定的語言,就是指程式語言 (Programming Language),程式語言經過編譯器或直譯器的解碼與轉換的流程後,變成機器語言 (Machine Language),電腦的 CPU 也才看得懂,才會依照流程來走,當然,如果一開始流程就是錯的,那麼就算是轉換成功,跑出來的結果一樣是錯的,GIGO (Garbage in, Garbage Out) 即為代表之一,就算是對的流程,錯的資料一樣會有錯誤的結果,因此不是只要會和電腦溝通,告訴電腦正確的流程以及檢驗資料的正確性 (Data Validation),就是寫程式的人要處理的重要工作。
只是要透過程式語言和電腦溝通這件事是可大可小的,小的話是 1+1 = 2,大的話則可到一個完整的商業智慧 (BI) 系統,不同的系統規模與目標則會有不同的領域知識 (Domain Knowledge),這些領域知識會作為程式開發的依據,也許不會是實際執行程式開發的人需要去熟悉,但至少一定會和一位懂的人一起合作 (co-work),但是,台灣目前多半都是由程式開發的人在處理,只是由業務人員丟一個作法,但把它做出來就是程式開發人員的工作了,而且台灣多半都是中小企業,就算是做軟體的公司,也可能只有一兩位 PG (Programmer,程式設計師),想要看到書本上的 team-work,在小公司真的很困難,甚至會有一人兼多職的現象 (PG+SA+SD+DBA+...),所以在台灣要當程式開發人員,要有一人兼多職的心理準備,在學校就要打好多個面向的根基,到了職場才會有比較大且多的發展機會。
扯遠了,回到前面所說的可大可小這件事,為了要降低開發系統時的時間與複雜度,在作業系統或是應用核心上都會提供一個叫做框架 (Framework) 的東西,專門用來包裝複雜工作以降低程式開發人員所需的知識負荷,不過 Framework 卻變成了程式開發人員的學習門檻之一,因為如果沒能善用 Framework 的話,那麼程式寫起來會很辛苦,人家很多寫好的東西不會用,變成要自己寫,時間和投入的成本也會變得很高,所以如何善用 Framework 也是程式開發的重要議題之一。
而在工作型態上,程式開發人員有 99% 的機率會長時間坐在辦公桌前寫程式,不適合太外向的人,而且還要能忍受長時間不跟他人講話,只和電腦聊天和下指令。同時程式開發工作除了整天和電腦聊天外,還要不定時更新自己的知識,才能追上不斷進步的科技,簡單的說,程式開發不像一些基礎學科如會計或物理,平均一個新技術的有效期間大概只有1-3年,時候到了或是老闆要求了就要學新的東西,因為不學就很有可能會被淘汰,所以想進來程式開發領域的人要有這一層覺悟,這點日後也會提及。
總而言之,程式開發的工作基本上只是學習和電腦的對話,所以只要學會了對話的方式,任何人都可以下來做程式開發,然而能不能存活得夠久,則存乎一心了。