Evans Ye

這兩天聽到一集podcast,有感而發:

矽谷為什麼?EP116 — S&P500上市公司高階主管的三階段管理哲學 挑戰美國職場天花板 | 專訪Etsy資訊長 謝居呈

內容講的都是比較典型的美式管理風格,我個人認為也是相對主流的風格。不過基於我個人在兩岸工作幾年的觀察,固定思維多少都存在,之前的主管怎麼帶怎麼教的,都是最真實的體感烙印,比起書上與training講的形而上,真實經歷更容易實操也更穩健,所以如果沒有特別刻意去思考和改變,大部份的人還是腳踏實地『遵循古法』了。

與其空泛地說怎樣比較好,不如比較一下差異在哪。本來我想把管理風格分成美式與中式,後來想了一下,用成長思維V.S.固定思維去解釋也滿順的,姑且美式就叫做成長型管理風格,中式叫做固定型管理風格吧。

首先,我認為產業與職務特性是影響管理風格很大的先決條件(無關職業優劣),比如研發工程師 X 成長型管理風格,OK;產線作業員 X 成長型管理風格,也許不那麼適合。其中有一些本源的差異:

知識變化速率

軟體產業的知識變化速度極快,需要不斷更新知識因應變化。而變化本身使得不在實作第一線的管理者沒辦法擁有最up-to-date的知識做正確的決定,所以有一部分決策需要仰賴一線軟體工程師input,因此透明、合作來最大化正確決策的機率就是順理成章的事。另一方面,軟體發展的進程也不過是百年內的事,因此這個產業很多東西還在一直在高速發展中,比如之前大數據系統剛出來時,把大數據儲存與計算問題解決了,也使得需要大量數據運算的Deep Learning普及化,cloud/container/kubernetes讓software-defined infrastructure達到工業級水平而大爆發,這些也僅僅是近十幾年內在軟體產業發生的典範轉移,所以能不能跟上時代,持續學習成長的能力就很重要,在這個產業中如果不創新,就會被創新殺死。主管如果故步自封,拖累組織進化的進程,恐怕是要第一個被淘汰,或者讓組織『被淘汰』了。

反過來說,如果完成工作所需的知識幾乎固定不會變動,不需要員工提升組織的知識邊界,而是需要員工穩定、高效率、正確的輸出,那用成長型管理風格可能有點勉強。用固定型管理風格,主管獨立做決策快速給命令、員工遵從階級制度確保命令被貫徹執行,以恐懼建立威信,用嚴懲來嚇阻犯錯,可能相對適合。這裡講得比較極端,具體怎麼拿捏好度就是智慧了。

創新帶來的回報

軟體開發如果更多涉略研發與創新(不見得是research,新的應用、新的實作、新的business model都行),有時也要一點運氣才能成功,但是軟體天性容易複製,網路效應容易放大成果,所以很容易scale,回報也就大, 因此就很適合有相對高一點的創新佔比。

訪談中提到創投如果看到一個創業家沒有失敗過的經驗甚至會有點擔心,因為他可能還沒撞過牆,還太過膨漲,不知道怎麼在邊界內做事。有經驗的創業老手知道怎麼take calculated risk,追求好的decision quality提升勝率,但也坦然接受不可控因素,從失敗中挖掘出有用的知識和以前沒考慮到的維度。

前面提到創新總有一點運氣成分,所以有良好的心態面對失敗就很重要。如果是固定型管理風格,管理者面對失敗就很容易敗給人性的弱點,會極力找各種理由,或用模糊的說詞避免直接承認失敗,因為害怕承認自己有所不足會有損自己的威信。這是因為擁有固定思維的主管覺得自己『應該要』比員工厲害,『應該可以』做好,所以有問題的話,一定是其他問題而不是自己有問題。有的主管則是自己都清楚狀況,但就是愛面子拉不下臉。

其實看破不說破,幫忙扶一下主管的面子,維持主管尊嚴確保指揮體系的效率,倒也無傷大雅,不過僅限在固定型工作環境比較適用。不承認失敗的另一面是放棄探究失敗的原因,對於知識相對固定的工作影響不大,但是如果是成長型工作,那所有人都錯失一次寶貴的學習經驗,軟體業impact scale大的天性,也可能令重複犯相同錯誤付出極高成本,更嚴重的是形成糟糕的表面文化。

這邊要注意的是,我們不是讚頌失敗,也要避免習慣失敗,或者用學習成長做藉口美化失敗。具體探究失敗的原因,保持成長心態,接受創新可能帶來的失敗,但如果是明顯可避免、工作態度不正確造成的失敗,也需作出適當的懲罰以設立底線,建立正確的價值觀。

