年度交換禮物到啦啦!

一年一度的年度交換禮物盛會又來啦!今年是第八屆,從我進公司以來,我年年都送出個人意見強烈的「台灣零食精選大禮包」,為拿到禮物的人的年末假期增添些許異國風情、歡笑,和一點點的淚水。每年的老班底是廣受各國同事好評的「微熱山丘鳳梨酥」,今年進一步升級為「鳳梨酥烏龍茶禮盒」加「蜜糖脆糕」;此外還有綠乖乖、米乖乖、義美泡芙、金鴨炸魚皮、金鴨麻辣蟹、珍煮丹巧克球,因應疫情,再加碼小孩口罩與成人口罩—當然是彩色帶花紋的。

而我自身的禮物也在昨天送到了—是來自亞利桑那州的地方產品組合,加上精美手繪卡片!卡片上寫著:

我想要藉著這個機會送給你亞利桑那州的地方特色產品

可謂英雄所見略同。我邊含著仙人掌棒棒糖,喝著「沙漠深焙」咖啡,讀著卡片不住點頭。

看著同事畫的沙漠,不禁讓我回想起前年帶著全家人去大峽谷西緣的旅程。當時我家小子正迷曠野之息,踏進大峽谷的瞬間他覺得自己好像踏入了格魯德地區,興奮地到處奔跑攀爬,好像林克上身一樣。那裡,剛好也是亞利桑那州呢。

14年前,我們包圍埔頂派出所

最近令人心碎的一場學生命案,讓我回想起這件往事:14年前,上百名交大學生包圍了埔頂派出所,為警方對連續多起隨機行搶砍人事件置之不理發出怒吼。這件事好像從來沒上新聞,但我保證很多那個年代的交大人一定對這件事有印象;而我當時就在隊列之中,與大家魚貫進入派出所,竭盡所能維持理智。

當時是「紅杉軍」事件正白熱化的時候。據說因為全台紅杉軍四處竄起的關係,警方疲於奔命,因此許多不肖分子開始趁勢而起。我還記得一開始是街頭開始出現很多飆車族,但那畢竟就只是吵而已,大家就在NCTU版或是自己的系版上抱抱怨,也沒出過什麼大事。

但漸漸,情況愈來愈不對了。

這OK好的世界

噗啊啊啊啊啊啊啊啊,浮出水面啦!

本來發文頻率就不高,這回距上次發文竟創下新高兩個多月,是該浮出水面了。嗯?才兩個多月?總覺得好像已經過了一年一樣。在a8c當leader的日子,每天不只做好做滿,滿到溢出來是正常,一天做以前兩天的事,不知不覺間時間感都變得奇怪了。

工作壓力、經濟壓力、人父人夫人子等家族責任壓力、刻意無視的理想時不時在雲霧後叫喚。我只是整日埋頭苦幹,只是每天盡力爬過一個又一個的山頭;不是因為山在那裡,只是不知道目標在哪,想活下來而已。是什麼時候開始的呢?我已經忘記要停下來看看自己、看看周圍。或許我已經不知道身在何方、或許身邊的人已經受傷、又或許,身心已經意想不到的殘破?

這次能停下來,寫下這篇自我檢視的文章,是因為我的孩子。昨晚,他晚上洗澡前如平常一般吃了些洋芋片當宵夜,然後咚咚咚地上樓去洗澡了。我跟著上樓,卻發現他不在浴室,而是躲在床上。

他躲在棉被裡偷哭。

插旗LeadDev Live啦!

LeadDev是Reboot之外另一個我們公司常送人去的領導管理conference,今年因應疫情,也全面移師線上。今晚歹丸時間8點會登場的就是LeadDev Live,6個小時雙軌的內容看來相當精實,但全面免費!

登入專用Slack channel後看到主辦人在邀請大家插國旗,毫無懸念地插上第一支,感覺人生圓滿。

希望今晚不要邊聽邊睡,就更圓滿了。

在a8c做leader初期小感

