Bernard:那我有個問題,因為還蠻多我們碰到同學他會擔心東西講太淺,或是被人家批評說什麼東西,或者是會給自己壓力,你個人的經驗或是身邊的工程師朋友,有什麼特別的方法去 overcome 這個壓力,比如說不要設定明確的目標,也有些希望把影片 po 到 YouTube 上面追求別人訂閱,變成一個很大的壓力,那你有什麼建議跟大家分享一下嗎?
Richard:我覺得這樣思考,就是一淺還有一淺淺, 這世界 always 還有比你更菜的人,這其實就是很現實,一定還是有比你更菜的人,像大家如果已經轉職成功的,你現在寫的東西可能正在修 ALPHA Camp 課程的同學,他可能就不是那麼理解,總是會比你有更 junior 的人,這很正常,不要覺得說我寫出來就顯得我好像比較弱,也沒有,你說寫錯怎麼辦?那不是正好,如果寫錯有人跟你 comment 說,其實這個不是這樣子的,你也是得到一個學習的機會,我覺得當然在整個台灣這樣子的文化,可能大家就覺得說,你就是愛現才會寫這些東西,可是我覺得也就不要這樣想,因為我們其實還是要 respect 這些願意能夠付出的人,所以就寫不要有壓力,反而我看到那些可以量產的人,他就覺得反正我就是寫,你覺得我錯我就改。
Bernard:我們看到的經驗是,第一:在你撰寫的過程會讓你對自己的理解更清楚,因為你需要把內容在腦袋裡整理一下。第二:剛剛有講到我們的課程分很多學期,每一個學期都有學生把一些筆記寫出來,而這些筆記對後來的學弟妹都非常受用。只要你用心學,把它整理一下的話,一定可以幫到一些人,所以不要太擔心,不要給自己太大壓力。
話說回來,所以作為 CTO,Richard 你還是會去經營技術社群,幫助公司推廣,把公司的在求職者心中的定位透過分享拉高,之後開始變成進入一個團隊管理的階段。
Richard:我一開始就是當 CTO,覺得自己程式寫得還可以。但除了寫程式之外,我有機會多去分享,然後大家覺得我們公司技術還不錯,好像就很稱職。
後來發現這是完全不夠的,還有很多事情要做。比如找了很多同事進來之後,你就這樣想,如果今天你在一個球隊裡面,有很多人都會打球,你覺得 CTO 在這球隊裡面該是最會打球的那個人,最會投球的人嗎?那不見得,因為這終究是一個 team sport,那就跟球隊會有教練,而教練的影響常比明星球員還大。
這時候我就慢慢意識到說,其實這大概是已經創業三五年的時候,就意識到其實團隊是更重要的,教練不見得是最會打球的人,但他可以讓大家能發揮一個最大的 output。作為一個工程主管,你會說工程主管一定最要會寫程式?其實就也不一定。我們都知道勇士隊很厲害, Steve Kerr 他當 NBA 球星的時候打得很好嗎?也不見得,可是他當教練可以當得非常的好,所以這其實是兩件事情。
【註:不知道 Steve Kerr 的可以看這裡】
重點是我們要去「最大化 (maximize)」團隊的產能。當領導者把專注力放在如何讓這個團隊的產值是最高的,這時候會發現有很多你需要去學習的事情。比如說,像課綱裡面可能會提到說測試等等的這些東西,可是很多人可能在學習的時候,說實在我自己也是,以前自己在學寫程式的時候,會覺得說寫測試也好,追求什麼測試覆蓋率等等的到底要幹嘛?可是慢慢的,當你開始帶領工程團隊之後,就發現寫測試很重要,可以把很多團隊的知識內化進來,在這段過程當中,我覺得去學習到怎麼去當個所謂的技術主管,技術主管包含什麼?比如說像最簡單的,你自己寫程式的時候可能就覺得說,我的 if 後面要不要換行,像 JavaScript 到底要不要加分號,這感覺就是喜歡怎麼樣就怎麼樣,但要或不要其實都可以。
我覺得做為一個好的技術主管,倒不能說我有一個主見,就是加分號就是爛、不加分號比較棒,我覺得不能這樣想。而是說團隊可不可以一致,好像套件也是一樣,像我知道我們學的是 Vue ,如果今天你就是有團隊成員說我想用 React ,或是 Vue 要出 3.0 了,我想升級 3.0,那怎麼辦?有沒有辦法取得一個共識?你怎麼去評估這件事情?不要說是技術主管,光是做為一個比較 senior 的工程師 ,常常都會遇到的問題是如果估計自己所需要投入的時間。比如 CEO 問這個功能要做多久?這個 bug 一直壞可不可以趕快把它修好?你估時間也很重要,你說估時間跟你很快把它修好,其實是兩件事情,有時候其實對於公司來講,重要的不是說今天有 bug 你馬上三分鐘修好,因為本來就需要時間。但更重要的,是你能不能夠準確的讓其他人知道你所需要的資源與時間。這樣,大家才能規劃如何應對,以及設定其他持分者的期待。比如網站壞掉,客服電話一直進來。你能不能跟他講說,我們可能需要多久才會修好。他們有一個大概的時間,才能規劃不同的處理方式。
Bernard:這是很重要的提醒。很多工程師以為別人只在乎把問題解決。而問題被解決的確很重要,但你要花一小時、一天、甚至一週來解決,對公司來說,都會導致不同的應對與處理方式。
Richard:每錯。我後來就意識到,對於這種所謂的工程團隊,我們要有一個成果,成果這件事情不是就是說我超級會寫,超級厲害,我是「美國隊長」,我產出超高!就天下無敵。不是這樣子的,而是我們怎麼樣 work as a team ,然後對隊友負責,建立共識。比如要升級 Vue ,可以升要升大家一起升,然後怎麼樣有一些 test plan ,不能說有個工程師說我要升,他就自己去升了。我們自己當工程師的時候,我們也不希望我們的團隊長這樣子,所以慢慢意識到,去當工程師主管有一些其他的 soft skill,比如說包含你怎麼去導入測試導入怎麼樣,然後當然很多同仁之間的一些技術上的決策的問題。這些大概到創業三五年之間才會理解到,光從一個好的開發者,開發者可以去分享這些東西,有一些社群的聲量吸引其他人加入我們公司,到原來帶團隊要跑得遠,其實又有一些其他的 skill 要學習。