跳到主要內容

轉行軟體工程師一週年感言


我從 2018年底開始在家自學寫程式、啟程我從技術寫作員轉行軟體工程師的旅程,但我擁有全職、正職軟體工程師身分,在這個月才剛滿一年,所以我整理了這一年來的三個感言:


1. 最要感謝的人:我的老公

很多人問我轉行的經驗我都不敢隨便給意見,因為這些人可能住在亞洲、住在歐洲;我都跟他們說,我只了解矽谷的轉行環境,因為我就住在這裡。而我之所以理解矽谷就業市場對於半路出家軟體工程師的接受度、機會的多寡、面試的難度,這都要感謝我老公比我早四年轉行、走在我前面,為我開拓道路。因為他走過一遭了、也成功了,所以我才能相信半路出家轉行是一件可行的事情;除此之外我親眼目睹他在過程中遇到的挫折、下的功夫、使用的方法... 我非刻意地耳濡目染得到的這些資訊,真的是我最寶貴的資源。

我老公比我早轉行的那四年期間,我從來沒有認真想過要跟他一樣。我心想,家裡一個工程師也就夠了。但他還是在無形間、非刻意地影響了我。這個影響力是遠遠超過四年的。早在我們九年前住馬里蘭的時候,我就看著他每天比我早一個小時起床,坐在客廳兩人座的餐桌上讀厚厚的程式語言書籍。那時我都覺得他是神經病,幹嘛不多睡點覺。連我媽媽來玩看到都說「Brian 拜託了,可以不要那麼認真嗎?」

印象最深刻的是他在投了幾百封履歷都沒有結果的失業期間,某天他在一張白紙上寫下了五年計畫,貼在我們的房間裡(那時候我們跟其他室友共住一間公寓)。那五年計畫的終端是他要去 Google 當軟體工程師。我看完嘆了一口氣,摸了摸他的頭說「沒有關係啦,就算你一直找不到工作,我還是會愛你。」對我來說,他那個計畫真的是天方夜譚,因為那時的他剛從環境科學碩士畢業,完全不會寫程式,我真的不知道這個計畫要怎麼走到 Google 這個結果。

他寫下計畫的五年過後他沒有進 Google,但他去了 Facebook,我們常笑說也差不多啦!我時常想起那張貼在我們牆上的白紙,還是感到不可思議;我在我老公身上第一次看到有人會認真按照自己設立的五年計劃執行。

我以前以為我比我老公聰明,因為他總是花比我更多的時間在讀書、傻傻地在用功。但現在當我在工作上程式語言寫不出來、卡住的時候,我卻需要跟他求救。現在我才懂,他的思路、邏輯以及跳脫框架思考能力真的是比我想象中地強很多,但他仍然非常努力。聰明,還要加上努力才有用。

這麼好的楷模讓我學習;我最感謝的就是我老公


2. 盡信書則不如無書

很多人問我轉行的時候幾歲?這些讀者跟我說他們自己的年紀,然後問「這樣來得及嗎?」

我不會洩漏自己的年紀的。一方面,這是我的秘密XD 另一方面,如果我轉行時的年紀比你現在小,你就要宣判自己「來不及了」、放棄轉行計畫嗎?

我的轉行之路有許多劣勢:我那時小孩剛出生、我沒有時間去參加 coding bootcamp、沒有時間參加 networking 的活動、我離開學校多年都沒有擔任過工程師、我沒有在美國讀過工程學位。如果就以上這些條件而言,你可能覺得自己跟我比起來充滿希望。「如果她都可以我一定也行」,你可以這般想。

但我也有很多轉行的優勢:我擁有(土木)工程的學士和碩士文憑,我老公走在我前面已經轉行成功了,然後我人已經在矽谷、有這裏的工作經驗。就以上這些條件看來,你可能又可以找出為何自己無法轉行的藉口:例如你沒有讀過理工科、沒有在美國工作過,等等。

