從接案公司到產品公司

接案公司會不斷有新專案在迭代,工作一兩年就有可能經手到數十個專案,因為業務會持續地向企業與政府單位拉案源,維持公司營運。

產品公司則是在經營自有產品,在不同的產品階段進去,就會接收到不同型態的任務。

過去前輩都會建議我們有機會進到產品公司就去試試看,而第二份工作我很幸運地能接觸到產品開發,並且能主導前端架構(因為只有我一個前端…)。

但我從來沒寫過 Vue,還好專案用的是 Composition API,因此從 React 的觀念轉換過去不會太難,也接觸到了 Monorepo 的概念。

開發日常

在接案公司裡一個人要同時經手數個專案,如果公司是走傳統的 MVC 架構,甚至一個人就要包辦前後端。不過專案通常至多三四個季度就會結案,開發週期很短,所以沒有什麼歷史包袱,可以說是用完就丟。只是在趕審查或結案時,加班加到並軌也是很常見的 XD

由於我進來產品公司時,專案已經到達 MVP 階段,所以我的工作大多是維護和重構,也嘗試把架構改得更好維護,偶爾需要開發新功能,開發壓力小很多,所以我能理解一般求職者偏好產品公司大於接案公司的原因。

但如同前面所說,產品的不同階段的任務內容落差會很大!

在產品早期階段,有機會歷經反覆重做的無間地獄,當利害關係人希望產品趕快發行變現,也是有可能加班加到並軌的…。

程式碼品質

接案公司比較常被討論的是一直趕趕趕結案,沒有明確的開發流程或是沒空做 Code Review,殘留的技術債就會很多,所以還蠻容易在保固合約的期間害到自己的維護工作。

不過即使是產品公司,規模小的新創也不一定有人力和餘力做控管,我現在維護的專案內容就是如此,像是拼錯字、語法誤用、語意不對、元件和資料流的設計問題,或是有一些奇怪的 side effect 在重複消耗流量等等,有許多過往留下的技術債需要慢慢清除。

所以在沒人把關的情況下,程式碼品質的好壞,就真的仰賴軟體工程師本人的造化和良心了…。

如果沒有規範或開發流程,對我來說在什麼地方工作差異都不大,但我不會說沒有這些東西的就是爛公司不要去,沒有的部分,我們可以試著建立和導入,這也是一個鍛鍊規劃能力的好機會( 前提是賣肝賺錢的程度是自己可以接受的)。