學霸終結者

第二十六章 別具一格的王霸之氣

不愛創新的人,或者沒有接觸過原創工作的人,往往會有一種錯覺:發明創造也好,經典神曲和傳世詩篇也好,那都是天才靈光一閃的產物。

莫扎特的傳記作者奧托楊就揭露過一個謊言:早在19世紀初,就有許多“雞湯文”渲染莫扎特的創作流程:說他畢生最牛逼的作品,都是在夜深人靜、環境優美、天人合一的狀態下,由于靈感爆發、思如泉涌而創作出來的。

但是實際上,這種“雞湯文”論調純屬扯幾吧淡,是徹頭徹尾的謊言。奧托楊早已證明,莫扎特根本不是這么一個人。

哪怕強如莫扎特,作曲也是要慢慢研究樂理、反復修改調音試聽的。

哪怕強如李白,除了號稱一蹴而就的三首《清平調》,他其余的大部分詩作也是要查韻部、摳字眼、和賈島那句“僧推月下門”那樣,為了一個個用字反復“推敲”的。

過度強調創造所需的“靈感”,而選擇性的無視創造所需投入的“努力勤奮”,無非是雞湯文和段子手們為了自己的文章銷路,媚俗無恥地迎合大眾,滿足大眾的自我心理保護。

因為庸碌的大眾需要為他們的創新無能尋找一個開脫的借口。他們甘愿相信:看,創造這種東西,是天才才能做的事情。我們沒做到,只是因為我們沒有這種天分,而不是我們不夠努力。

而在現代前沿企業里面——只要不是那種只會山寨別人產品的企業,只要有幾分實打實的自主優化和創新的——在它們的研發部、軟件部,有得是依靠拼搏和努力來實現創造的工程師、程序員。他們并沒有外行大眾想象的那種天才,他們有的,只是勤奮的努力,和一個正確的方向。

朱海波也好,杜俊強也好,都是新世紀華夏百萬原創碼農中一朵微不足道的浪花而已,他們一樣沒有天才,但是他們一樣知道努力。

至于有沒有把握到正確的努力方向,在此之前他們不敢說。剛剛工作了兩年的碼農們,心中有迷惘是很正常的。

但是遇到了顧莫杰之后,他們敢說了。因為他們知道,他們要找的東西,在顧總那里就有。

顧莫杰電話打完不到半小時,外賣就送來了,他禮賢下士地招呼大家過來一起吃,自己也先挑了一份蓋澆飯,直接開吃,一點看不出老板的架子。

各懷疑問的程序員圍坐一圈,悶頭吃了幾口,誰也不好意思先開口問。直到顧莫杰咽下一口青椒肉絲,揮著筷子反問:“我說午飯的時候趁機例會,你們就沒什么想問的?今天的會我只負責答疑,沒有硬性議題。”

聽顧莫杰這么一說,朱海波第一個忍不住了,開口問道:“顧總,我想知道,我們公司的測試團隊究竟有多少人?都是什么資歷的?說實話,我在搜狐兩年,也沒見過這么強大的測試能力,居然可以針對一份基本功能都還沒跑通的代碼,就測出這么多問題。”

各位看官或許會好奇,為什么朱海波會對公司的測試實力如此關心。這個問題其實可以通過打個比方來說明。

程序就像是一個等待醫治的病人,程序員就是負責開處方配藥的醫生,而測試員則是觀察病人癥狀、反饋病人癥狀以及程序員用藥后“病人藥物反應”的人。

最差的測試員,只能告訴“程序員醫生”,這個程序“哪兒疼”。好一點的測試員,能告訴“程序員醫生”,這個程序“得了什么病”。所以任何軟件公司,都需要軟件部和測試部兩個對抗性的部門合作,才能產出一款合格的軟件,就像法庭上需要控辯雙方唇槍舌劍,真理才能越辯越明。

一個公司的測試員是否牛逼,對于程序員能力的成長,會有很大的影響。

比如一個手機方案,面臨一種癥狀為“翻蓋后手機屏幕不亮”的故障,最次的測試員只會安安分分地按照上述文字提交一個BUG,然后程序員需要費老鼻子的勁兒去查問題究竟出在哪兒。精力花了不少,進展卻沒多少。

而有經驗有眼光的測試員,遇到同樣的BUG,就會不滿足于上述簡單結論。他會用更多的對照組實驗細查問題根源,最后很可能總結出“翻蓋上的霍爾器件傳感器通信代碼異常”這個深度的問題所在。與給力的測試員合作,程序員就能省掉很多排查的彎路,讓自己的經驗和寫碼技能快速成長。