我在轉行期間也是一天到晚參考別人轉行成功的案例。每次面試失敗,我就想找出自己為何跟那些成功的人不同?一定是因為他們沒有小孩;一定是因為他們住在別州,那裡比較缺軟體工程師;一定是因為他早我一年轉行,那時候景氣比較好...

比來比去是比不完的。不管跟誰做比較,我都有我的優勢和我的劣勢。有別人的故事給我參考很好,但如果我將別人的成功方法當成唯一的範本,當成「如果我沒有所有條件都跟那個人一樣我就無法成功」的藉口,那真的是盡信書則不如無書。


3. 找到自己的利基 (niche)

關於自己的 niche,我好朋友的 blog 海洋學家的母體力學 這麼說過:

海洋生態必考題 plankton paradox:海洋資源那麼有限浮游動物這麼多,都擠在同一個空間,為什麼沒有彼此競爭到每個食物鏈位階都只剩下一種?答案就是各有不同的優勢,各佔不同 niche (生態棲位)

人生何嘗不是如此, 資源那麼有限,競爭那麼激烈,只找到熱情所還不夠,要找到自己的位置。

我是一個由理工科(土木工程)轉文(創意寫作)後又轉理工(軟體工程)的人,所以我對於「找到自己的位置」這件事有很深的感觸。

我從小做智力測驗,就是只有兩個特別強的項目:語言和數學,而我的語言能力略優於數學。空間概念、機械推理我都是吊車尾的。

語言和數學,正好都是我很喜歡的領域,因此我這一生雖然看似不停轉行,但我其實是一直在語文領域及數理領域摸索、微調我的「生態棲位」。要找到自己確切的定位真的很不容易,畢竟這世界上人口那麼多,我們每個人都是在夾縫中求生存,求那我們勉強算是能暫時性「不可取代」的生存空間。我人生有幾個階段感受到自己剛好卡到了游刃有餘的生態棲位,第一個是我在台灣讀土木系碩士的時候:在理工科系中,我的英文能力非常被看重,因此我幾乎可以完全靠幫別人做學術期刊翻譯、寫稿這些對他人而言較困難、對我而言卻相對輕鬆的差事交換到在理工科系中不錯的地位。

另一次找到適合我的生態棲位,就是我在矽谷當 technical writer 時。通常科技公司對於 technical writer 的要求就是會寫作,又有一些理工背景,而這些條件正好是為我量身定制的。我在特斯拉汽車工廠擔任 technical writer 的三年期間,我感受到我的飯碗有一定的牢靠度,因為通常工程師們非常討厭寫技術文件,因此不太有人有興趣跟我搶我的工作。

現在當軟體工程師,我則感受到要靠純理工能力找到生存空間,對我而言是比較辛苦的。但當我自願幫我們要推到中國的產品做翻譯、為我們在做的 app 製作使用者說明影片時,這些我做起來相對輕鬆的事卻可以比我辛苦地寫 code 換來更高的讚揚和滿意度。

這世界上沒有任何人是真正不可被取代的;我們都要居安思危、隨著環境變遷不斷調整自己的生態棲位才不會被大自然淘汰。尋求自己能生存的夾縫就像電影中常拍攝的監獄場景:某個白面書生被抓去關,他如果靠拳頭硬拼一定會被打死的;但如果他能找到別人需要他的地方,例如教別人寫字、替別人寫家書,那他或許可以安然無恙地熬個幾年,搞不好還會不時有人送他一些點心、幾根菸。

但同時他又得為未來做點準備,隨時增加自己口袋中的籌碼;這樣等到又有另一位白面書生入獄時,他才能啟動別的生存策略。


