跳到主要內容

談長期謀略 -- 由工程師日常及抗疫生活說起




年初,老闆問我今年為自己設定了什麼目標?

我說,我今年為自己設立的主題可以用一個字做代表,那就是 strategy。為什麼這麼說呢?因為開始當軟體工程師之後,我發覺 strategy 的重要性,這也改變了我看待日常生活中許多事情的方式。

好比說,上個月灣區的一陣強風來襲,我家的圍牆被吹倒了。若是以前,遇到這種事情我會很慌張,因為修理圍牆是一筆大開銷,還要考慮找尋維修工人、監工及與鄰居溝通的時間成本。但當了工程師以後,我每天的工作內容都是在解決問題,而很多的問題都是我沒有遇過或者不知道怎麼解決的。這時候慌張是沒有用的,亂拳出擊也只會把問題搞得更複雜而已。這時的當務之急反而是是先停下腳步分析問題、檢視問題的嚴重性並且擬出一個步驟一個步驟的解題方法。這就像以前算數學題目一樣:再複雜的問題,都可以透過將問題拆解,變成小而能夠掌握的子項目。

長期謀略應該算是我從小到大非常缺乏的一種技能。我很不會下象棋或者圍棋,因為我不太會也沒有耐心去思考三個步驟後的各種可能發展。上一篇文章我談到 Just Do It--勇往直前,這種「初生之犢不畏虎」的精神反而是我比較擅長的事情,因為我內心一直有一種聲音催促著我,跟我說「再不出手就來不及了!」所以很多事情我不敢想得太仔細,反正先做再說。

我自認為我臨機應變的能力不錯,但活到了一個年紀,我發現按兵不動、長期謀略與快刀斬亂麻同等重要。我有一位很愛寫記事本的朋友,每年、每個月、每天的計畫都寫得整整齊齊。我很不喜歡做這種事情,但我開始慢慢向她看齊。就如她所言:盡人事聽天命;先設好長期目標,如果到時候計劃趕不上變化時,那再改變計畫就對了。

不喜歡計畫的個性,大概跟我的家庭教育有關。我的父母是在二十歲的時候移民到美國的,而我小學的時候,我們又搬回台灣。來自一個移民家庭的我,從小就學會了經常性的搬家及變動是一件很正常的事情:我的父母親號稱搬過幾十次的家,而就連我和我先生,也曾經在搬來舊金山灣區的一年內搬了八次家。當生活有許多變動時,你只想把所有家當都留在皮箱裡,怎麼會有漆牆、買畫、佈置家裡的慾望呢?所以我到現在還是沒有買過一副畫掛在家裏過。

這樣的心情,再次地反應在現在整個世界都籠罩在 COVID-19 的日常生活中。現在的我非常難去思考年底要去那裡玩或者是否該投資什麼基金這種事情。因為明天會怎麼樣我都不知道,我要怎麼思考年底甚至幾年後的事情?!就連要趁在家工作的空閒時間將家裏整理一下這種事情我都很難靜下心來做,因為內心總有一個聲音警告著我:搞不好到時工作丟了、我們全家就得搬到比較小的家來節省開銷,現在何必花心思整理這個或許以後就會不見了的家?

但生活中的許多事情還是在在地提醒我,長期謀略的重要性。好比說,矽谷的軟體工程師面試時都會被考在白板上解題。而解題過程最忌諱的一件事,就是沒有先溝通好解題策略就直接下手。事實上,面試官想考驗的,正是你遇到問題時,如何分析、拆解問題的能力,因此你必須得透過提問定義好問題範疇、擬出解題的步驟,然後才是最輕鬆的最後一個步驟:開始動手寫 code。

而現在當軟體工程師的日常生活中,我也常常發現組員沒有經過深思熟慮或討論不足的情況下直接開始著手寫 code,真的只是徒增冤枉路而已。與其最後花兩倍、三倍的時間一直回頭重做、補洞,不如一開始先多花一點的時間想清楚各種可能的風險、例外,然後策劃好動工的順序、分配好每個人的負責項目、定義溝通好一致的目標,這樣才是最有效率而可能一次到位的做事方法。

