人生第一次Coding在大學,然後就一直做到現在,剛好十年。

坦白說,還有很大的進步空間。但卻總是覺得幸運

前途問題

遇上不同的人,對「不理想的現實」感到很多的不滿。工作時間長,自己做出來的東西明明很不錯,卻還面對無理客戶和上司的要求;甚至有朋友直言做Software Engineer是低下階層,總是渴望不用理會Coding而能升上管理位置。

這正是幸運的一點:我總是能找到Coding給我的樂趣,每天都總是有新的想法做法,想嘗試挑戰以往自己的做法,每天有新樂趣便成。(也太簡單了吧?)

現在卻是公司想請一個好的工程師也難的世代哈哈。在供不應求之下算是吃香。也是幸運的一種吧。

有朋友指再過十年,你的競爭力比畢業生低,還從事工程師嗎?我也不懂如何答。我沒有很大的意欲升上管理人員,或者自己一直就是尋找藉口,逃避上位避開責任的問題?

學習問題

出來第一份工作,我發現自己跟老闆Coding的差距,做好Coding其實Hard skills很重要,有感自己永遠都追不上的樣子。有幸就是他,遇上了讓我感興趣的Lean Startup書。或者就是一切的開端。是對書有興趣的開端。之後也一直買了很多書。

到現在則是放眼世界,其實還有一段很長的路學習Hard skills Soft skills。他們同樣重要,但最重要的莫過於學懂學習的方法。

我最怕重覆做著相同的事十年,然後告訴別人:喂我有十年經驗,但實際經驗只得一年。

幸運的是自己有很多機會嘗試,接觸到很多Project吸收經驗,甚至學習一種新技能新體驗,刺激一下創意思維。亦有幸認識到一班做事認真的同事朋友,有些時候還在熱列討論Technical問題,可以談得很起勁。

到現在我還是會讓自己「回到過去」,思考面對同樣的問題,會否有更好的做法。在離開舒適圈與不舒服的中間,找到理想的學習速度就不錯了。

面對長時間工作

雖然很想持續學習,但我也有長時間工作的時間。

第一間長時間工作的公司,同事們都十一點回寫字樓,兩三點回家。我都有OT,但幸運的是:那時上司有牙力,讓很多同Team的同事有空間,所以除了第一個月,之後的工作算是輕鬆。我自制了不用OT的時間,好讓我回家都繼續學習。

我發現有些 OT 其實能夠避免,有些則不能:不論是因為能力不足所以需要更多學習空間,或是一個不可能追趕的時間表。也許是我有正面面對OT的經驗,及後有兩間工作過的而又誇張的OT,我想算是處理得不過不失吧。

但暫時還是有一種很強烈的感覺:要做得好,就要休息足夠。

我樂見之前參與的某個Revamp中,有機會一展所長,同時堅持休息時間,有不少好方法,都是第二天早上就忽發奇想。寫的Code真的比以前靚仔實正。離開後也知道維護得很容易,擴展也是,所以很感恩有這機會打好一些根基,現在才有感自己是Senior的樣子。

工程師不是生產機器,生產過程是充滿人性的設計與執行。而好設計,需要休息,腦子才有點子。能夠脫離長時間工作的惡性循環,已經是正向循環。

溝通問題

Soft skills 則是很有趣。

一直也很少說閒話,卻發現要說的話也不是不能,不過做出來還是有點突兀。

我不懂修飾不夠圓滑,給人一種不懂溝通的感覺。有三間合作過的公司,(碰巧都是Senior)對我的溝通能力卻滿有懷疑。但更有趣的是:現在上班的同事問我是否一個「文人」 — — 他認為我與其他工程師有一種不同的感覺,直言覺得我的詞彙我的談吐很不錯。

我想:溝通要圓滑,要讓別人明白你的意見,看來也需要時間磨合和技巧。

最近總是想到一句名言:「你遇到的人都有其困難」。所以在嘗試體諒。

不理想的現實

還有買樓、家庭...其實都不太有問題哈。但環境不理想是無可避免。人總是要尋找在不理想的環境中生活吧。Thanks 子華。

最後

慢慢來比較快。再來多個十年吧。


三個月四天工作有感(一年前了哈哈)

突如其來的想法,太多idea想實行,卻偏偏懶的運用調劑枯燥生活的週末。為何不試試四天工作?

如何開口

我開口的方式很直接:向公司提出review 安排,順便提出想法。

剛巧接近一年的review,時機尚算合適,順便可以討論薪資安排。我指出我個人的效率,四天工作就做了別人五天工作的事;加上有想學的東西(Machine Learning),所以問公司可否安排四天工作,或許這個安排能給予公司回報也說不定。

(謎之聲:或許只是你不夠膽開口。或許你總是怕你的上司會問你為何提出這些不可能的事。或許同事會問到,為何你會有特權。)

但當時沒有亂想以上的東西,很大膽便是。

實行四天工作

其實和平日工作方式一樣。碰巧公司重要大事都是星期一多,所以需要與別人交流溝通的,都安排在星期一。這小小安排卻更能提高我做事的效率:

