身為前端,你瞭解公司的專案性質嗎?

洧杰 已發佈 2019-10-16

我們在前面的章節有提到面試如何評估公司的工作,但沒有仔細講解各種軟體公司的屬性,以及背後你需要注意到哪些細節,就讓我娓娓道來,好讓各位準備踏入前端的朋友提供一個參考依據。

接案公司 - 以量取勝型

什麼是以量取勝呢?也就是當你在 Google 打網頁設計這個關鍵字時,前一兩頁的網頁設計公司便是,這些公司的共通點就是替不是資訊背景的廠商設計網站與系統開發。

如果你進入到的是網站設計公司,你能夠磨練到的就是開發速度與實務經驗,通常這類型的公司會有許多業務去承接大量案源,再丟回到公司讓網頁開發部門去消化。你身上背的案子同時會有兩三件以上,甚至數十件都是有可能的,在案件如此密集的情況下,你自然必須加緊跟上專案的腳步去達成專案,好處就是能讓你在短時間大幅度提升。

但這種公司會有一個缺點就是到最後你會發現業務、設計、前端為了快速消耗一個案子,很多東西都會 SOP 流程化,設計出來的東西都很雷同,你為了要滿足公司的業務量,CSS 大部分也都會沿用,甚至把背景圖片、色系、文案改一改,新網站就出來了,幾乎不到半年你就會覺得自己做得工作相當的重複化。而且專案的生命週期又短,你根本沒時間投入新的技術在新的網站開發上。

另外也分享些現實面的故事,有幾間業界公認的血汗網頁設計公司,工作量也大到超乎你的想像,你的長官會隨時盯著你要進度。要怎麼形容工作量呢?就好比說你回到家以後,已經累到都沒力氣洗澡,而且也累到睡不著,或是洗澡洗到睡著,瞇一下發現已經天亮又要上班了。

我的一些學生有面試過這類性質的公司,會問我說是不是就不建議去了,但其實我就會反問對方:「你能從那裡獲得什麼?」,以剛接觸頁面的學生最欠缺的就是「經驗與實戰技術」,你若能在那麼高壓性的工作環境撐個一年,就像是進入精神時光屋般獲得好幾年的開發經驗,等到你獲得你想要的東西後,自然可以再換到更好的環境,豈不是更好?

我就曾經輔導過一位雙親皆有疾病,急需提升開發能力的學生,聽了我的建議後進了火坑一年,年薪只有 35 萬,每天都會加班到晚上 10、11 點,旺季時甚至好幾天熬夜都有,後來第二份公司到了外商,薪水福利與生活品質彷彿有天與地的差別。

所以這類公司,我會將他歸類成「可以去練功,但不宜久待,若有覺得重複性質工作開始感到無聊,便可考慮去留」,除非你的主管是會視你的成長提供適當養分,會找具有挑戰性的專案讓你練功,且也注重你的生活品質,薪水也有加到符合期待,倒就另當別論。

接案公司 - 評估專案相性

在前面我有提到所謂的「專案生命週期」,它是什麼呢?就是你開發的時間需要多久,以及它會延續維護多少時間,例如幫一個公司作形象網頁來說好了,你做個幾頁 HTML 也不接動態程式就交件,經手開發的時間兩三天都不到,寫完後你也不必維護他,對方會再自己處理後續上架事宜,這樣子的流程你自然沒辦法從裡面獲得過多的經驗。

以致於你想用個比較進階的前端框架,但是架構就超簡單,簡直就是殺雞用牛刀,反而無法摸到框架的精髓。而且你也沒辦法思考到當今天這個服務在營運過程中,你寫得這段語法是否靈活,要加新功能時容不容易。或者是說在維護期間你體驗到了以前的寫法害自己某個環節花了很多時間在還債,讓你培養出深厚的開發思維,讓你能夠將這份經驗帶往到下份專案上。

而這種接案公司不論是 SI 還是網頁設計公司都會思考營運方向,同時承接具有挑戰性的案子讓團隊來練功。以公司來說我們都會講一年有四季,一季有三個月。公司都會視情況去承接兩、三個會 run 兩季以上的大案子,期間再去接幾個中案子與小案子。而且通常案子結案後,後續都會簽以年度為單位的維護合約。像是這種案子,就很適合你來投入一個大型前端框架在大、中案子上面,新技術也才會有用武之地。