一個國家如何控制疫情,也是非常講求策略。眼看人類跟這支病毒勢必得長期抗戰,但各國政府卻也是措手不及,沒有人真的知道如何應對、更遑論作戰計畫了。再加上國與國之間缺乏合作與信任、無法共同擬定戰略,是否會造成一個區域的病情控制成功、卻被其他地區拖垮的情況不停地重複發生而拉長打這場戰爭所需要的時間?

年輕的時候,我的座右銘是「世界上唯一不變的事情就是改變」,於是我認為長期策略不重要,因為計畫趕不上變化。但現在我的理解是,就算世界一直變化,生活中我們還是得訂定一些計畫,不然我們難道要像無頭蒼蠅一樣漫無目的地亂竄渡過一生嗎?就算是混亂如疫情當前的現今世界、就算每天有無止盡突如其來的問題要解決、就算每天上班都只是在救火解 bug 沒有時間好好開發新軟體,我們還是得在生活中定義一個方向、朝著那裏走。

我們現在就像走在寒冬的永夜裡;我們的直覺可能是什麼都不做,祈求天明的到來。但即使是現在,我們還是得朝著某個方向前進,邊走邊按照情況改變計畫方針。不然等到春天花開了的時候,其他人都已經抵達他們心目中的目的地可以開始享受長途跋涉的果實了,而沒有做長遠策略思考的人,就還是停留在原地。

by Vanessa Wang    歡迎支持我的臉書專頁:【工程師作家的轉行人生


延伸閱讀:
Just do it(放手嘗試吧,你已經準備好了) 兩本書探討「你認為的天經地義並非理所當然」

留言

這個網誌中的熱門文章

什麼是 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 的文化。我觀察到的台灣人,普遍很少直接說出自己想要什麼;如果說出來,

花九個月,靠自學轉行軟體工程師 -- 我所用的網路資源

by Vanessa Wang       歡迎支持我的臉書專頁:【 工程師作家的轉行人生 】 因為身邊有許多半路出家的軟體工程師,包含我老公,我一直抱持著或許某天我也要轉行當軟體工程師的想法。但我到了成為媽媽、小孩快一歲的時候,我才開始自學寫程式。 從 2018年底開始,我花了九個月的時間自學寫程式,並於 2019年七月成功轉行、找到了在加州矽谷全職軟體工程師(front-end web development)的工作。我沒有參加 bootcamp,就是在網路上找資源、自修。我是台大土木工程碩士畢業,後來到美國讀創意寫作碩士。成為軟體工程師之前,我沒有在職場上當過工程師,以前主要的工作以當 technical writer 寫技術文件為主。( 更多關於我轉職的動機、轉職前的履歷 ) 這篇想整理一下我自學期間用過的教材、工具,但這些都僅供參考,畢竟每個人的狀況、目標都不一樣。我始終相信「盡信書不如無書」。我這九個月中學到最重要的一件事就是凡事要有自己的想法、相信自己。像我這樣的文章網路上有很多,每個人用的方法都不太一樣。參考別人走過的道路很好,但更重要的是規劃最適合自己的一條路,然後自信地走下去。 以下就是轉行的路上,對我最有用的網路資源、工具: 一篇 Medium 上的文章 by Andrei Neagoie  這篇文章叫做  Learn to code in less than 5 months, get hired, and have fun along the way 這是我還在當 technical writer 時,某天上班無聊隨便 google 找到的。那時候還不太確定自己要不要轉行軟體工程,所以常常在網路上參考他人的經驗。我不時地都會回來看這篇文章,這篇文章可以說是貫徹我自學期間的一個中心思想。我很欣賞他的理念,尤其是以下這段話: “I spent the first month avoiding any tutorials or books. Instead, I spent this month looking at the best way for me to learn and get hired. I studied other people’s experiences, looke

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

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