市場供需

最後這個因素就比較現實了,優秀的軟體工程師一直都是都是供不應求,所以需要兩個面向來達成需求:

  1. 培養:找不到人的一個方法就是自己養成,所以要採用成長型管理風格。
  2. 留才:要留住人才就要有誘因,成長型管理風格能夠滿足人才自身的成長與成就感需求。

如果哪天軟體發展漸趨成熟,各種底層/中層/low-code solutions都齊備且能夠滿足80% of business requirements,也許軟體工程師的bargaining power就不存在了,到時候也只能忍氣吞聲求口飯吃,學習成長靠自己吧。不過我相信人類社會的發展一定是持續朝更好的方向前進,屆時大家都能擁有足夠的知識,判斷怎樣的管理方式適用。

最後

過與不及都不好,中庸之道的精妙在於了解整個系統後,如何妥善調控兩個極端中間的邊界來取得平衡。美國作家菲茲傑拉德(F. Scott Fitzgerald)在小說『了不起的蓋茨比』中說:『檢驗一流智力的標準,就是看你能不能在頭腦中同時存在兩種相反的想法,仍能維持正常行事的能力』。先不急著否定,探究事情的本源,也就能理解兩個截然不同的想法有各自背後存在的邏輯,往系統性理解前進一步。

走筆至此,大家應該不難發現我還不具備一流智力,文中多少帶有一些主觀傾向性吧(笑)。

--

--

最近在讀一本書:躍遷,古典著。

裏頭有一段篇幅談到『識別知識的源頭』,大意是說,網路時代的各種文章充斥,很多文章的知識點不是原創而是轉譯過的,就像流言ㄧ樣,不同人的解讀與傳播到最後總是會失去原意。

比如大家都聽過的一萬小時定律,源頭是埃里克森與同事合著的論文『刻意練習在專業獲得的應用』,被格拉德威爾截取其中的一萬小時定律,寫成『異類』這本暢銷書而炎上。原作者埃里克森覺得自己的理念被誤讀,所以又出版一本『刻意練習』,強調沒有確定的時間門檻讓人成為大師,正確的練習才是重點。

我們生活中其實也有非常多例子,比如一些技術課程、Tech Talk、Blog,是的,你在讀的本篇文章前半段也是二手知識(笑),不論是作者有意為之想發表自己的觀點,或是儲備知識不夠導致理解不到位,或是表達不清晰不能準確描述,或想做行銷,都有可能使得訊息不正確傳達,而形成不盡然正確的認知。

不過通常要探詢知識的源頭也並不容易,如果作者沒有留下線頭,本來就沒有這方面知識的讀者又怎麼知道要探尋什麼呢?

另一方面,知識的源頭有可能是well organized papers/books,但也有可能是比較散亂或不易閱讀的形式存在,比如討論串,程式碼,或非母語。這時候有人整理過的二手知識在效率上還是有很高的價值,所以二手知識並非不好,凡是現實的都是合理的,存在即價值。

我覺得二手知識只要把握兩點就能正確發揮其價值:

獨立思考

盡信書不如無書,書中他人分享的經驗知識肯定能增加自身的思考維度與深度,尤其新的維度是沒辦法憑空冒出來的,大家肯定有個經驗是不知道關鍵字所以沒辦法搜尋,這是『知道我知道,知道我不知道,不知道我不知道』中的最後一級。維度/深度增加了,綜合得出的結論就不會是每個人都一樣了,也許你讀過更多先進的思想,能總結出更高級的結論,但不論如何,讀的東西都有可能帶來收穫。

成長心態

我想除了數學這種能証明為真的學科以外,大概沒有什麼事能永遠是對的了。想想地心說與日心說,隔壁棚物理學,總是會有新的想法推翻之前的認知。所以即便是一手知識,也可能不盡然就是正確,但至少能反映當代人知識水平的最高殿堂,而新想法能取代舊的想法肯定是有其優越性在。讀二手知識也是一樣,我原本什麼都不知道,讀了一些,增維升級了,再往後讀到一手知識,就再升級上去,保持開放心態即可。

最後還是要頭尾呼應,講一下Open Source。

Open Source大部分先進的思想與技術都會先露出在社群之中,在Apache Way中更是規範things can be public must be public. 在資訊揭露上對contributors是極其友善的。任何人只要有300萬美金?阿不是,只要有網路就可以輕易的順藤摸瓜取得一手知識,差別在於是否有足夠的前備知識去看懂他們,此時一些品質好的二手知識就能有效作為中介橋樑。

