Dot-to-Dot | 最實用的線上學習平台 | 軟體 | Dot-to-Dot專訪 X Ivan|後端工程通識:跳脫程式框架的思考
...
Dot-to-Dot專訪 X Ivan|後端工程通識:跳脫程式框架的思考

發佈日期:2022/04/19 觀看次數:2413
臺大電機系 畢業
均一教育平台 軟體實習生
三創育成的新創 Backend Engineer
新加坡科技公司 Backend Engineer

 

與程式語言的愛恨情仇

 

我最早接觸到程式語言是在高中時候的電腦課,學校主要是教 C++,老師從字串、型別、overflow這些比較底層的東西開始教起,但其實我那個時候上課都聽不太懂,我跟旁邊的朋友常常都上課偷睡覺,作業常常交不出來需要其他同學罩一下。

 

大學填科系的時候選擇電機系,最主要就是覺得『寫程式』的比重沒有像資工系一樣佔這麼高,還有硬體、光電這些其他的探索選擇,原本我以為程式語言就是某一堂課上完就沒了,但後來才發現程式其實沒有這麼狹隘,不管像是機器人、硬體或是IC,都需要各式各樣不同的程式來輔助,那時候才發現真的是逃不掉:)

那時候系上主要就分成兩個派別,一種是跟我一樣還沒了解太多就進來,雖然學科能力還不錯,但對於程式領域卻是一知半解;另外一種人就是很早就接觸程式,對於各種程式都瞭若指掌,甚至還有參加奧林匹亞競賽的選手。

 

有一次期末專案我們要用C++做一個打殭屍的遊戲,那個時候因為沒有什麼程式的底子,就不太曉得要怎麼幫助團隊,第一次討論的時候我就看到另外兩個組員捲起袖子就直接開始寫程式,好不容易鼓起勇氣問他們自己可以幫上什麼忙,他們想了想最後讓我負責畫遊戲的地圖,地圖的設計跟程式語言完全沒有關係,那個時候才發現自己其實超廢的。

當初其實和這些同學比較會覺得滿挫折,甚至一度懷疑自己是不是不適合走這條路。是一直到後來參加了一個學期間的實習計畫,在一間教育新創作軟體開發的後端工程師,那是第一次真的參與到產品的製作,要跟PM、設計師這些不同的角色去溝通合作,最後做出來的功能也真的有被實際使用到,讓我滿有成就感的,也開啟對於軟體開發一個全新的想像空間。

 

 

從追求速度到追求品質

 

以軟體來說其實學校跟公司在專案上存在滿大的差異,最明顯的會是在專案的大小跟複雜度。通常學校的專案只會進行兩到三週,同時負責的組員可能也只有兩三個人;但以公司的產品來說,可能是由數十位工程師花了一到兩年的時間一起開發出來的。對於我們工程師來說其實也存在思維上的差異,在學校拼的是速度,要在最短的時間把功能開發出來;但在公司更重要的是要讀懂其他工程師的程式碼。

 

我覺得很多新手在開始學習網頁時,通常會從某個流行的程式框架(ex.Node.js) 再搭配專案來學習。有具體的目標雖然也沒有錯,但有一個問題是新手往往容易被程式框架綁住,而可能要踩很多雷、多走很多冤望路。像我剛學網頁的時候,一開始接觸到的是Django,這個框架的特色是有很多功能他都幫你做好了(註冊/登入、資料庫串接..etc),然後那時候我參加一個黑克松比賽,要在24小時內做出一個小成品。我就選擇用Django來製作,但其實我們只需要一個很簡單的API,用flask這個python的輕量級框架就可以輕鬆解決,根本也不用一直熬夜。

 

我一開始工作的時候還停留在學校的思考方式,開發的時候不太在意程式的『品質』,一心只想要趕快讓功能動起來。但在Code Review的環節就會被資深工程師釘爛,提供很多修改上的建議,來來回回的修改後發現上線的時間其實也沒有比較快。後來覺得其實心態上的調整對於剛進入產業的工程師滿重要的,我那個時候也花了滿多時間跟Mentor去討論修正,慢慢調整跟以前在學校心態上的落差。

 


 

關於工程師很難溝通這件事

 

我們有的時候是真的沒有這麼好溝通(笑),主要是因為有時候工程的概念沒有這麼好跟其他人解釋清楚,那像工程師你也知道大多時間都跟電腦為伍,有時候很懶得跟別人花時間解釋清楚或表達自己的看法。但更多時候其實是因為其他人沒有理解工程師在意的點是什麼,舉個最簡單的例子,對於工程師來說更在意的可能是新增的系統能不能被重複的利用或者會不會危害到日後的開發;但對PM來說,他們更在意的是使用者的需求,如果雙方都很堅持自己的觀點不願意退讓,就會有互相覺得難以溝通的狀況出現。

 

推薦好課:後端工程通識:跳脫程式框架的思考