高科技公司的 CEO 要寫代碼嗎?
導讀:周末與一老朋友相聚,聊起創業,聊起濤思數據,他說,"老陶,看你朋友圈,經??吹侥阍趯懗绦?,你應該是在作秀吧,濤思數據融資都超過 2000 萬美元,你這個創始人不太可能也不需要敲代碼吧"。我當即打開 GitHub,給他 show 我寫的代碼。我不僅為 TDengine 貢獻了整體設計,還貢獻了 4 萬多行C代碼,疫情期間我貢獻的代碼超過了一萬行,遞交的 PR 都超過了 150 個。作為公司創始人,作為 CEO,到底要不要寫代碼?我有我的看法,現分享給大家。
公司在不同的發展階段,重點工作會不同,但 CEO 要永遠盯住核心。就如濤思數據,是一家專注底層軟件技術的公司,即使融資不少,但還是屬于早期,至多是早中期。公司成敗的關鍵完全取決于我們開發的產品--TDengine,一款物聯網大數據處理的軟件。它的功能、性能、易用性等直接決定了公司的命運。從創立到現在,產品一直是我們的命根子。既然產品是命根子,那 CEO 的工作重心毫無疑問就是要抓產品。
作為一個接口相對標準的大數據產品,抓產品更多體現在技術實現上。因此這注定我必須深度參到研發中,不僅要設計,規劃功能,還要敲代碼。如果只搞設計,好多實現細節無從得知,而且工程實現的難易程度難以判斷,性能指標難以給出量級的概念。給一個最簡單的例子,2017 年我們剛開發完 TDengine 的C客戶端,就馬上著手 JDBC 接口,但負責 Java 的同事完成后,發現 JDBC 性能達不到C接口的1/10,而且給我一大堆理論,我當時明確告訴他,Java 性能下降 20% 是可能的,但降到只有 10% 的話,一定是你程序有問題,最后證明我是對的。就在 2 個月前,我們負責 GO 連接器的同事,也是告訴我性能降到只有1/10,不可能再提升,還打賭 1000RMB,最后證明我也是對的,GO 的驅動與C的性能幾乎沒有什么區別。這就是親臨一線與遠離一線的區別。
創始人的專業所長,一定是公司最核心的競爭力,創始人必須在他的專業領域沖到第一線。TDengine 屬于底層軟件,開發需要很多經驗。無論是多線程并發、資源分配、debug 用的日志,還是 API 的定義,有經驗、踩過無數坑的老程序員與初出茅廬的就會有很大的區別。尤其是出現 crash, 或者某個操作失敗時,對問題的分析,定位,有經驗與沒有經驗差別就很大了,這個時候最能體現一個普通程序員與十倍程序員的差別。TDengine 經常做 10 億條記錄查詢的測試,結果少了一條,如果沒有經驗,把這丟失的一條從十億條中找出來那就完全是大海撈針。一個上億條記錄的聚合計算結果與預期值不一致,沒有正確的方法分析,那也無異于瞎貓撞耗子,根本無從下手。
我從 84 年開始寫程序,在中國和美國,都受過很好的教育和專業訓練,本身就是一個十倍程序員,我的編程經驗、對系統架構的把控、研發上所踩過的坑就是公司最大競爭力。但如果礙于創始人、CEO 的身份、因為融了一筆錢,就對一線工作袖手旁觀,只做戰略決定、指揮,那么對于公司無疑是最大的資源浪費,大大降低了競爭力。戰略、布局很重要,決定了公司發展的天花板,但是否能實現戰略目標,則取決于每一個執行的細節。
我的搭檔,另外一位 50 歲的程序員,20 年前就是 NASDAQ 上市公司 CTO,曾任亞馬遜、思科全球高級副總裁,為提升系統的穩定性,寫下了專門做并發、做系統破壞性測試的 crash_gen.py, 多個線程并發同時操作數據庫,有的創建、有的刪除,有的插入,有的查詢。這個程序讓每位研發同學都膽戰心驚,因為這是專門找茬的,暴露的問題往往毫無頭緒。這個 Python 程序現在每周都還有更新,它也不是一般的測試工程師能寫出來的,它需要有對 TDengine 本身的技術、場景的構造等有深刻的理解,而且這個測試程序本身也要有很好的可讀性、可維護性和可擴展性,才能讓它隨著產品的進步而同時進步。
公司發展中出現的核心重點工作,CEO 不熟悉怎么辦?立刻學習!公司的發展過程中,總有事情不是你擅長的,甚至是你根本沒有做過的,你也必須參與進去,否則很容易出現失控,導致無法判斷結果的好與壞,無法挑選合適的團隊,犯方向性的錯誤。為什么最優秀的創業者,都是學習能力超強?因為創業的路上,總有很多從未聽過、做過的事情和挑戰,創業者必須迎難而上,去學習,去彌補自己的不足,這個過程的速度很大程度決定公司的競爭力和成敗。但是,這并不意味著創業公司就不需要引進優秀的專業人才,相反,CEO 通過快速學習了解領域知識,會更加有利于引入人才、更好的和專業人才對話,加速決策進度、促進公司核心業務的迅速成長。
很多認識我的朋友都認為我市場能力超強,其實我從學校一畢業,就是一直做研發的。在做上一家創業公司快樂媽咪時,由于各種原因,就是找不來市場營銷高手,但我個人認為市場營銷對快樂媽咪極其關鍵,因此最后自己沖到了市場第一線。憑著自己多年養成的愛學習、愛總結、愛歸納的習慣,充分利用微博、微信等社交媒體,在幾乎沒有什么資金投入的情況下,一個很小的團隊就把快樂媽咪做成了一個有一定名氣的品牌。
也許到某個階段,銷售成為濤思數據的重中之重的事情,雖然我根本不是一個銷售人才,也沒想去成為銷售牛人,但我也一定會傾注大部分精力來抓銷售。這并不意味著我就不要銷售高手,一切都要自己來,而是希望通過參與銷售,去了解銷售過程中的難點、痛點,來更好的組織銷售團隊,幫助他們達成目標,從而實現公司總的目標。
把程序一直寫下去,樂在其中。TDengine 是一款處理物聯網大數據的開源軟件,一個已經寫了 36 年程序的人,無論處于什么職位,處于什么境況,沒有任何理由不為自己設計的產品繼續寫下去,沒有任何理由不為它繼續貢獻代碼。在我的眼里,寫程序,與打牌,摸麻將,沒有任何區別,都是一種智力勞動。任何一個 BUG 都只會讓我精神倍增,進入一個不解決誓不罷休的狀態。何況,程序也是作品,開源之后,有人欣賞點贊 star,還有來自全球各地開發者的 fork、下載、使用,GitHub、微信群以及各種技術論壇,總有人問問題提建議,作為作者的我,看到這些,總是十分的開心,因為點贊、下載、問題都是對我勞動價值的最大肯定。
Do one thing and do it well!既然選擇了做程序員,那就開心的寫一輩子程序吧。
2020 年 8 月 30 日
陶建輝寫于北京望京
插圖來自《石頭和爸爸 - 計算機》一文