一、集中星期二三四全力工作,更有節奏做事

集中力對軟體工程師來說很重要,不用多說。當我與團隊互相安排星期一主力溝通,便有三日可以集中工作。遇上問題,星期二還有時間可以釐清問題。

因為四天做五天的事,工作上很少再思考其他無謂的事。意外的提昇了點集中力哈哈。

節奏的培養也很重要。個人感覺,因為四天的安排好像和我合作的隊友都要有些特定安排,所以每天checkin,星期一主力溝通等都像是上課時間表般安排好。雖然沒有像scrum那樣嚴謹,但某程度上我更容易安排集中時間,不被雜項事情打擾。

二、處理最重要的事

四天做五天工作,自然就將最重要的東西,迫使要放到最前處理。

不只是我一個人而己,團隊也需要了解何為重要的事情,然後交托到我的手裏。

有點20/80的感覺:將最重要的事放在星期一二處理好,不就是提升效率的方式麼?

三、身體健康

少了一天工作,壓力能有三天舒緩是很不同的感受。本身就是愛將工作帶回家的體質,卻因為多了一天緩衝過後,有更好的睡眠質素和時間。過海交通的壓力也少了點。

多了一天時間,所以在家煮煮自己想吃的早餐午餐,很不錯。

另,在星期三在的時候,會感覺到,過多一天就放假了,感覺衝過一週的力量比之前更大。

星期一沒有太多Monday mood, 因為都好好休息了三天了哈哈。

四、完成課程

完成了Coursera Machine Learning course!

後記

多了時間,也就多了亂想的時間。遇上了些 Quarter Life Crisis?反而選擇了離去而不繼續為這公司工作。

人生啊,有時就需要些高低起伏便是。


看了第一集 Monday Morning,內容主要關於一班醫生做術後檢討。第一集共兩次的檢討會中,都是一大班院內醫生,加上一位主持人負責。主持人會選中某一事故,然後叫主診醫生上台,接受主持人一步步的質問。

這一集中,讓我最深刻的,莫過於第二論的檢討會。沒有血肉模糊的鏡頭,卻彷彿讓人窒息。主要是一個小孩位於腦中的惡性腫瘤,因為主診醫生忘記了做兩件事:

  1. 重大手術應該詢問第二意見
  2. 未做好背景調查,了解因為單親家庭而未能即時聯絡上的,病人的父親的病歷史

結果病人就死了。

最後主持人單刀直入,指出主診醫生的傲慢、自負,忘記了這些基本步驟

我想,這種回顧對醫生進步很有幫助,但做法實在讓人抖不過氣,很大壓力。(當然,不能忽略,電影節目為了增加吸引力,而設定這種回顧的方法哈哈。)

最近公司每天的工作也是抖不過氣。

隨著死線接近,越近就越挑戰著半年以來,堅持之下的固定模式:每天Refactoring,不論大小。每次都作一點兒嘗試,去做好每一個功能,不論大小。

很高興在兩次的 Milestone中,都發揮著平日Clean Code的優勢:臨時在Demo前要求加上的新功能,都能夠加,並以一種快靚正的方式,嚇到了不少同事。(本來不需要OT啊不過團隊都加班我不用又好像說不過去…?)

可惜的是,如果沒有同事們的通力合作,隨著編程時間越久,就越覺得阻止不了爛Code的出現。或許事情未變太壞,「針唔拮到肉,都係唔知痛」。我覺得編程與醫生有兩種相同之處:

  1. 基本步驟
  2. 沒有醫生未犯過錯

正常情況下,沒有外科醫生不洗手就動手術的。

正如沒有經過時間去思考如何擴充系統,沒有了解清楚就設計了一個過度設計結構,沒有嘗試了解清楚問題就亂去訂解決辦法,只會為未來帶來很多不必要的問題,在時間和人手緊拙的情況下,就更能放大這些,本身看起來很小的「小」問題。

我想,基本步驟就是需要每一個位置多一份「小心翼翼」。技術上可以引入Unit Testing, Integration Testing, TDD, BDD, 慢慢做小心做;Code Review,每次Sprint收窄範圍,釐清問題與收貨條件,團隊隊員清楚要實作的功能後,即使在死線之前,也不用太著急;問題與方法分開思考,越懂思考別人提出的想法,背後想解決的問題,總會有一些更容易解決的辦法;遏止不斷渴望增加功能的衝動,反思每個功能背後的重要性;越多你不需要做的事,就越能將時間,放在最重要的事情上。

團隊看來太少時間回顧一直發生的問題,又很少投放時間於「重要但不急」上,所以往往到死線前,總是心急如焚吧。

犯錯是不能避免,但降低犯錯後帶來的後果,其實一樣重要。

我想,我也要學會謙卑,忽略了學習的機會。就正如那位,犯了一次錯的醫生一樣。

About

Polar bear Journal

Agile lover. Chinese Calligraphy lover. Brain hacker. https://polarbearjournal.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store