自從4月初MarTech team首度以squad模式嘗試分層運行這個日漸壯大的團隊,不知不覺也4個月了。Squad和Team在a8c是很不同的概念:team就是傳統上我們認知中的團隊,而squad是針對某個專案組成的小組,通常是跨團隊甚至跨部門的,沒有特定的運作規章,在專案完成後就會做鳥獸散。

由於要組成新的team有許多正式流程要進行,當時我們也不太確定這樣對整個MarTech是否合適,因此就先以squad模式運行看看。而這項實驗也終於在上個月塵埃落定:MarTech正式分成兩個子團隊。順帶一提,我們這次用了變形金剛主題來命名,因為我丟銅板丟輸了,我所屬的團隊就成了狂派(Decepticons)。

WordPress堂堂邁入37%,但 … ?

就在這個月初,根據w3techs的資料,WordPress在整個web的CMS佔有率堂堂邁入37%,今天更邁入37.3%,可喜可樂,可喜可樂

但個人覺得上面這張圖真正值得注意的不是WordPress,而是打倒Joomla成為第二名的Shopify。

它既不是開源軟體,也不是general purpose CMS,作為一個單純電商的平台,它從去年7月的1.6%,竟然以急起直追之勢成長足足1.5倍打倒Joomla;而且按照這個速度,除非Shopify突然捲入什麼致命的政治醜聞,差距在幾年內恐怕只會愈拉愈大。

這一方面反映了個人化的電子商務市場之大,一方面反映了老掉牙的「do one thing and do one thing well」可以是很強大的:Shopify提供的功能恐怕還不到WordPress.com所有功能的1%,但他們的事業體是我們的好幾倍大。這也是為什麼我一有機會就在公司內喊著要砍東西而非一直加東西,但短時間內看來我們還是會往繼續加的路線走就是了。

Growth Hacking新手村學習中

自從轉入MarTech(marketing technology) team後,我們的核心任務為何、衡量成效的KPI為何等等一變再變,自Monica堂堂登入以來,最近整個團隊的定位終於逐漸塵埃落定:

Growth Hacking

義 … 義大利?

聽到的當下我不只是滿頭黑人問號而已,簡直是懷疑人生。我本來就不懂marketing了,現在居然還來個更潮的觀念,試圖把我已經被顛覆到無以復加的日常工作再翻個幾番。沒辦法,身為MarTech的squad lead之一早已沒了退路,只好領著大夥每週進行1~2小時類似讀書會的學習,嘗試一窺堂奧。

本篇以流水帳的方式做這週的個人學習紀錄,希望堅持一陣子後,終能看到隧道盡頭的一點光亮。

摳韋德-乃汀中的a8c小日子

自疫情爆發以來,摳韋德-乃汀(COVID-19)開始他的全球之旅算算也四個多月了(當然也有人說實際上已經6、7個月了),期間不但愛去餐廳併桌,還不管別人意願硬是要去當沙發客,可謂當代最不受歡迎的旅人。因為a8c打從出生就是遠端工作,相對於許多臨時啟動WFH而顯得有些生澀的公司,似乎比較不受影響?一半一半。就工作上來說,我們的合作模式確實不受影響,但對全球夥伴的生活衝擊是真真確確的。所幸我們的業務量就像許多網路服務公司一樣,不減反增。由於假日得面對疫情直接帶來的壓力,忙碌的工作日反倒變成許多人的避風港了。

紀念一下台灣這麼長時間零本土案例,這篇就以流水帳的形式統整一下,疫情期間a8c有些什麼對應政策吧。

a8c工作文化的原罪?

過去寫了這麼多在Automattic工作的好事,今天趁著在等程式碼發佈的空檔,來寫個數年來懸宕未解的問題:維護孤兒 —— 發佈之後,儘管使用者眾多,也永遠拿不到資源維護的專案。

