相信許多人對軟體工程師充滿了很多想像,例如數學是不是都很好、邏輯應該很強、組織能力應該不錯…等等。身為工程師的小弟,從事這個行業也已經 5 年了,不敢說是經驗豐富,但至少能夠靠打打鍵盤討生活。
那想成為工程師的話,你應該具備什麼呢?我的答案是「邏輯要清晰、善用身邊資源、中等的閱讀英文程度及團隊合作力」。讓我來一一為你說明吧!
邏輯能力
寫程式必備的技能的就是邏輯能力,也就是當遇到一個問題時,你會用什麼角度去切入呢?舉個簡單的例子,寫一個 1 + 2 + 3 +…+ 100 的程式。
聰明的你會怎麼做呢?
對程式有點概念的話,你可能會想到做一個 for 迴圈去加總對吧!甚至用 while 迴圈去做計算。
這兩個方法都對,但有什麼更好的方法嗎?
既然你都已經知道初始和結尾的數字,那就套用以前國中學的三角形公式是不是更快呢?然後將這個邏輯包在一個 function 裡面,既不會用 for 迴圈跑個 100 次,執行效能也增快了,未來只要調整首項和末項,自然就可以擴展成其他的加法算術問題了。
這只是一個淺顯易懂的例子,但工程師每天都在處理比這個麻煩得多的案例。因此,怎麼樣切入問題就顯得重要了,好的解法會讓效率倍增。
善用資源
為什麼善用資源如此重要?再舉個簡單的例子,假設今天要排序 5、6、1、4、2、3、7 這幾個數字。
聰明的你會怎麼做呢?
學過理工的都知道演算法,演算法的概念就類似做任何事情的 SOP,先處理 A->B->C 的過程,每個步驟都做完了,答案也就出來了。而處理排序問題,最著名的演算法就是 Bubble Sort。
要自己寫出 Bubble Sort 應該不是難事,但有必要嗎?因為每個人時間都有限,在有限時間內盡量增加效率,這才是工程師應該做到的事情。
不過要怎麼增加效率呢?市面上很多書籍介紹時間管理法則,但這不是今天探討的重點。最簡單的做法就是找找看要解決的問題有沒有已經存在的內建模組 (Module)、套件 (Package)、工具 (Tool)、開源程式 (Open Source),甚至是框架 (Framwork),直接套用來達到你要的效果。
英文程度
英文程度的重要程度並不低於前面提到的善用資源喔!為什麼這樣說呢?
因為世界上頂尖的技術都是流傳在英語圈的,像是每個工程師都一定聽過的 Stack Overflow 甚至是每個框架的說明文件 (Documentation) 都是英文的居多。
為了要看懂,我認為至少應該是中等的英文閱讀能力才可以。如果執意要看中文的也可以,但你會發現有些問題很難描述,例如「c# 變數宣告 實值型別」,這看不懂沒關係,我自己也看不懂。
如果你想當工程師,請盡量努力用英文描述你遇到的問題,即使文法不正確也沒差,反正 Google 大神懂你。
團隊合作力
通常每個專案都有一定的規模,為了加速寫程式的時間,企業都一定會講求團隊合作能力。大家像是在玩拼圖似的,每個工程師會需要處理部分的功能,通常來說功能細分得恰當時,組裝大家的拼圖就不會發生錯誤。
雖然細分後看似工程師都可以獨自完成,但實際上不是的,實務上可能會有大家共用某些功能的情況發生,這時每個工程師就需要去 follow 一套規則,這時就會運用上團隊合作力。
結論
以上就是當工程師應該具備的技能,在這之中我覺得團隊合作立非常重要,想要把程式做好做大,沒有人團隊分工合作是不可能的。
第一次寫這樣的內容,不知道有沒有幫助到大家,如果太簡單或是還是太抽象,麻煩寫在留言區囉!這樣我才有辦法調整,甘溫唷!