而這些公司也會從各種案源中思考公司方向,例如說:

  • 某間大公司因為長期配的軟體公司不錯,索性直接談併購成自己的軟體部門
  • 從專案中挖出商機開發產品服務,公司除了接案外,部分的現金流也來自於自己的產品
  • 初期接案為目標,但接得案源實際上都是為了要開發自己的產品,並會去申請 SBIR 政府輔助讓他們的產品更具優勢,並轉職成功
  • 曾思考過開發產品方向,最後覺得公司還是擅長接案,客源案量充足,往後也持續穩定十幾年。

這些類型的公司就比較多練功的機會,不過凡事都沒有這麼美好,公司為了養活員工勢必得接大型專案,但是大專案代表時程的掌握性也會跟著難以控制,畢竟架構也大的關係,所以通常一個時程 delay 又狀況多的大專案結束時,往往都會造成許多員工辭職。保哥曾經也寫過類似的文章,也歡迎你去看看。

產品服務設計 - 初期

有些剛起步的新創公司目標就很明確,就是自己想要設計幾個服務產品出來,因為產品也正在設計階段,所以充滿了許多變數,但優點在於在公司草創時期,很多東西都還沒有訂定標準,你想用任何技術都具有非常大的彈性,不受歷史包袱限制。

但是你要記住一件事情,新創公司有個特點就是會不停地建立最小 MVP,盡快地丟到市場上實驗成果,收到用戶回饋後再立即調整,以符合其商業模式。我們甚至會用一句話來描述創業成功的公司一般都會是「原來以為要做 A 服務,做到一半時後來發現市場真的要的是 B 服務,最後轉型成 C 服務才成功」,絕大部分新創都會在 B 服務就死了 90% 錢就燒光了。所以如果你在這類公司發現需求一直在變,架構一直在改那真的是很正常的事情,請不要覺得太奇怪,為了要一直探究市場真正需要的服務,好讓他們能夠在極有限的時間內先建立出一個能支撐的現金流,初期目標如果沒快速達到損益兩平,幾乎都撐不到一年。所以一開始的 Code 都有可能髒到不行還蠻常見的,若真的有做起來,在產品中後期階段就必須再將技術債給補起來。

所以你有機會待到這種公司的話,能有助於提升你的產品思維,公司小小的好處就是你的同事有可能就是老闆與創辦人,通常會自己鼓起勇氣創業代表他們在社會上擁有足夠的社會歷練,他們看到機會了也想要拼一把試試。在日積月累的相處下,你也能從他身上學到一招半式,好讓自己的職涯中能多點武器在身上。再加上你也跟著公司一起從零打磨產品,箇中細節也能整個跑過一次流程,日後當當你自己也想到許多好點子時,自己也能倚賴這些經驗自己嘗試開發出一些產品,不是很棒嗎?

有些人可能會對什麼叫做「產品服務」有些疑惑,例如公司設計一些線上服務,讓潛在使用者因為有需求而買單,就算是老點子也會因為科技的進步有更多的機會,來舉一些例子:

  • 傳統都是打電話叫師傅來修水電與裝潢,現在有 PULO呼叫師傅用 APP 幫你線上媒合附近師傅
  • 以前吃水果都必須自己到市場買,現在有果物配定期幫你配送你想吃的高品質水果
  • 受夠傳統計程車參差不齊的素質水平,有 Uber APP 幫你媒合司機,用線上評價系統來審核司機素質
  • 想要找一個顧問,但求助無門,有鐘點大師讓你能和顧問們有接軌機會

產品服務設計 - 中期

中期是什麼意思呢?就是公司因為這服務有站穩腳步,現金流有可能即將損益打平,接下來要持續擴增人力來進行開發與重構,重構的意思就是程式碼因為初期更新頻繁導致 Code 毫無邏輯性可言,所以必須重新調整網站架構,以符合未來擴增時能夠更加具有彈性。