會下這麼聳動的標題,是因為我覺得這是我們鬆散、高彈性、強調速度、根源於開源專案的工作文化的一體兩面。我們內部同時啟動的專案非常多,一個專案也通常短則1~2週,長則2~3月就發佈了,發佈之後呢?人就四散去做別的事情去了。在剛開始的一兩個月,要找到原班人馬處理後續維護還算可行,但隨著時間過去,要追溯愈來愈困難,優先序也逐漸受到新的專案擠壓;issue延宕的時間從本來可能2到3週,逐漸推進到2到3個月,當開始出現超過半年也沒人解的issue,我們便又多得到一個維護孤兒,可喜可樂、可喜可樂。以前曾讀過某篇文章論中國的高速經濟擴張弊病,裡面有一句神比喻:「步子邁太大,扯到蛋了」,差不多就像這種感覺吧?衝太快,掉好多包了。

一個很好的例子是calypso專案的自動化end-to-end測試。概念上,每當有一個PR被標上"needs review",我們的系統會自動在calypso.live上設立起一個docker container來跑該分枝的calypso,再用tests/e2e下分類為canary tests的自動測試去確認基本的正確性。如果進一步標上"needs e2e tests",那就會有好幾卡車的桌面版與行動版end-to-end測試對它這捏那拉、上沖下洗的,跑到PR吱吱叫。

matticbot會負責通知各PR的calypso.live專屬實體URL

這聽起來很美好,但有個問題:calypso.live相當不穩定,所以就會常常發生automated e2e tests不過,打開一看是calypso.live起始失敗:

這造成很多問題。開發人員常常被迫去檢查這個false negative,一開始大家還會想說重跑一下,久而久之大家就開始留下「此錯誤與本PR無關」等話,然後就忽視過去了。結果呢?曾經發生過有些不該忽視的也被忽視,造成好一段時間帳號註冊無法使用。由於一旦出錯,CircleCI會自動通知該repo的所有人,這類訊息看久了大家紛紛設inbox filter直接把它濾掉,試問這樣CI的意義還剩下多少?

這樣天天在用的東西,應該很快就會被修好吧?很遺憾,大概快一年了都還是這樣。像這樣即使很多人在用仍然成為維護孤兒的內部工具多到不行,今天舉calypso.live為例只是它會出現在公開的源碼庫中,比較方便講而已。

換個角度想,這也是為什麼一旦組織大起來,自幹前要三思 —— 長期維護成本難以估計,自己能投入多久亦未知。

日常片段 0x06

暮然回首,上次發文竟然已經是一個月前的事了,趕快浮出水面刷個存在。

自從前陣子轉到MarTech team,每天p2通知、github、phabricator、Slack等等更新訊息如海嘯般襲來。以前偶爾還可以偷懶無視,專心去寫我的code,但自從接了MarTech squad lead的位子(squad和team在a8c是不同的概念,之後有機會再談),等同把最後的退路封了,我必須站在第一線面對。但,面對這樣海量的訊息,我就好像嘴上叼著一個漏斗的人,異想天開地妄想把如此巨大的水體收納歸整為可以啜飲的涓涓細流,任由被沖散之餘,偶爾能接入少少幾許,在無法自主的翻騰中為自己的微小勝利喝采。

今天開完會,看著隨著時間流逝像會自己增生般的待辦事項,再回頭看看一直丟在那邊長蟲的學習計畫以及一堆沒能整理發佈的部落格文章草稿,不禁長嘆一口氣。這項挑戰毋庸置疑是我想要的,學習a8c的領導文化一直是我在這裡工作的目標,現在我終於站在起跑線上了,但挑戰的強度遠比我想像的嚴峻。我以前常和人聊到在a8c當工程師是很爽的,leader們不知做了什麼魔法,我們的小日子完全沒有一般企業的狗屁倒灶事情要擔心,能專心把自己工作做到最好,享受專求工藝完美的快感。我現在知道魔法之一是什麼了:擋子彈。其他魔法我恐怕還沒資格說什麼,因為這層功夫不到,根本活不到學下一招。現在只能屁股夾緊,告訴自己:撐過就是你的。

括約肌,好像又強了一點點。