公司測試資源的強弱,與自己的切身利益息息相關,與將來工作能力的進步速度相關,朱海波、陸俊強等人怎能不好奇?

顧莫杰聽了這個問題,淡然一笑,把早就準備好的答案拋了出去:“公司肯定是有強大的測試團隊的,這點你們放心。不過目前有一些人員還屬于外包,沒法介紹給你們認識。”

朱海波聽了這個過于官方的回答,更是心癢難耐,進一步追問:“顧總,我絕對相信您說的話,也沒有對公司的測試團隊實力有任何懷疑。可是在國內我實在沒見過這么強的測試,您能說一些技術上的細節么?

比如針對我昨天寫的這部分代碼,我看到測試的同事提出了一個‘詞頻反饋數據抓取環節存在內存泄漏’的BUG,還精確到了某一段代碼上,這簡直是神乎其技了。基本功能都沒跑通,測試是怎么測到這一步的?”

一個軟件,寫得越完整,越容易精確測出BUG來,而軟件越是原始、越是基本功能都沒有跑通,要精確測出問題就越困難。這個道理是舉世皆然的。

就好比一臺手機,如果連基本開機都做不到,那永遠只能測出一個BUG:開不了機。縱然從代碼層面看,這臺手機的攝像頭數據傳輸有問題、觸屏算法有問題……也都輪不到被測出來了。

可是這種常人看來不可能的事情,顧莫杰偏偏就做到了。

朱海波昨天寫的那部分代碼,就相當于是一臺開不了機的手機。而顧莫杰就相當于偏偏在沒開機的情況下,就說出了“如果這臺手機開機了,還會出現哪些BUG”。

如果說普通互聯網公司的測試員們屬于“看到病人就說出病人哪兒疼”;而國內頂尖的測試大牛可以做到“看到病人就精確說出病因”;那么顧莫杰手下的測試團隊,昨天的表現,就可以比作“哪怕看到的是一具尸體,都不用驗尸,就能直接說出尸體的死因”。

法醫的鑒定能力比給活人看病的醫生強。連驗尸都不用驗就說出死因的人,自然比法醫更強。這種測試能力,已經可以說是突破天際。不再僅僅是程序員的附庸,而是程序員的良師益友了。

眾人好奇之中,顧莫杰放下蓋澆飯,拈著一根筷子,作指點江山狀:“那是我自己針對公司要研發的幾款軟件,寫了一些代碼層面的自動測試插件。所以凡是有結構體不完整、指針調用未定義、內存泄漏無法自洽……等等低級錯誤,都可以測出來。哪怕代碼還不完整,都能發現問題。”

顧莫杰一說測試軟件或者測試插件,朱海波、杜俊強等人就有幾分聽懂了,隨之而來的,是一股肅然起敬。

測試插件,是一種降低測試員重復勞動、把一些簡單重復的測試工作通過類似于“外掛”的功能自動跑完的軟件。

比如用按鍵精靈寫一個腳本,把一個軟件上的每種按鍵組合都按一遍,看看功能有沒有問題,就是一種最最簡單的測試插件。

如果在目標軟件里面有些低級錯誤的話,用測試插件的自動測試就能發現。但是測試插件能夠實現的功能一般比較單一,只能做流水性的測試或者壓力測試。要想用測試插件來發現復雜問題的話,那難度就不一般了,除非寫插件的人本身也是程序高手。

2003年的國內,從來就沒聽說過有哪家公司的測試插件可以做得這么牛逼的,可是顧莫杰寫的那個測試插件偏偏就做到了。

顧莫杰又回答了朱海波和杜俊強幾個粗淺的問題,漸漸地就把程序員們徹底鎮住了。

只有顧莫杰自己心中雪亮:他哪里是真有這么牛逼的本事、能夠比鉆研了數年搜索引擎代碼的程序員都懂行?他之所以可以給出這么多指導性意見,完全是靠初音娘給他的那個VS2050牛逼。

眾所周知,一款軟件越是先進,那么對使用者的軟件操作水平要求就會降低。

這個道理很好理解,就像AUTOCAD每更新一個版本,據統計就能降低繪圖的工程師們在繪圖環節5的時間花費;PS每更新一個版本,也能讓P圖的美工人員手腳快一些(在腦中構思構圖的時間不算,這里僅指畫圖軟件的操作時間)

VS作為程序員們寫碼的工具,2002版和2050版之間的效率也是天差地別的。后世由于有大數據,VS可以把全世界所有程序員們犯過的錯誤BUG統計起來,歸納出一些程序員容易犯的常見病,然后把這些常見BUG集成到VS2050的自動測試插件中去。