所以當你進入公司後看到核心程式碼時,有可能會遇到下圖的右邊情形,髒話滿天飛,因為 Code 太髒了你超無言。但我必須和你說,這也是寫程式必經的過程,運營一陣子的公司或多或少都會維護一些專案與產品,自然會需要聘請前端工程師去做程式上的擴充維護,去改別人寫的程式碼,又稱做改屍體

這段期間你會學到許多奇淫技巧,例如:

  • 臨時有個重大 Bug,你用了個小技巧先擋著,雖然很不正規但反正問題有先解決了。
  • 資料庫邏輯你改不動,情急下你只好用 JS + CSS 障眼法的方式先處理掉
  • 有個邏輯會造成網頁 Loading,經由你重構後變得載入速度超快,超有成就感
  • 大量接觸到具有一定架構等級的 Code,浸淫之下能判斷出程式碼品質優劣

產品服務設計 - 後期

如果公司已經有一個持續幫助他們賺取利潤的服務時,程式架構就已經定型了,你頂多是增加些小功能或改 Bug。在這種專案下,你可以看到很沈重的歷史包袱,試圖想改哪裡的 Code 但又很擔心他會爆炸,會覺得自己是在拆炸彈。有可能你會花好長一陣子才有辦法理解整個程式脈絡,短則三個月長則一年。

我會建議如果公司只讓你負責這份工作項目,沒有其它新案開發時,不要久待。因為沒辦法讓自己有經手過完整的開發流程經驗,我就曾經遇到幾位前端朋友因為初期相中他的薪水福利後,過了幾年才驚覺自己技術不增反退,但又因為成家立業現金流開銷大不敢辭職,最後服務消失被資遣,就又必須花更多的技術債補起來,真的得不償失。

我必須再次強調,公司跟員工彼此是各取所需的關係,你需要「金錢、成就、技術能量」,公司需要你「為他們建立商業模式」,如果公司在這三種少給了你其中一種,你就要有警覺性了。因為並不是每間公司都會看重員工成長,做人還是要多靠自己,讓自己保持競爭力。

支援性質部門

這種工作內容也相當有趣,這是我自己取得類別,短時間我也不曉得要怎麼描述。舉大型電商來說好了,每個部門各司其職,有數位行銷、國際行銷、業務、品管、出貨、客服、會計、軟體部門等等。你要做的事情就是協助各個部門的需求,開發出能加速他們工作效率的技術工具。

來說一些例子讓大家有更多的聯想空間:

  • 客服寫 mail 覺得一直回重複的話很麻煩,開發出罐頭訊息服務讓它們將常見訊息進行分類管理
  • 行銷與業務在訂定價格時常會去看競爭對手網站賣多少,寫一隻網頁爬蟲,訂時去撈各大賣場的價格整合在同一頁面上
  • 出貨部門每次都要用難用的第三方貨運公司的系統查資料,你寫爬蟲幫他把資料都整理起來,方便他出貨
  • 部分同仁都會在網頁做許多重複性質的工作,你寫 Chrome 插件提升他們的上稿速度
  • 行銷要打一系列的活動,需要客製化活動網頁
  • 幫業務埋追蹤 Code,觀察使用者轉換行為,並再優化 Landing Page

除了電商外還有很多單位都需要一個軟體部門,例如醫院、銀行、學校、上市上櫃公司等等都很需要,畢竟優化工作效率絕對脫離不了軟體開發。

結尾

希望我的各種舉例讓你能夠對公司的商業模式有一定的輪廓印象,你可以從公司裡面觀察出專案生命週期,這樣才能夠更深入瞭解能從中獲得什麼,凡事絕對沒有對或錯,好或不好,你需要做的事情就是不停地反思「你想在這間公司獲得什麼?」,是想先追求大量的金錢嗎?還是想快速磨練開發經驗?或是每天都能有滿滿的成就感?初期投入前端你是不太可能三者兼備的,魚與熊掌不可兼得,想清楚後,就把時間花下去仔細打磨自己吧。

關於筆者

暱稱:洧杰

介紹:六角學院校長,熱愛分享與交流的前端工程師,目前專注於兼容桌面/移動網頁前端開發,期間已協助數百位平面設計師,網頁設計師導入標準網頁設計。