字體:小 中 大 | |
|
|
2015/11/21 02:36:31瀏覽18023|回應0|推薦9 | |
一兩年前我才知道有「演算法工程師」這個名詞,現在撇開老闆的身分,我實際的工作內容就是一個演算法研發工程師。這是軟體工程師的一個子分類,104說這種人薪水是蠻高的: https://www.104.com.tw/jb/wage/list?type=1&jobcat=2007001000&cat=jobmake 當然,這種人的高薪是有道理的!他們可以說是軟體世界核心的發明家。像車牌辨識,沒有好的演算法就沒有產品,一切都是空的!除非你的公司是用盜版或只是代理商。一般人看到的資訊業商機都是「好點子」!譬如用人臉辨識可以節省很多時間人力成本,或產生新型態的應用。但是要實現這些好點子就必須用電腦來實現,基本流程是: 好點子→數學模式→電腦程式 一般人只看到軟體工程師在「寫程式」,也只會注意到他們「用甚麼程式語言?」但是演算法工程師的工作內容其實是超越寫程式技巧的!重點不在他用的程式,而是他設計的數學計算流程,那是絕對可以稱為「研究」性質的工作,稱他們是業界的教授或研究員絕對不為過! 換個角度說,軟體業界每個工作人員都在埋頭寫程式,但是有九個半的人其實是在模仿、複製與修改既有的程式流程與架構,並不是憑空發明出軟體!譬如校務系統好了,第一個設計出來的那個人可以稱為演算法工程師,但是後續模仿那些程式流程架構的工作者就是一般的程式師,不能算是演算法工程師了! 所以我常常「鼓勵」學生不要害怕投入軟體開發業,沒那麼恐怖說老闆會交代你做一些「別人都沒做過的事情」!所以只要找到類似程式,看得懂,能依據顧客需要修改,就可以做軟體工程師了!這真的不必智商180或十幾年的功力。 但演算法工程師就是真的必須做出,或至少「想出」新的方法流程,通常是博士級的人幹的!這種角色表面上似乎不必很會寫程式,像教授一樣,在紙上或黑板上推導出有效的數學公式就好了!但是實務上如果你不是寫程式高手,就很難快速的「作實驗」驗證你的數學方法是不是可行?如果每個新的公式都要交代「下面」的程式師去作實驗,那真的太慢了! 有一段美好時光是我們可以使用比較高階,特別為方便研發的好用「程式」(或稱軟體)來幫我們快速實驗新的演算法,最經典的就是Matlab了!這些程式缺點是不太能設計複雜的使用者介面,但是可以有很多工具幫你分析思考,算是研究工具而不是製造工具。所以我知道的影像辨識研究者大部分是用Matlab的!我自己則是折衷的用還算好用,也足以當軟體製作工具的VB做研究。 但是現在似乎好日子過去了!影像辨識開始必須在行動裝置,甚至穿戴裝置上實作出來才有實用價值。正如我前面的文章談到的!演算法必須開始「野外求生」,不再能安居在雲端的超級電腦裡面了! 演算法的正確與有效還是必要的前提,但是最高階的原始程式,如Matlab可能要被解析為非常低階的C甚至組合語言才能真的很實用。在這個技術發展趨勢已現,但是業界分工還不明確的這個過渡時期,演算法工程師的日子應該會很難過了!因為從高階到低階的程式實作與研究好像都是我們的工作?同業們辛苦了! 以我研究車牌辨識的近況來說,雖然我還不必親自一行一行的翻譯我寫的高階VB程式到C++程式碼,但是我也必須親自「下鄉」了解程式在簡陋環境中執行的所有問題,在原始的演算法設計端就要改變設計,不能讓只適合賽車的超跑去做登山休旅車做的事情。當我真的改變設計之後,我的程式速度快了三四成,記憶體使用少了很多,連程式碼都簡短很多,配合的程式師工作變輕了!工作時程變短,我們也可以用更便宜的硬體去實現一樣的功能,這就是產品的優勢了! |
|
( 心情隨筆|工作職場 ) |