留言

  1. 謝謝妳的文章分享,偶然逛到您的部落格,對你分享的一些經歷很有感觸,我本身也是非理工相關的科系,靠著英文還可以的技能在做傳產的專案管理。
    但還是苦無一技之長,轉職工程師是我參考了很多人經驗後,認為應該可行的方向,每次遇到瓶頸,都會上來看您的文章激勵自己,但最近又在思考,是不是每個人都適合工程師這個角色,坦白說每次遇到bug解2、3天都解不出來,都會有種我到底在幹嘛,幹嘛要浪費人生、浪費生命,在解決這種問題身上,很想要放棄,但眼下也沒有其他道路可以選擇,我還不確定自己想成為什麼樣的人,適合什麼樣的位置,但我會像您學習,一直不斷的尋找。

    回覆刪除
  2. 謝謝你的文章,2020 年偶然看到你轉職的文章,我當時是中斷職場超過五年的全職媽媽,受到你的鼓舞開始在網路上看教學影片學習寫程式,現在也轉職前端一年了,真心感謝你的分享。

    回覆刪除

張貼留言

這個網誌中的熱門文章

什麼是 Assertiveness? 你容易被情感勒索嗎?

來到美國後我才第一次聽到 assertive 這個單字。美國人將 assertiveness 視為很高的美德,因為那代表一個人具備足夠的自信、溝通技巧、人際成熟度,以至於能夠堅定、清楚地表達自己想要的與不想要的,卻不會因此傷害他人或顯得傲慢、無禮或威脅他人。 Psychology Today  是這樣定義 assertiveness 的: “Assertiveness is a social skill that relies heavily on effective communication while simultaneously respecting the thoughts and wishes of others. People who are assertive clearly and respectfully communicate their wants, needs, positions, and boundaries to others.  Individuals who are high in assertiveness don't shy away from defending their points of view or goals, or from trying to influence others to see their side. They are open to both compliments and constructive criticism. ” (「Assertiveness 是一種社交技能,依靠的是在有效溝通的同時尊重他人的想法及需求。Assertive 的人能清楚且尊重他人地說明自己的需求、渴望、處境以及社交界線。擁有 assertive 特質的人會積極地說服他人了解自己的觀點,也積極地爭取、辯護自己的想法。他們對於讚美及有建設性地批評同樣地歡迎。」) 美國人如此看重、欣賞的 assertiveness 這個單字在中文卻似乎沒有相對應的翻譯。Google translate 將 assertive 翻成「斷言的、斷定的、過分自信的」;我覺得這些翻譯充滿負面含義且非常不正確。 生長在台灣的我,認為台灣確實沒有 assertiveness 的文化。我觀察到的台灣人,普遍很少直接說出自己想要什麼;如果說出來,

常聽人說「現在人人都要學會 coding」-- 但到底是要學什麼?從何開始?去哪裡學?

最近換工作,要學很多以前我沒用過的程式語言技術,像是 TypeScript, GraphQL, Relay 等等。於是我上網找了很多免費的、付費的教學影片,像是在 YouTube、 Udemy、PluralSight 等等平台。 但很多教學影片從製作至今已經過了兩三年甚至五六年。在軟體的世界,過一年就人事已非了,何況是現在去看 2016年的教學說明。許多 web packages 的版本在六年間已經從 version 5.x 跳到 18.x 之類的... 因此即便那個教學影片再怎樣的手把手教學都沒有用。資訊已經完全過時。 軟體的世界就是這樣,技術日新月異。圖書館都不願意收舊的 coding 教科書,因為過時的資訊難以幫助到人。 軟體的世界就是這樣,技術日新月異。圖書館都不願意收舊的 coding 教科書,因為過時的資訊難以幫助到人。 許多人常萌生要自學 coding的念頭,但因為不得其門而入,一不小心熱情就會澆熄。身為一個自學 coding轉行當軟體工程師的人,我理解這種感覺。我們身在一個資訊爆炸的時代,但資訊量太大,找到對自己有用的教學資源其實就是自學最困難的一步。 很多人想到要學 coding,會想「課程會不會很貴?」「會不會很難?」「會不會需要花很久的時間?」其實這些問題都問錯了。自學 Coding是個知難行易的學問;如果知道怎麼找自學的資源,不用花多少錢甚至免費就能達成。如果找到對症下藥、適合自己的資源,認真跟著看跟著做也不會難上手。但如何找到那個沒有過時、資訊正確又適合自己的課程?很多人花了大把時間、大把金錢就卡在這個第一步。 我舉一個生活化的例子你就懂了。Ikea 的傢俱你說難組嗎?其實一點都不難,但先決條件是 Ikea的說明文件非常好懂、資訊正確,而 Ikea 家具的品管做得不錯,大部分我們買回家的包裝裡頭零件都正確,因此照著說明書一步一步完成不難還非常有成就感。 但我們也都買過很爛的家具組:說明書沒人看得懂、裡頭的零件缺一大堆,甚至連家具的裁切、材料本身都有問題,大小根本組不起來。不然就是說明書過時了:零件已經改版本了,但說明書沒有更新。如果組一個家具要一直打給客服補貨、換貨,而且甚至問題在哪裡我們都推敲不出來、客服那頭沒人回答我們問題... 我們一定非常洩氣,很快就放棄組家具了。我們一定心想「組家具太難了!」 以網頁開發這塊的 coding來說,

