跳到主要內容

雜談 | 不是工程師的工程師

這是一個非科班出身的程式語言及資料科學自學者的學習歷程部落格。

這很適合放在本部落第一篇文章的內容當中。在這裡,你找不太到程式語言的技術教學,有的是一位程式語言自學者,對於自學寫程式的心得與看法。
對於學習,我的觀念都是這樣的,唯有持續的練習、並定期記錄、審思自己在過去一段時間內的學習內容,才會知道自己是否真正有所成長。
抱著這樣的信念,我開始寫這個部落格。

為什麼想學習寫程式?

Cause I want to be a data scientist.

這要從我前一份工作談起。我在中部的一家小型貿易公司擔任業務助理,其中一項主要的工作內容,即是製作各式報表供主管們參考。但公司僅採用功能陽春的 ERP 來執行進銷存作業,且沒有資訊部門。問題來了,主管們所需要的這些報表,通常無法由 ERP 直接生成,必須先從 ERP 取出 raw data,再以人工的方式加工而成。這些報表的加工所需時間不一,主管們對於報表資訊的需求又頻繁且多樣。為了解決這個問題,我便鑽研起各種 MS Excel 的函數使用方法。僅憑常見的加總函數、樞紐分析表、或是內建的統計圖表是不夠的,一定還需要搭配參照、條件式函數、甚至是巨集。

於是,我不僅大幅改善了製作報表的所需時間,同時能夠製作過去其他同仁們不知道該如何產生的報表資料。印象最深刻的例子是,同樣一份報表資料,我的同事用手工方式一欄一列慢慢鍵入,需要半天、甚至一整個工作天的時間 ;我用結合多種函數而寫出的巢狀迴圈,只需要幾十分鐘便可完成。對於 programming 的興趣,也是在此時慢慢培養出來的。本文標題的亦出自於此,即明明不是工程師,可是在做的卻是相當於(廣義上的)工程師的工作內容

等等!!? 那這跟 Data Scientist有什麼關聯?

說到底資料科學家也是一種職業啊 XD 可是小小一枚助理,即便真的具備十足本事,想將資料科學的知識技術發揮在工作上,大概也十分有限。既然如此,那就找一份真正與資料科學相關的工作吧!前面提過,我並非出身於資訊工程相關學科背景,可是放眼望去,與資料科學、資料工程、資料分析相關的工作,所需要具備的專業技能幾乎都脫離不了寫程式,可是不會寫程式怎麼辦?那就學吧!同時,為了實踐這樣的目標,我也在今年二月,重回校園全職進修。

該學哪種程式語言?

既然已經確定要學寫程式了,那麼該學哪一種程式語言?
我曾問過我大學資工系的朋友們,他們最擅長甚麼語言?其中一位回應我「嗯……中文?」
我不能同意他更多了XD 不過他仍舊有認真回應「其實應該是要先問,你學寫程式要做什麼?」以及「看客戶需求。」(或者說,學習者的需求),這對許多資訊工程背景的朋友們或許是非常基本的觀念,但這給了身為 programming 初心者的我而言,一個重要的啟發。程式語言是一種工具,而我們總得先確認目的是什麼,才能知道該使用何種工具、何種方法來達成目的。

正如前述,我學習寫程式的最終目標,是想從事資料科學相關工作,再更明確定義,主要是有關統計分析作業研究資料採礦、與資料視覺化的工作。要玩這些東西,怎能學個 Python啊!再考量到相關工作的共通工具,就再搭配個 SQL 吧!好啦!該學什麼也確定了,那麼剩下的就是,練習、練習、練習!

從哪裡開始?

想學的東西太多了,能用的時間又太少,同時學三新東西,成效鐵定不好,既然如此,那就一個個來吧!那要從哪一項先來呢?RPython 這兩樣都是資料採礦、數據分析、資料視覺化的利器,就上述這幾項功能性目標而言,這兩種工具有一定的重疊性質,我可以先擇一學習,可是 SQL 的性質異於兩者,於實務應用上,也是 RPython 無法取代的。所以我們總算有了下集預告:從 SQL 開始的 programming 學習之路!