大家都好強喔!要一直學欸!要點什麼技能?我在哪個階段?

前言
還沒有進到軟體工程領域,到進到軟體工程領域,我自己有一點想法也許可以提供給不管正在哪個階段的朋友們好好捫心自問軟體工程現場的工作者,我是不是真的適合這樣的工作。
來聊聊我的背景
在 在好想工作室度過的210天:從軟體自學到軟體工作 這篇文章大概有提到我的背景,或許正如我不是一個本科系半路殺進軟體工程領域的人也許可以說說我遇到的難點。
那我簡短的帶過我自己的學歷:華語教學學士、公共事務碩士。
大概這樣,開始寫Code是我大學畢業從軍營裡出來後的那一陣子。那年我買了一本Python自己寫Code,那個時候真的什麼都不懂。後來碩士時期開了一堂大數據分析與機器學習的課程,我慶幸當時自己有這個資源,所以修了那堂課。
在那之後,碩士論文寫完了,自己問問自己想要幹嘛,好像比較想要當工程師欸,所以我就找了很多資源,最後進到好想工作室自學。
這樣的經歷不知道是不是適合跟大家分享些什麼,不過我想我還是盡可能地讓這篇文章適合下面我提到的對象:
- 如果你是高中畢業正要選入「資工」、「資管」的朋友,這篇文章可能是一個點提供自己檢視即將要踏入的挑戰。
- 如果你是非本科系畢業,正準備考慮要去到某個軟體工程轉職的補習班,我覺得這篇文章也許適合你,因為你在幾個月之後就會面對到真正的開發職場現實。
- 如果你已經是個工程師,想轉職成前端、後端、Whatever you wanted to be,這篇文章也許可以看一下。
1. 大家都好強
我曾經待過一間公司,那也是我人生第一間軟體開發公司,那時候我並不知道我其實進到一個很強的團隊裡,每個人可能都有已經有3年到10年甚至以上的經歷。那個時候我只有8個月的iOS開發經驗,所以那個時候我很沒有自信自己能夠解決問題。
我覺得自己做不到,所以基於這些沒有自信,很快的就在開發上敗下陣來,然後開發壓力在我離職後有一個月的時間沒有辦寫程式。那之後我重新開始,這次認識到真正的軟體職場是什麼。
在職涯諮商的時候,我曾經提到過這一段經歷,後來諮商員說:
「其實你已經幹掉一狗票人了欸,如果這個團隊這麼優秀,你還可以進去,你的面試主管也這麼優秀,那一定是他認為你的潛力非常高啊,他一定很有眼光。」
雖然我不知道這到底是不是雞湯,但我先當雞湯喝好了。
其實焦慮是每個工程師都會有的問題,只是大家都不講而已,或者大家選擇先不思考這件事情
後來觀察一段時間,我發現其實工程師在沒有交流的情況下,大家都應該會有焦慮,只是大家沒有說出來自己正在焦慮什麼,或許大家也已經習慣跟焦慮相處的情境下解決問題,所以8個月的資歷沒有習慣「不知道怎麼解決」、「解不了欸」這些情緒,其實好像也沒什麼大不了。
出了這個很強的團隊後,我發現真的還是有專案鳥爛的公司,就不說這個情形了。
所以,「大家都很強」這件事情要怎麼去面對它呢?
我覺得有三件事情要說,如果再給我一次,我會這樣告訴自己:
- 我只有八個月的經歷,所以不會、不知道、不懂是很正常的,但要有解決問題的態度。
- 強是累積出來的。
- 性格才是最重要的事情
第一點大概就是一個事實,也是現階段的狀態,基於這點,會用你的人大概也知道了你現階段可能會遇到的問題。
第二點呢?第二點就是你要適應這個團隊,你必須在適應工作的這段期間快速、有效率地跟上這個團隊的知識量。所以其實是快速累積,最後這個快速累積才是決定你強不強的關鍵。
第三點呢?
我覺得在開發的路上,性格跟習慣可以決定你交付出來的東西是不是具有可信度的,如果你要讓別人信任你交付出來的東西,你必須要有哪些特質呢?
我想這點大家可以自己想像。細緻、想得夠多、抗壓性高…etc
特質會讓你的強放大數百倍。
2. 要一直學欸
軟體工程要一直學習,這件事情決定了你以後想要去哪裡。這件事情就是這樣,至少有個好處是:「你的大腦不會老的這麼快。」
所以,要踏進這個領域可能就是要習慣「短時間快速學習的技巧」、「快速且精確的判斷」,如果你擔心你做一個東西就要花很久的時間,那要不你就克服自己會做很久,要怎麼讓它變快。要不你就是要放棄囉,直接說自己不適合,但相信我,不擅長的事情總要克服的。該來的事情是逃避不了的。
3. 要點什麼技能?
如果是一個要快速上工,成為Junior階段的工程師,大概就是做出一個有模有樣的作品。在Mobile領域也許就是至少一個的作品上架,後端領域就是某個作品完成上線,Front-End可能就是多一些網站的作品。
不過,如果你的階段已經不在Junior了,你可能就是要在你這個領域讓自己的交付(Delivery)是穩定的。所有的交付符合規格書,且在時間內完成,甚至是通過測試。
至於要點什麼技能,或許就是看自己的興趣,或是職涯的規劃了,有的人可能想要深化Mobile,那在現階段可能就是往SwiftUI走、還有Flutter的方向了解,或是你覺得我可以往後端走,這也是一件事情,但後端知識其實前端總是會碰到,所以知道後端怎麼運作,會讓前端工作的你更清楚的釐清,現階段是哪一端出現問題。是我?還是我後端的夥伴?還是我們要好好討論一下我們要怎麼進行資源整合。
但假若你是想要去求職網站找到一份工作,那還是看一下你點的技能在求職網站中是不是真正具有市場價值的。
4. 我在哪個階段?
雖然我不是很厲害的職涯分析師,但好像可以告訴你些什麼。
其實每個人遇到的職涯情形都不一樣,但同樣在工作的同時,最重要的向度就是「交付的品質」與「合作起來是不是好溝通」,這兩件事情可能會決定你在軟體工程師的職涯中,會不會越來越順利,或者你是不是資深工程師。
Junior?Middle?Senior?
進到軟體工程領域的時候,常常會聽到有人說這些詞其實是假議題,但你會在面試的時候聽到有的人會告訴你:「我們其實是想要找Senior」。通常這也是拒絕的潛台詞,也可能就是面試你的人告訴你你不夠強、有些資格不符合。
但,總得有些判斷的基準吧?
Junior的程度可能就是落在自己沒辦法自己解決問題以及沒辦法獨立完成某一端的任務,還需要其他人的協助才可以完成。如果你在這個領域你仍然有這樣的狀態,你可能就還是個Junior,有時候Junior也是一種心態,那是一種你覺得自己沒辦法的自信心缺乏。Junior也是一種很特別的狀態,其實說真的,很多人都有可能在某方面是Junior,只是我們可能不一定認為這個面向是Junior。
那把Junior的狀態說完,我們大概就可以知道其他層次的開發者應該具有哪樣子的特質。
結語:關於轉職,轉職後與轉職前的那些轉變
至於每個人在哪個階段,如果你是想要踏入軟體工程領域的高中、大學學生,我可能會告訴你的事情是:軟體工程可以訓練你拆解問題的能力、邏輯能力、或者是規劃資源、規劃工程是怎麼被完成的。如果你想要成為一名軟體工程師,進到這樣的職場與這個職場的難題共處,那這會是你之後可能的現況。
如果你或妳是一個出社會多年的社會人,可能要思考的面向就更廣了,第一個可能要思考的是你年不年輕、有沒有成本投入這個學習非常快速、學會新知識是常態的工作場域,還有有沒有決心把知識都弄懂。無論程式會動或是不會動,都要知道為什麼。啊,或許還有我不知道到底發生什麼事情,但我還是得要知道到底發生什麼事情的可能性。(尤其像是你連專案都開不了你還是得解決開不了到底問題是出在哪的奇葩問題。)
我不知道你在思考「我是不是應該寫程式」這個問題思考的向度到底深入到什麼地步,但學習軟體工程至今最吸引我的事情是「我是可以解決問題的正向感」、「軟體工程可以適應各式各樣的產業」、「軟體工程可能可以遠端工作」、「軟體工程很有機會可以帶我離開我現在的國家」
在2022年正式投入軟體職場的時候,也體會到軟體工程領域的入門門檻確實稍微拉高了一些,以往Mobile可能只要會一端就可以找到工作,現在可能需要Android、iOS都會,才有可能找到工作,或是公司可能會想要進到Flutter一次切兩種平台。取代有可能、也不一定會成為趨勢,但當你打開就業網站實際去看的時候,會發現就業市場的需求一直在改變。
實際上,我踏進Mobile領域學習開發,我的初衷是「我希望先學有畫面的東西」、「我自己有嘗試過寫一點程式」、「我希望踏入職場時,可以是一名工程師」
進到就業市場時,我的理念逐漸改變,因為我已經成為了軟體工程師,我現在需要再成為「更成熟的軟體工程師」、「成為能領導團隊走向正確方向的人」、「能成為可靠的夥伴」、「能夠提供別人意見的人」
保持學習、享受學習、享受困難。不想學的時候就別學、想學的時候學爆。在軟體工程的職場上,我成為一個這樣的人,我的能力就是替別人解決問些特定領域的問題、或是能替某些人成為解決問題的資源。
所以,寫程式真的不難,但保持好心情去學習解決問題、解決自己根本沒碰過的問題,這才會是成為一個軟體工程師應該面對的課題,也是長期應該在就業職場上面臨的挑戰。