這是我跟 Richard 對話的最後一篇。想省時間的讀者也可以參考這篇總結與與這段精華片段:
https://www.youtube.com/watch?v=yBsW4e9m05U&feature=youtu.be
Bernard:所以根據這個議題,這張圖怎麼結合起來?你在哪裡?做什麼?
Richard:這是我在大概一年多前在小米,然後我們有一個商業上的合作,其實說起來技術不難,就是說小米有 SDK ,他們有做一些智慧家庭的 home appliance 、智慧家電,這一個煮飯的小米電鍋,我們就做了一個整合,可以用愛料理的 APP,用 SDK 去串接小米電鍋的 API ,就可以用愛料理看到食譜,用小米電鍋把它煮出來,這東西其實不難,小米也是亞洲很厲害的企業,他們 SDK 其實整合蠻好的,技術上不難,可是就覺得這樣做發現效果不錯、很有價值,也得到很多的媒體曝光,以前我可能會覺得說這是雕蟲小技,串個小米有多難, ALPHA Camp 課程一定會教怎麼 social login 的(沒錯!),這不就是串個小米 social login 嗎?可以想到這件事情,它就有個市場的價值性在,可能替公司爭取到了一個免費的曝光,以前就覺得這種事情好像沒什麼,後來才發現,其實能夠想到這件事情對症下藥,我只要花可能十分之一的時間,產生出來的媒體價值,這樣子的一個發表會,像它還上了很多新聞媒體,如果要花錢買要花很多錢,可是我們串了一個小米的這樣子的 social login ,就得到了這樣子,那這不就是一個十倍,十倍工程師應該要有的表現。
Bernard:所你的思考點是從技術這個東西有多難做、怎麼做,變成一個它怎麼對公司的影響到底什麼?價值什麼?有時候不能這樣比,不是價值越大的東西越難做,通常很多時候會,但是我覺得對自己職涯負責,或者是工作時候有一個正確思維,去找我做什麼事情,它後面產生的價值會有更擴散的效果。我們聽過 Richard 他自己一些學習,從個人的 KOL ,到一個團隊的主管,到一個公司的 CTO
,怎麼把公司的價值提升,我們拉回來談一下十倍工程師的事情好了,很多人會聽到十倍的話,就是說我要學什麼,我去刷多少 Leetcode,或者是我要學什麼最厲害的東西,但你反而是從非技術能力去出發,可以跟大家分享一下這個是怎麼區隔的?我怎麼決定我的技術能力已經 ok
了?它是一個取捨嗎?還是能夠同時發展的東西還是怎麼說?
Richard:我覺得這東西一定是相輔相成的,我打個比方好了,這邊我還是要強調就是說,學技術的人我們對於商業性的理解是非常重要的,像大家常在做一些技術選擇上面,比如說我們今天為什麼學 Vue 、學 Note.js ,不學 PHP
不學什麼的,其實背後都有一些商業上的考量,比如說像我們現在就會發現,在網路速度很快的時候,其實更多 APP 或更多的網頁,其實它會有很多這樣子
kind sign 的互動,這種東西其實就是時代在變, JavaScript 的重要度變高了,你現在其實學 JavaScript
更容易找到工作,因為需求是變多了。所以你看這件事情重不重要,你不能說我只看到一個很新的技術,可是你沒有想到說它有什麼用途,你就說那我就要去學,這樣你很有可最後學到東西是一個…
Bernard:沒有市場的東西。
Richard:可能沒有市場的東西,或是你沒辦法找到正確的應用場景,像很多人可能會知道說要他們去學什麼 C#、ASP 這樣子,這些東西不好嗎?也不會,如果我是在一些很需要資訊安全的,或是他們可能是更需要一些 enterprise support 的,他就是需要學這個,重點是你的目的在哪裡?你要去挑選正確的方法,所以回來到底我們怎麼去學習這個非技術能力?我覺得第一個就是說,你對於你每天在做的事情你要有個 awareness ,最基本的,像我常說,很多人家問說一開始要怎麼入門呢?我就說至少要能夠知道自己做的事情工時要多久,常常我遇到一些 RD 很難答出來,我常說你們這東西要做多久?這 feature 都寫得很清楚, spec 都很清楚了,即便到很 senior 了,常常也都會跟我講說我不知道。
Bernard:這是經驗的問題嗎?還是他沒有注意這個事情?這個能力是怎麼出來的?
Richard:其實我覺得就是要有意識到就是說,其實別人需要這個東西,你在 cowork 當中,人家一定會要你這個,那你說今天 Richard 你講得口沫橫飛,你估工時都估得超級準嗎?老實講我也沒辦法,可是我會想辦法去估出一個大概,然後這個大概我可能會變成是一個 commitment,比如七天內做得出來,可是到第三天,我發現做不太出來的時候,我們可能就要舉手,要嘛就是你要講出來說可是我們跟人家押七天,我可能要怎麼去修整一下方向,原本要做怎麼樣的功能,我們要改一下。
Bernard: scope 改一下。
Richard:這樣就是責任。代表你對於這整個商業是尊重的、 respect 、 responsible 的態度,其實會在一天兩天當中,慢慢地這樣子就會有一些落差出來,就會慢慢去理解說,原來這個生意是要幹嘛的。這就會有很大的差別是說,有些工程師他可能也不管這些事情,一些可能對商業影響非常小的,比如說有一個什麼樣子的頁面壞掉了,這頁面可能根本平常也沒有人去看,也沒有人在用,他可能整天都花時間修那個,但反而另外一個,可能比如說註冊的流程,很重要的一個 follow,一定要去經過的地方它壞了,他沒有辦法分辨出來哪個其實是要先修的,這就不太好,所以我覺得所謂的非技術能力,與其講能力更多是心態,就像我剛剛講廚師的例子,你只要記得你就是廚師,你端出來的炒飯好不好吃,絕對直接影響這家店會不會活下去,不要覺得說反正我就是來炒的,好不好吃就算了,反正我炒出來了,千萬不要這樣想。
Bernard:我們碰到很多學生都會問,當工程師或職涯怎麼成功?我覺得不同的職種當然有一些基本的條件不一樣,當工程師的話,你的程式碼需要乾淨,一些基本的概念需要學得好,不要旁邊去拼拼湊湊複製貼上就好,但是這是基本的東西,我覺得橫跨不同產業,核心其中一個就是,剛 Richard
也提到了,就是你需要讓其他人、你身邊的團隊喜歡跟你工作,我覺得還蠻重要的,不是喜歡你,是喜歡跟你工作,代表是說你能夠從他的角度去思考一下,你怎麼提供更好的價值,如果你東西發現時間會延遲了,不要等到最後一天才告訴別人,或是你怎麼去思考一下,幫助他們達成他們的任務,我覺得這個很小的心態改變,但是你的行為、你的溝通模式都還蠻不一樣的,所以大家去參考一下。
拉下來我們很細的再講一下好了, Richard 列了三個主要的非技術的核心能力:
剛剛有提過一點點自我定位這件事情,所謂的商業思考的 business mindset 、商業思維,這個是怎麼說?如果當工程師,我們需要讀一個 part time MBA,或者去上一下商業思維模式課程嗎?
Richard:我覺得這邊的要求也不用說太複雜,要特別去讀 MBA 太誇張了。我覺得就是說,你大概要對於公司怎麼賺錢要有個概念,今天不管你在哪個產業,可能未來去做 gaming 、做 ecommerce
、做 dating app,做什麼都好,你要大概知道公司是怎麼去賺錢的,就像剛剛講的,不要說有一個很重要跟付錢有關的功能壞了,然後你不知道,你不知道它是重要的路,反而去修一些比較不急的 bug ,那就不好,那以及當然就是說,工作你永遠要記得沒有人吃飽太閒,常常會聽到一些 RD 說,我不知道 PM 為什麼要做這件事,老闆又沒有叫你加這些東西,老闆不會吃飽太閒叫你去做這個,他一定覺得賺得到錢才叫你去做,為什麼老闆會覺得這件事情賺得到錢?其實當你在拿到這個 task 時候,你可以去想,甚至你也可以去問說,為什麼我們要做這個事情?
我覺得其實也是滿多時候,我們可能教育當中比較不習慣,就覺得你就是工程師就是做,問那麼多幹嘛,可是我覺得反過來講,其實你要知道他要幹嘛,說不定他要做這件事情有更簡單的方式可以做,比如說我打比方,可能今天你收到一張票是什麼,你需要做一個怎麼樣的聊天機器人,你要開始寫 Node.js 或幹嘛,弄一大堆東西,如果真的去了解之後,發現他可能只是要做一個簡單的東西,搞不好用現成的服務還不用錢的,套一套就好了,更快可以完成,不用真的就下去寫這個 code ,所以最基本的商業思考,你今天在一個商業裡面,你一定不會憑空拿到一張 PM 的票,這張票一定有他覺得會賺錢的原因,或他覺得重要的事情,去理解他,知道為什麼,知道為什麼之後,搞不好你有更好的方式可以去進行,你問多了,久了就會大概對於這件事情有一個概念。
就像比如說,像我也會遇到一些 ALPHA Camp 的校友,校友之間或是說各位可能問工程的朋友,或問社群裡面,除了問說你們公司寫 Node 、寫 code 寫什麼,也可以聊一下你們公司在做的生意到底是什麼?最近成長的狀況怎麼樣?在不洩漏公司機密的情況下,你大概會知道說,原來這東西是一個怎麼樣的商業形式,慢慢地就會建立起 sense,你說一定要去上什麼課,我倒覺得不一定,因為東西一直在改變,可能比如說十年前那時候流行團購,現在沒有人在團購,現在直播電商,直播電商已經慢慢又改變了,所以你說真的有一個什麼典範 classic 去學,沒有但心態很重要, start with why ,去問一下為什麼要做這件事情?光這樣就有蠻大的改變。
Bernard:我覺得好奇心是很重要的。蠻多人覺得「我是個工程師,我把程式寫好,做什麼、怎麼賺錢是老闆的責任,我如果去想的話,那為什麼我不賺他的薪水!」我在不同的媒體會看到,台灣的「勞方、資方」框框還滿明確的。從另外角度來看,我打過工、我現在也在創業,其實重點你想不想這個公司更好。你的公司核心是什麼?一個 team 的人一起打造一個產品,說實在話,不是什麼東西老闆都想得出來的, PM 也不是。一個團隊一起去發想把產品做好,技術的問題怎麼解決?使用者的問題怎麼解決?商業模式部分怎麼解決?我覺得這是最核心的東西,你如果在環境是分得很開的,你的想法老闆也不會管你的,反過來說,這個地方不是很健康,但是你對自己的好奇心,或是對自己的思維,還是需要負責、還是需要學習,因為這是你自己的職涯,這個是我過去的觀察。
轉到第二點是團隊的領導跟溝通能力,我覺得溝通能力大概講很多了,對你來說 leadership 跟 communication ,這兩個是綁在一起的嗎?或者是我剛進 iCook 工作,一個菜鳥工程師,我有什麼領導能力?你為什麼需要我有領導或溝通能力?
Richard:很多人會覺得領導這件事情是一個很困難的,領導感覺就是我比較厲害,所以我可以領導你,其實不見得。其實即便你是一個剛進公司的員工,我都希望能看到一些領導力。我打個比方,像你進了一間公司,結果這間公司關於職員 onboarding 做得很爛,一進去之後你連程式碼從哪裡找,GitHub repo 怎麼 clone 都不知道。怎麼跑測試?怎麼送 GitHub pull request?這些都沒人跟你說,你也不知道去問誰,也沒文件可以查。
其實不用覺得很奇怪;這很常見!一般新創公司裡面,通常都是這樣子的。所以當你遇到這種狀況,你們也不要太生氣,有時候就遇到有一些人會覺得說,為什麼我都已經進到公司,我也都不知道怎麼 clone 下來?怎麼跑起來?程式碼 bug 在哪?也不知道哪裡找,都沒人教我,覺得很 frustrated
,覺得這公司不對或是什麼的,這是一種想法。
但另外一種想法是說,既然遇到這種事情,那我就去問、問到會, 經過一輪痛苦掙扎還是學會了,知道怎麼樣把程式碼跑起來了,知道怎麼樣開始上手了。那你能不能夠把你所經過的寫成文件,能不能把這裡面不順的地方把它修好,我覺得剛 Bernard 你講得也很好,到底是不是公司更好你才會更好?公司更好,就是包含給你的待遇,也會更好。公司如果今天從一百個人變五百個人,從十個人變一百個人,那這樣子的成長,你如果在這裡面是 participate,你有貢獻的,你當然才可以期待說,我的職涯、待遇或各種會更棒,公司沒進步,你當然好像也就是這樣子。
所以也就是說,所謂的領導這件事情怎麼講,拉回來講就是「遇到這些事情的時候,你怎麼去看待」。剛剛講 onboarding,你從一開始不知道程式碼怎麼 clone下來?怎麼跑起來?怎麼裝這些東西?那到後來可能你會了,開始修 code 之後,你發現有一個地方可能用的寫法是舊的寫法,但不在你的工作範圍內,今天你被安排的 task 沒有這件事情,可是你知道那就是一個 bug,那你會不會去修它?
所謂的領導這件事情怎麼講,拉回來講就是「遇到這些事情的時候,你怎麼去看待」。
領導是什麼?就像公司是一個家,不要講公司是一個家,這舉例不好,公司是一個環境,環境上面可能有一些垃圾,看到這些垃圾,你是把這件事情覺得這是我們的環境,我們把垃圾撿起來?還是算了就放在那?你說 onboarding 不順,不順你會不會去把它修好?接下來還是會有人 onboard ,後面還是會 hire 新的 RD,我就放著不管,反正下一個人來他活得過去就活過去,活不過去就算了,有些人是這樣想的。
可是我覺得比較有領導力的展現是說,那我們怎麼樣可以把這件事情修順,你做這件事,你一定要 CTO 才能做嗎?其實不用,因為每個人都是最菜的,離下一個最菜的人就是你,我 ALPHA Camp 剛畢業剛進這間公司,遇到一堆 frustration ,你沒想到說接下來 ALPHA Camp 其他學弟妹會再進來,他還是會問你,難道是每個人都去 struggle 嗎?當然這是不對的,所以你能不能夠在你struggle 完,把這些產出留下來,讓後面的人可以跟上,其實這是個很簡單的領導力的展現。
Bernard:我覺得這個除了你跟公司有貢獻,這個環境有貢獻之外,更實在講的話,這些經驗跟故事可以帶走的,如果這個公司發現沒有你想像中這麼好,或是什麼的你要換工作,這些是非常加分的故事,就是從那個主管的角度來看,他的 team member 能夠把這個環境弄的更好的話,這個是非常非常重要的,所以不是教大家一直在做一些跟你工作不愉快的東西,不要這樣想,它其實對你的職涯有很好的幫助。
Richard: Exactly