軟體工程師的守備範圍很廣,即使限縮在我所在的硬體公司的環境中,我知道我也仍是在瞎子摸象,即使如此,我仍然想嘗試回答我在學生時代的疑問:「硬體公司如果不賣軟體,那裡面的軟體工程師在做什麼呢?」
根據我對硬體公司軟體開發團隊的了解,他們工作任務分成七種:
軟體都是有限制的,舉例來說,使用微軟的 Excel 讀取 CSV 格式的檔案,過往大概只能讀100萬行左右,超過的部分就捨棄掉,那麼超過100萬行的資料該如何是好?又要怎麼分析呢?
不論是現有商用軟體或是內部軟體都有各自的輸入與輸出格式,許多工作是要一個接一個地串接不同軟體,來產生想要的結果,那麼有辦法只手動做一次設定就讓這些軟體自動地一個個依序的執行嗎?
這是仿照商用軟體的功能,自己刻一個,例如我們也做個 Excel 軟體,這行為背後的目的多是為了減少公司在商用軟體上的花費;要嘛不買某軟體了、要嘛減少要購買的軟體套數、或是警告軟體商別賣太貴,我們可自己做喔!
在這之外,我們常用來會催眠高層的說法,是說我們自己開發可以提供公司同仁客制化開發服務(對軟體商來說,太少客戶需要的功能,他們一般不太會願意做,除非你是大客戶,一次買很多套,或是他們為了打入市場等等原因)、我們可以快速回應、我們也可以保護公司的特有技術想法。
這包含少見地突然有別的團隊找上門來,希望軟體團隊能幫忙想算法解決困難,以及,軟體團隊自己有了觀察,自己想去推動。
這與開發新算法相似,可以看成是開發算法的實作階段;特別分類出來,只是想強調有些時候,別的團隊是把規格方法大致都確認了,才來找軟體團隊幫忙,所以軟體團隊只是實作出來,例如用開發軟體去模擬某硬體的功能;或者只是單純實作某學術論文或技術報告的方法。
市面軟體商有時會來推銷軟體,有時同樣功能可能有兩、三個軟體商有做,每一家也都會全力宣傳甚至吹捧自家的軟體的能力;那麼要買嗎?要買哪一家的軟體呢?這樣的評估任務有時候也是內部軟體團隊的工作;有時,可能還會和軟體商一起合作進行,簡單點的合作方式例如就只回報軟體有問題,廠商會再要求你提供資料,他們再做修正,看要做到怎樣才會滿意,才能說服公司購買。
許多商用軟體都不讓公司買斷,或是因為買斷實在太貴等原因,公司需要每段時間付費購買使用軟體的授權;在成本的考量下,購買的套數多是有限的,而且會 (遠) 低於可使用的員工數目,那要怎麼分配呢?一般會是動態的分配,有需要時才用,並且請使用完的同仁快點關閉軟體,不要佔用授權數;有時也可以和軟體商用「借」的,有時是用凹的… 正常是之後要再結算借的費用;像這樣的工作,很需要有人負責協調與監管,有的軟體團隊也會有人專門負責這工作。
以上七種類是根據我的觀察整理出來的,至少,我在硬體公司裡看過的五個軟體團隊的守備範圍都被這七類包含在內,最多的是同時這七類都有在做;當然嚴謹來說,有的類別有點重疊,並且這些也不是整個內部軟體世界的全部,像是管理伺服器服務、資訊安全等專業的高手,我自己就不熟,也沒有這專業的好友可深入聊聊日常工作,所以這七種工作任務就供參考囉。