大家應該也都有這樣的經驗,以前自信滿滿的自己,不聽建議而做了某些蠢事,等後來恍然大悟就覺得很丟臉,不過誰沒菜過呢?儘早接觸一手知識,儘早升級擺脫那個認知不全的自己,比起很久以後才明白,或者是永遠都不明白,都好多了。

--

--

2018年4月,我來到杭州A公司展開新的挑戰。

同年11月,我離開了杭州回到台灣。

這是一份短命的工作經歷,但是關於中國,我覺得還是有不少經驗可以分享的。除此之外,我也會加入一些個人的思考,不一定正確,但我認為讀者一定都有能力對事物做更深層次的思考,不會照單全收。

這篇我會著重生活的部分,分幾個大項講:

租房

來到杭州第一個挑戰是租房,A公司這部分類似很多歐美大公司,待遇不錯,除了搬家費,也有一週的酒店住宿讓你找房。經我個人不詳實考究,搬家費與酒店都與同樣在中國的Microsoft還是差了一個檔次。

租房與台灣有幾點不同:

  1. 沒有套房這種東西,除了家庭式3房以上(整租或分租),就是酒店式公寓,大部分都是樓中樓(loft)。
  2. 租金通常一次要先付3個月的份,簽約時還要多付一個月押金,所以第一次付款會很沈重,尤其是需要換匯的新住民。

如果想省仲介費,可以上58同城或一些刊登管道搜尋免仲介費的PO文,這些是業主直租的。

網路

翻牆是肯定要的,我個人常駐兩套方案,付費VPN和SSR。具體細節有很多專業文章在講,這邊就不展開。那為什麼要兩套?

  1. 兩套可用性比較高,VPN哪天突然被封了也是很自然的。根據不準確的觀察,一些大節日付費VPN會不work,打客服也說沒辦法,原因可以自行想像,不過通常大節日VPN封掉SSR也難逃一死。
  2. VPN和SSR都要client支持,而client不一定跨平台(筆電、手機、平板),付費VPN當然什麼client都有,SSR client好一點的要買才有。
  3. 有些網站VPN才能看到,SSR看不到,而且VPN可以選擇不同國家,碰到某些需要當地IP的場景有奇效(看劇)。

至於翻牆效果,我這麼解釋吧,就像洗澡一樣,還是有可能會洗到一半會沒水或是變冷水。通常晚上封包會大量丟失。所以總的來說,在中國翻牆工作還是挺傷生產力的,但也可以部分mitigate,比如搞搞cache,改連中國mirror等,這種就要根據工作內容去特化解法。

很多人會寄希望於公司有高速穩定的VPN,這個要具體分析,比如說有的公司是會限流,有的是設白名單,有的是拉整條專線接到日本等,quality差距會很大,所以最好還是先找在這家公司的人私下問問具體情況。

食物

A公司的食堂很棒,選擇多、便宜、美味。

外食的話,粗略計算大概是台灣消費的1.2倍。吃的東西差距不大,總的來說滿習慣的。有一些台灣沒有的,在杭州很夯的食物:小龍蝦、鱸魚、中式燒烤(醬的味道我很喜歡)。衛生是還OK,自己看起來都覺得怪的不要吃就了吧,比如在比較髒的馬路邊的燒烤。

外賣(餓了嗎、美團)便宜又方便,會經常使用。

娛樂

跟台灣一樣,逛街、唱歌、看電影、踩景點、看風景等。

電影比台灣便宜,尤其3D的便宜不少,3D眼鏡要買,但是很便宜,下次忘記帶也不心痛就買新的吧。台灣3D票價貴很多,眼鏡再怎麼消毒我還是不太想戴。

交通

短程打車、腳踏車、電動腳踏車是比較常用的,但是這種共享類型的交通要思考用槍時機,比如上下班時間,是否下雨都會影響,例如晚下班沒半台腳踏車可用,下雨打車要等50分鐘。公車也很多,但是要注意營運時間,有的只運行到7、8點。

較遠一點的移動會搭配高鐵、地鐵、巴士,基本上大眾交通票價都滿便宜的。注意高鐵用台胞證訂票有諸多不便,要現場取票,排隊會排很久,經常有人説趕不上了要插隊等。

恩,很敏感的話題…

可以分兩塊來講,公司內的人都是很好溝通的,和人交流和台灣沒太大區別,我和一起培訓兩週的小夥伴們建立了非常深厚的情誼,曾一起兩天一夜遊歷黃山,甚至我離職後有機會再去到上海,還特別坐了動車去杭州和的大家一起遊千島湖。我想是因為A公司的文化有點類似苦行僧,小夥伴們聚在一起時總能有話題和共鳴吧。

