紀錄一下貧窮的軟體工作者日常
前言
今天是2024年農曆年初。
距離Mobile領域的初心者,已經過了大約1000天左右,想著實的紀錄一下在軟體工程這條道路上遇到的困境與職涯選題,以及什麼是優秀工程師,如何在團隊裡影響大家。
紀錄的初衷無非是呈現最真實的工作環境與面貌。
正文
決定成為軟體工程師的那一天
2022/2/28
我還記得碩士畢業前夕,原本已經買了很多本國考書的我,本來要買台iPad紀錄國考筆記,結果在弟弟的強力遊說下,買了當時出的第一代Macbook M1 Air,從此開始成為會寫程式的人類。找了很多資源,最後決定在好想工作室自學。
相關文章可以回溯:
回憶六個月的自學
那年在面對程式自學的過程裡,有很多的「肌肉斷裂」(笑)。如果有健身習慣的人應該知道肌肉要長大,其實需要一定的訓練量,然後才會變壯,其實寫程式也是一樣。一個「未接觸程式邏輯的素人」到「軟體工程師」,我猜大概會有這幾個轉變:
初期
- 對於自己做出來的東西很有自信,但開始被code review後會變得有一點沒自信,覺得自己做不好。
- 受到一些刺激後可能會發憤圖強,想要學習更多的技術,或者是變得很沒有自信,然後想要逃避寫程式。
但培養正確的心態是:「反正學一個東西一定剛開始的時候不會達到100分,所以盡己所能。」
不過對於當時是素人的我,於是產生了第二種反應,就是冒出「我不想再接觸了,這我不擅長。」
但你必須培養的是就算「看起來沒辦法解,你還是要解的能力,或是提出解決Case的能力」。聽起來很硬?對,TM就是這麼硬。
實際進到職場
實際進到職場後,考慮的面向其實非常的多,再也不是當時初入軟體工作時單純的思考這間公司是否是自己想要的公司這麼簡單的思考了。
台灣的公司,應該可以簡單的把類型分成幾類:
- 傳產
- 新創
- 接案
- 外商
- 博弈
當然有的公司可能是下面這樣的組合:
- 新創 + 接案
- 製造業傳產轉型
- 純接案
- 外商+上面這三類的組合
- 博弈+外商
如果你是一個初入職場的菜鳥,可能要先思考的是:「為什麼面試我的人要找我進來?」
當然理由可能千變萬化,我聽過幾種理由,大家不妨聽看看:
- 公司目前缺一個xxx工程師,如果進來的話可能要有獨立作業的能力。
- 我們公司有蠻多xxx工程師的,會有人帶你。
哪一種聽起來比較ok?
潛台詞我聽過蠻多種的,大部分的人可以思考一下你聽到這句台詞的時候背後代表的意思是什麼。
如果是1.的話,代表可能這個職位缺人,進去之後沒有人帶你,但假如你勝任的話,公司應該就沒有人跟你爭這個專長的職缺。也代表著它可能是一個有開創性的職位。但很難說,都是要實際上到職才會知道前一個工程師是為什麼而離職。有時候看起來的雷缺其實沒那麼糟,往往是把該職位的技術頂起來之後,就有語言權可以影響其他人了。
如果是2.的話,可能也意味著你是Junior,薪水什麼的可能就談不高了。不過也意味著你可能要看其他資深工程師的臉色。
我也有遇過面試就是在詐騙的,說的堂堂皇皇,但進去其實就是爛成一團的燙手山芋。如果是為了長期職涯的進步,我想好的學習環境還是比起沒辦法保護團隊的工作環境還要好,所以就是儘早離職為上。畢竟工程師的薪水飄移,靠的是做的SideProject,還有學習、溝通能力。
職涯走得長遠,靠的是興趣
不知道為什麼,這件事情我自己也想過了很多,最後認同這樣的想法。如果成為軟體工程師,圖的只是「薪水的漲幅」,那麼可能漲幅就會挺有限的,因為基本的動機只是錢。
但假如你在做這件事情感受到的是樂趣的話,何止是每天碰可能都來不及了,可能從本職領域的耕耘到其他端都會是你想要做的事情。
還記得之前有個前輩說過的一句話:
你在這裡的Training如果不是從興趣作為出發點,那你很容易就會失敗,而且會失去想要再碰它的興趣。
什麼是好的環境,什麼是壞的環境?
在問這個問題之前,想先來一點軟體工程大環境的思辨與批判:
- 你期望你在什麼環境裡工作?
- 什麼樣的公司吸引你?
- 你希望自己成為怎麼樣的人?
這個問題經常會問到讓人不知所措,有的人可能會回答:「我想要薪水高的公司,但我不想要博弈。」(潛語言:我想要點到滿的軟體工程紅利,但我不要風險。)
於是,一部分的人就先用了刪去法先縮小範圍,不過假若是在台中工作的朋友,大多知道這個區域的軟體工作機會幾乎是二選一的時候,不知道會怎麼想。
「我想要薪水高的公司,但我不想要博弈。」
還記得有一次,就是抱持著這個心態去面試,後來進到了一間製作「虛擬貨幣詐騙交易平台」的公司,Well,薪水真的高,但生活比博弈還刺激。
不過在台中,可能就要再多選一下了,除了博弈之外台中的公司可能就剩下一些接案公司,還有傳產,極少數傳產懂得軟體開發,但大部分的傳產的專案可能就是一場災難。
上述其實也只是放在一個環境,用低資源的方式去篩選公司,不過我真正想說的其實不是批評上述的這些條件,而是講講之前我遇過的前輩給我的建議:
Mentor:「火箭、文化、題材」
- 火箭:如果有一間公司可能有很多人願意投資,那它可能就是火箭,可以讓你投資在這間公司的時間快速升空。
- 文化:如果有一間公司跟人相處的文化相當友善,讓人樂在這樣工作的環境裡的時候,也許每天就不會想著要離職了。
- 題材:其實題材也是接下來要說的事情,假若一間公司要做的產品是非常有長遠商業性的,那絕對值得投資自己的時間精力進去。
軟體工程師的職涯其實有極大的軟性可以附著在其他的領域,為其他領域帶來影響力。所以其實這段期間在軟體工程領域打轉的1000天,大概知道接下來要怎麼投資自己的時間在找到並貢獻在工作上。
那你可以反問我:「薪資重不重要?」
我大概會回答你:「重要,但它不是決定你加入這個團隊最關鍵的決定。」
其實一間公司在預算的資源配置時,經常會有一些營運的成本配置,從業幾年與做過什麼專案也就大致代表你在相關領域的經驗,而這些公司的「營運成本配置」,就可能會是你在提出期望薪水時,可以報的成交價位。於是看一下大環境的薪資結構,你可能就知道應該自己會落在哪個範疇。而不同類型的公司可能在營運的時候,配置的成本可能也不一樣,比如像是傳產可能配一個Mobile人力薪資跟接案公司配一個Mobile人力薪資,薪水的比重可能就不會相等。這個時候就要綜合比較其他的變項了。
芙莉蓮:「優秀的魔法使在意的是學習魔法的過程」
最近在看葬送的芙莉蓮有感而發,覺得費倫在學魔法的過程跟工程師在寫程式的過程好相近,學習過程的思路與習慣大概就是最值得討論的點。
好久以前有個職涯上的夥伴跟我聊過這件事情,尤其是關於習慣,但由於習慣非常的個人,所以大概只會讓每個人捫心自問自己下面幾個問題:
- 面對未知的習慣
你在工作或在學習一門未知的知識時,你的習慣是什麼?
2. 習慣還沒養成之前…
怎麼樣算是養成壞習慣?
3. 好的習慣與什麼是好的習慣
寫之前先去看文件?(我之前確實看過有人設計一個東西全部把它寫死…
好歹也看看這個東西的定義,以及應用場景吧。
高知識密度的職業應該有的習慣
對我來說,軟體工程師的學習是永無止境的,所以對於某個domain的熟悉可能也就是相對的熟悉,就比如說我可能熟悉iOS這一門的APP開發好了,但可能我不熟悉RxSwift的寫法,那有什麼問題?就landing的時候習慣這些東西就好了,適應,然後提交。
但要注意一件事情喔!如果你的提交每次都被人挑三揀四,那是不是應該回頭看看是不是某些素養沒有建構完成?
所以,如果你或妳是一個Junior Developer,剛入行不到一年,那大概是先看一些Code Complete、Clean Code…etc,諸如此類的軟體設計素養書,才可以有效的寫出好維護、可讀性高、讓公司減低成本的程式碼。
所以回到習慣這件事情,我覺得軟體工程師作為高知識密度的職業,應該是在一開始的時候就要知道自己應該建構好素養,以此作為往後的習慣。最後這些習慣會放大你的工作量能。
總之,軟體工程師要幹得好,習慣非常的重要。
貫徹忠實於解決問題的意志
- 聽起來這個問題不是技術問題而是政治問題
辦公室Always不會只有技術問題,如果在判斷技術讓人信服的情況下,能夠影響決定外部資源的角色,例如PM?或是老闆?總得要有人撬動資源吧?
我只能點出來,但具體怎麼做每個人的性格跟工作環境都不一樣,我大概很難講怎麼做。
2. 生出解決問題的Case的能力,一個一個嘗試
其實很多時候軟體工程師的解決問題就是用很多種Case一個一個去試,然後問題就會解了,反而是那種連試都沒有試的這種,問題就卡住了,所以與其說軟體工程師要有「解決問題的能力」,不如說要有能夠產生多種「解決問題的解方的能力」。
3. 政治凌駕專業的時候該怎麼辦
如果有一個PM對一個APP工程師說:「我們要做某A功能,你覺得要多久?」
等等,啊設計圖咧?啊所以某A功能要怎麼做?是用a方法做嗎?還是b方法做?還是c方法做?我現在要刻龜殼占卜要怎麼完成這個功能?
如果這個時候你還傻傻直接報:「哦,這個大概3小時吧?」
那加油,歡迎成為軟體占卜師。不,我應該說:「你是Super Junior?」
或者有一種情況是PM突然就跟你說:「我們今天要release」,然後不尊重你的估時應該怎麼辦?
我不能怎麼辦,直接越級處理。
給本科系與非本科系的軟體工程後輩
給本科系:
坦白說,你可以在大學四年的這個階段驕矜自滿你選了一個容易找到工作的科系,然後用那種理組嘴臉說著文組無用論
但搞不好你學了四年的東西,別人花半年到一年就幹掉你了,而且他或她的強悍,不是建立在高中選組上,而是在建立在「溝通的流暢度」還有「學習能力」甚至是「政治組織的能力」。理組不理組可能只是拿來說嘴的。
不過上述這些論述的邏輯是建立在純軟體,我想就資工理組而言,如果就學一些前端、後端,出去工作可能就找類似工作,老實說有點丟臉,應該做一點更底層的事情,做一些不愧對四年或六年正規資工訓練的工作。
給非本科系:
本來就有知識弱勢的轉職者,在踏進該領域的時候一定像入了深林的小白兔一樣慌張,但別擔心,你只是時間弱勢而已,當你調整好姿勢,學好第一個語言、真正的做好第一個可以大量泛用的物件時,你的成功就會是建立在「自學能力、溝通能力、解決問題的能力、工作習慣還有壓力調適」上了
尾聲
最後想講的是,職場槍林彈雨,視時務者為俊傑。文組理組有時候真的是求職假議題,也不希望「前端難民」這種諷刺語言變成理組只剩一張嘴的時候瘋狂在講的事情,都吃軟工一碗飯,大家互相幫忙、互相學習,度過這個在傳統教育體制下高中生可能在思辨能力不足就需要做長遠決策所造成的苦難。
有機會可以分享更多職涯、技術議題上的曾經面對的經驗,共同成長。
如果你認同我的想法,可以給我一點掌聲作為鼓勵:)