?實(shí)驗(yàn)做完,張小智收到一個(gè)email,是韓磊發(fā)來(lái)的。
“報(bào)告總經(jīng)理,程序化交易項(xiàng)目遇到了一個(gè)困難,您交給我們的風(fēng)險(xiǎn)計(jì)算公式,似乎計(jì)算出來(lái)的結(jié)果不太準(zhǔn)確?!表n磊在郵件中說(shuō)。
“哦?不可能啊?!睆埿≈菍?duì)自己的智商是相當(dāng)自信的。
“韓磊、劉波,速到會(huì)議室開(kāi)會(huì)?!睆埿≈菍?duì)程序化交易項(xiàng)目寄予厚望,容不得它出半點(diǎn)閃失。
擴(kuò)建后的會(huì)議室,多了兩塊大屏幕。
“今天是遠(yuǎn)程會(huì)議,為了保密和安全起見(jiàn),大家都用屏幕開(kāi)會(huì)就好?!逼聊焕锍霈F(xiàn)了一個(gè)簡(jiǎn)化后的頭像,光溜溜的像個(gè)雕像。
“總經(jīng)理,我們反復(fù)檢查了4遍,沒(méi)有發(fā)現(xiàn)其它異常,只能猜測(cè)是風(fēng)險(xiǎn)計(jì)算公式本身需要……改善……了?!表n磊斟詞酌句,怕把總經(jīng)理得罪了。
“模擬數(shù)據(jù)沒(méi)有問(wèn)題嗎?”屏幕里的頭像問(wèn)。
“模擬數(shù)據(jù)是近三年來(lái)的真實(shí)數(shù)據(jù),出問(wèn)題的概率極低。”韓磊回答。
“代碼檢查過(guò)了嗎?”
“由于預(yù)算有限,我們只聘用了兩位高級(jí)程序員,目前只做過(guò)交叉檢查?!眲⒉ㄈ鐚?shí)回答。
“嗯,風(fēng)險(xiǎn)計(jì)算函數(shù)的不會(huì)出錯(cuò)的,看來(lái)這代碼需要重新檢查?!睆埿≈菍?duì)自己的判斷很自信,現(xiàn)在他的智商比以前高多了。
“可是,上次交叉檢查花了3天時(shí)間呢。如果全面檢查,恐怕一禮拜都搞不定?!眲⒉ㄓ悬c(diǎn)著急,他不愿意項(xiàng)目拖延太久。
“嗯,一個(gè)人花10分鐘寫(xiě)代碼,如果遇到詭異的bug,一群人花一天也未必能找到。這樣吧,查代碼的工作我來(lái)找人,一天后如果查不到原因,只能想別的辦法了?!睆埿≈谴蛩阌H自來(lái)查bug,假托找人而已。
自己現(xiàn)在可以做到一心12用,相當(dāng)于12個(gè)高度默契配合的人同時(shí)做檢查和測(cè)試,這效率不是普通的12個(gè)人能比的。
沒(méi)辦法,預(yù)算有限哪。哥還要給這幫人打下手,真是郁悶。張小智無(wú)奈之下,調(diào)出全部源碼,把工作量分解成12份,開(kāi)始彼此配合測(cè)試。
第一輪,單元測(cè)試,通過(guò)!
單元測(cè)試只用了30分鐘就完成了,誰(shuí)讓咱現(xiàn)在有12臺(tái)電腦同時(shí)快速cāo作呢。
第二輪,集成測(cè)試,通過(guò)!
集成測(cè)試也只用了40分鐘就完成了,小菜一碟!
第三輪,代碼走查,通過(guò)!
代碼走查只用了60分鐘就完成了,誰(shuí)讓咱現(xiàn)在具備一目50行的閱讀速度和處理能力呢。
奇怪了,看起來(lái)一切都好,可是問(wèn)題出在哪里了?難道真的是哥的風(fēng)險(xiǎn)分析公式有bug?張小智產(chǎn)生了一絲懷疑。
不行啊,要繼續(xù)測(cè)。
啟用調(diào)試模式!
幸虧當(dāng)初審查軟件功能架構(gòu)的時(shí)候,咱提出必須有調(diào)試模式。本來(lái)是為了將來(lái)增加大量新的公式方便,沒(méi)想到在第一批公式時(shí)就用上了。
一定要用海量的真實(shí)歷史數(shù)據(jù),否則bug無(wú)法再現(xiàn)。
一個(gè)小時(shí)過(guò)去了……
兩個(gè)小時(shí)過(guò)去了……
五個(gè)小時(shí)候,張小智意外地發(fā)現(xiàn)了問(wèn)題所在。
“艸!竟然是數(shù)據(jù)量太大造成的。之前的測(cè)試,最多時(shí)也無(wú)非只有幾十萬(wàn)條數(shù)據(jù)。當(dāng)數(shù)據(jù)量達(dá)到幾千萬(wàn)條時(shí),在做排序時(shí)竟然把內(nèi)存爆掉了。”
張小智覺(jué)得這不能怪編程人員能力不行,說(shuō)到底,一方面是自己給的資源不足,另一方面是程序員沒(méi)有處理幾千萬(wàn)條數(shù)據(jù)的經(jīng)驗(yàn)。
找到原因就好辦了,張小智立即重新了排序算法。
前陣子張小智對(duì)數(shù)據(jù)庫(kù)做了深入學(xué)習(xí),這種大型數(shù)據(jù)庫(kù)的排序算法目前只有極少數(shù)大企業(yè)用過(guò),要不是無(wú)意中看了一篇文考文獻(xiàn),就算他再聰明也想不出來(lái)的。
“嘿嘿,咱的這種算法不但節(jié)約資源,而且并行處理能力強(qiáng),適合擴(kuò)張?!睆埿≈亲隽撕?jiǎn)單測(cè)試后,就把新的算法交給劉波等人了。
“不會(huì)吧?只用了8個(gè)小時(shí)就找到了原因,還重寫(xiě)了排序算法?我們當(dāng)初也打算用調(diào)試模式,可是一想到也許會(huì)浪費(fèi)兩個(gè)星期,就放棄了。”新招聘來(lái)的高級(jí)程序員臉上寫(xiě)滿(mǎn)了崇拜。
“是啊,如果是別的bug,用8小時(shí)找到原因我勉強(qiáng)能理解??蛇@是海量數(shù)據(jù)爆內(nèi)存的bug,我當(dāng)時(shí)已經(jīng)用了最優(yōu)的排序算法,沒(méi)想到竟然還有更優(yōu)的!太牛了!”另一個(gè)程序員也佩服得五體投地。
“徹底服了,到底是誰(shuí)發(fā)現(xiàn)的?排序算法是誰(shuí)寫(xiě)的?他收徒弟嗎?”兩位程序員一旦把自己調(diào)到花癡模式,都顧不得形象了,流著哈喇子追著劉波問(wèn)個(gè)不停。
“咳,我也不知道,是老板找的人。”劉波一句話(huà)就推掉了,他心底也暗自震驚,這老板也太厲害了,隨便找來(lái)的幫手都這么牛,今后自己可要努力了,省得被看不起。
-
屋漏偏逢連夜雨,加密算法的項(xiàng)目,也遇到了困難。
“總經(jīng)理呀,我們都談了三家數(shù)學(xué)研究所了,人家根本就對(duì)幾百萬(wàn)元的期權(quán)沒(méi)興趣?!壁w高成都快哭了。
“哦?為什么呢?”
“一來(lái),能專(zhuān)心研究數(shù)學(xué)的人,都是淡泊名利的,人家對(duì)期權(quán)不感興趣;二來(lái),國(guó)家每年都有專(zhuān)款,人家也不差咱這幾百萬(wàn)元,如果給得太多吧,就又影響利潤(rùn)了。”趙高成解釋道。
“第三個(gè)原因,是研究所負(fù)責(zé)人對(duì)咱們只提供新算法,但不愿意推出算法發(fā)明人的做法很不滿(mǎn),其實(shí)他們更關(guān)心的是能否找到這個(gè)人。如果可以找到此人,國(guó)家愿意出資資助他繼續(xù)搞研究,也許能培養(yǎng)成國(guó)寶級(jí)的人物呢,幾百萬(wàn)元算什么?!?br/>
“呃……看來(lái)是我當(dāng)初自作多情了?!睆埿≈呛苡魫灐?br/>
沒(méi)想到哥今天也淪落這步天地了,以哥的能力,竟然無(wú)法做個(gè)有身份證的人,真是悲哀。
難道,做個(gè)假身份?這其實(shí)是有難度的。
首先是風(fēng)險(xiǎn)大。一旦有人發(fā)現(xiàn)這個(gè)身份是假造的,很多基于此身份的事都會(huì)化為烏有。
舉個(gè)例子,當(dāng)大家發(fā)現(xiàn)專(zhuān)利擁有人壓根就不存在,國(guó)家可以立即宣布該專(zhuān)利收歸國(guó)有。
那么,借用小梅的身份?這可是件笑掉大牙的事,一個(gè)別墅女傭人自學(xué)成才破解了流行的加密算法,連很多老教授都要拜服?
一旦此事成為新聞,會(huì)成為一場(chǎng)災(zāi)難的。
這可是個(gè)大麻煩,難道老子被迫放棄這么肥的一塊肉?張小智陷入了沉思。