而面對一般大眾,有些事情會需要寬心,重申一下,都是比例問題:

  1. 插隊:
    換個角度思考可能比較舒心(?),自由競爭,搶到算你厲害,搶輸算我技不如人,也是一種遊戲規則,只是我們習慣另一套排隊的規則。不論如何我是排隊派的,如果卡位厲害就能搶贏上車進電梯,那反過來也是歧視一些弱勢的群體,欠考慮了。與此同時,中國也很努力在做教育,宣導文明排隊,只是教育需要以世代為單位的時間。
  2. 說話音量:
    講話很大聲,大聲放影片,都是滿正常的日常遭遇,台灣當然也都有,機率小一點。
  3. 肢體接觸:感覺personal space是比較小的,比如排隊,總是會被後面的人或多或少touch到或推擠到,完全不是我覺得舒適的人與人之間距離,我不知道後面的人是不是下意識覺得往前擠可以加快排隊速度???
  4. 互信:
    我直接分享一些經驗吧:
    (a). 吃飯問店家說要開發票可以嗎,回答OK我們才進去吃,之後說發票用完了下次找他拿,下次登門說還沒補發票下次再來,就這樣跑了3+次,每次都有理由,最後才開到發票,幸好這家店在我回家的半路上…
    (b). 到上海出遊一樣吃飯問發票說OK,結帳時說留地址幫我寄過去,就這樣了無音訊,微信問幾次無下文,美團負評才主動私訊我講很多經營困難的話討同情…
    總的來說都能感覺到店家不老實,當然也是有很多店家很誠實,有一家拉麵店真的事後寄發票給我,花了不少運費,很良心。
  5. 道德:
    舉個實例,辦公室突然跑來一個人急著充電,想要拿走隔壁同事的充電器,同事人不在,我上去跟他說要問主人借才行,他說沒差吧。我不知道這是因為文化價值觀上比較傾向共有的觀念嗎?
  6. 政治:
    小區的警衛找我閒聊知道我是台灣來的,會很自然而驕傲地說你看我們祖國很棒吧。

總的來說,我覺得這是一段很有價值的經驗,經驗就是從實務中體會那些難以言喻的不同點在哪,有了對比,就能型成一個有變量的維度,而不斷增加看事情的維度就是認知升維的過程。

如果要我對這段經歷下一段註解,我會說我認識了很棒的朋友,經歷過難忘的時光,挑戰過很有趣的工作:)

--

--

今天參加某conference,講者說雲端提供的NoSQL比傳統B-tree database快,因為B-tree database使用SQL介面,需要額外轉譯執行,而NoSQL只要使用簡單的API calls (get, put, scan),少了SQL這一層。聽起來似乎有點道理,就以此為開頭,講一些我的想法吧。

NoSQL也是可以有SQL介面的,Apache Phoenix / Casandra CQL / MongoDB query language是一些例子,不過SQL提供的強大功能如aggregate / join在NoSQL上因為data partitioning的關係所以不完全支持,即便支持也因為效能問題需要謹慎使用,所以SQL+optimizer帶來的優勢不是很大(在OLAP系統中反而非常吃重),比較多的還是提升易用性。但SQL+optimizer是運行在CPU+Memory+小量metadata的環境高速迭代,針對database這種read/write against disk的場景來說,SQL對性能能起多大決定性作用,我是打問號的。

換個角度來看,NoSQL通常以high write throughput為主打,因為寫時主要是append write ahead log和mem table就完成了,但相對讀時要做的事情就比較多了,需要讀取mem table和掃on disk的SS tables來整理出需要的rows和versions。比起維護單一version的B-tree database來說,NoSQL不見得比較快。另外NoSQL在flush mem store和運行compaction時帶來的性能影響也不若B-tree database這麼省心。

不過講者說的另一段話是沒錯,那就是B-tree database因為是二元樹形式,因此只能在一定的量級內提供能良好效能,而NoSQL有比較好的scalibility。

NoSQL不論是Range或是Hash Partitioning的實作,都能利用key和partitions的mapping關係,排除大量無效的搜索空間,而且這個操作幾乎與資料量N無關;B-tree要locate到row則需要LogN的時間,比較容易受資料量影響效能。

總的來說,我不會說NoSQL就比較快,它們有各自的強項such as NoSQL has better scalability; B-tree database has better support over ACID. 縱然有如Spanner這類NoSQL(or NewSQL)利用原子鐘等特殊硬體打破網路不確定性的限制做到distributed transactions,在NoSQL上達成ACID需要更高的成本(特殊硬體、等待延遲、運算量)是不變的。

--

--

Evans Ye

Evans Ye

軟體工程雜談。歡迎打臉,幫助我成為更好的自己:)