所以2050年的程序員們不僅寫的代碼比2002年可讀化程度高得多,連除了邏輯錯誤以外的低級錯誤都幾乎不會犯。時代每進步十幾年,程序員的單位時間平均寫碼效率翻一番,這個定律從古到今都沒有變過。

現在顧莫杰開公司了,VS2050的客戶端部分自然是不能直接拿給公司的程序員們使用的。但是服務器端因為加密的原因,只有顧莫杰一個人可以接觸到,所以哪怕他在服務器端動再大的手腳,都不會有人發現他的金大腿。

如此一來,這個外掛也就開得順理成章,合乎邏輯了。

當然,初音娘在穿越回本時空的時候,因為云端BUG數據庫是存在2050年的,所以初音娘沒法調用后世的數據庫,只能是回到本時空之后從頭開始,在網上各種渠道搜集充實自己。

也虧得如此,顧莫杰借用VS2050來完成自動測試時才沒有表現得太過逆天、沒有超過同時代人類的想象力極限。否則的話,他需要雇傭的程序員人數起碼可以再省掉一大半。

眾人被顧莫杰鎮住之后,隨著解釋的深入淺出,他們心中越來越雪亮,對于是否要在顧莫杰手下長久干下去,也是下了決心。

在互聯網公司,拿著同樣薪水的程序員們,往往有些可以按時下班,而有些卻天天加班。外人或許會覺得:難道是老板不公,給某些程序員加碼的任務很多,而另一些不加班的則是關系戶?

實際這種都是大謬不然的誤解,在所有創新行業中,互聯網公司是最容易按任務量分配活兒、童叟無欺的了。

之所以有些程序員加班多,完全是因為他們寫出來的最初代碼BUG太多,所以后續的反復修正工作量太大,修修補補中就導致了天天加班。

而如果真有本事和那些程序大牛一樣,一遍寫過,只有區區幾個小BUG,不用大規模推倒重來。那完全是可以做到不加班,甚至提早下班的。

你加班,只有兩種可能:

第一,你的原始代碼寫得太爛,后續修改工程量浩大。

第二,和你合作的測試員太爛,不會幫你精確定位問題,所以你的每一個BUG都需要你去反復排查核心癥結所在,導致你需要加班。

外行人不懂這個道理,做程序員的人怎么可能不懂這個道理?

顧莫杰手下那個至今沒有露面的測試團隊,以及顧莫杰親手編寫的那幾款神乎其技的測試插件,居然可以測出主功能都跑不通的代碼里的BUG,這是何等逆天的能耐?

而且還有一個問題是:如果國內真有測試員做到這個水平了,誰還會甘心只作一個測試員呢?須知國內軟件企業并不重視測試,測試員的工資只有程序員的幾分之一,人家有這個能耐,這個診斷眼光,不如自己學一學寫代碼的基礎,轉行去當程序員賺高薪了。

所以,就算他們去百度、去阿貍、去藤迅打工,他們能夠像在顧莫杰這里打工這般,讓自己快速成長么?讓自己的寫代碼能力天天獲益匪淺么?

顯然不能。

顧莫杰借用初音娘的VS2050,換取的就是這么一個效果:如果你為了一時的高薪,想去別人那里打工,或許我留不住你。但你若是一個有追求的程序員,不滿足于僅僅賺錢,還想醉心于寫代碼,有幾分改良這個世界的野望,希望快速提高自己的寫碼技能。那么他們就會被顧莫杰吸引住,如同指南針遇到磁石一樣,被顧莫杰征服。

“顧總!我要向您道歉。”朱海波兩腿一軟,癱坐在沙發上,渾身冷汗淋漓,似乎大病一場那般,“昨天我還懷疑你,還想著你這兒不靠譜,學不到真本事。現在我才知道,我真是有眼無珠!只要你將來不炒我,我這輩子就跟你混,絕對不想跳槽的事情了!”

顧莫杰微微一笑,環視全場,其他幾個程序員也都是這番被他的表現徹底征服了,一副恨不得要斬雞頭燒黃紙表忠心的姿態。

有的還紛紛表示他們認識幾個原本去了百度和阿貍的同事,如今也不順心想謀求跳槽,他們一定賣力幫顧莫杰挖人過來,如果挖不過來就把顧莫杰的牛逼之處向那些前同事們宣揚宣揚,讓他們親眼來看看……

聽了最后那番表忠和幫忙挖角的表態,顧莫杰總算是吁了一口氣。

21世紀什么最重要?人才!

這股王霸之氣,還真是漏得不容易。