是不是要「很聰明」、「數學很好」才能寫 code?

在我去年開始自學寫程式之前,我常常問是軟體工程師的朋友:「寫 code 很難吧?感覺超難懂。」在我心目中,寫 code 跟「數學能力」最有關係。 有趣的是,凡軟體工程師給我的回答,幾乎都一樣:「不會呀。學寫 code 就像學英文、日文那樣,就是一個語言。」 但我不是很能夠被這個答案說服,因為我以往跟程式語言的歷史告訴我,寫 code 是很困難的。我從高一第一次接觸 C++,到後來大一上土木工程系的必修課也是修 C++,經驗都蠻慘的,因此我就宣判自己沒有寫程式語言的天份。直到去年我從零開始再次透過線上課程自學寫 code,我才終於體會朋友們說的「學 code 就像學任何一個異國語言一樣」這句話的意思。 就從我高一的時候,第一次接觸程式語言的故事說起吧!那時是我學校的物理老師鼓勵我學程式語言的。他以完全免費的方式輔導我在假日期間學 C++,大概也是看到我對理工科有興趣,想說我可以自學寫一些小程式、搞不好還能參加什麼比賽之類的。於是他給我開了書單,讓我買了兩大本比字典還厚的 C、C++ 教學工具書(這種書現在還存在嗎?)來看,並且給我出功課,要我自己研究怎麼做出一些程式。 但朽木如我,一直碰壁,步步都感到挫折。那時的我,還不知道怎麼「自己找答案」,因此我心中一直期待老師可以好好示範他到底要我做什麼,因為我連他出的功課的題目、他到底想要我做些什麼我都不了解,也不知道從何問起。現在回想起來,老師心中一定是想:「這有什麼難的?自己看書,看不懂去找答案,不就這樣嗎?實際做做看、做不出來用力想直到做出來為止,難道還要手把手教學嗎?」但要知道那時候的我,雖然很喜歡數學、物理,理工能力不差,但「電腦」對我而言,就是一個玩接龍和踩地雷的工具,因此我連怎麼按照書上的說明去設定寫程式的環境都搞不清楚。 總之,第一次學寫程式的經驗,就在我心中無限多個黑人問號中無疾而終。直到上了大一又再次遇到 C++。 這次我以為我可以學得比較好,畢竟這是我第二次跟 C++ 碰面了。我們用的課本,再次是那種厚得令我第一天就把它切割成三分的工具書。但豈知第一堂課老師也就講完差不多三分之一本課本,一下就上完一、兩百頁的進度。 「等等啊!」我心中吶喊。第一堂課我們就從 Hello World 上到 for loop,而且是雙層的 for loop, 因為要用程式語言畫出這個形狀: