小Printf的編程故事:第二章
《小Printf的編程故事》第二章:故事中的我終于和小Printf相遇了。他們之間,會(huì)發(fā)生些什么呢? - 上一章
第二章
就這樣,我開(kāi)始滿世界地演講,教別人怎么去做一些有時(shí)候我自己都沒(méi)有做過(guò)的事情,不過(guò)大家似乎都相信了我是一名真正的程序員,而理由正是我做的那些與編程沒(méi)有太大關(guān)系的事。
有一天,我參加完一個(gè)會(huì)議準(zhǔn)備回家,但卻被困在了機(jī)場(chǎng)。我憤怒地在終端上打字,突然聽(tīng)見(jiàn)有一個(gè)奇怪、柔和的聲音問(wèn)我:
“你能不能,為我設(shè)計(jì)一個(gè)系統(tǒng)?!”
“什么?!”
“為我設(shè)計(jì)一個(gè)系統(tǒng)!”
這樣的請(qǐng)求讓我吃驚,抬起頭想看看是誰(shuí)提的。我看了看四周,發(fā)現(xiàn)有一個(gè)小孩站在不遠(yuǎn)處。他說(shuō)自己渴望成為一名開(kāi)發(fā)者,還讓我叫他“Printf”。我覺(jué)得這個(gè)名字有點(diǎn)愚蠢、花哨。他的樣子大概是這樣的:
“我還不太懂計(jì)算機(jī),但是你看上去是個(gè)行家。我想編寫(xiě)程序,通過(guò)博客讓大家都知道,用上我寫(xiě)的程序。求求你,為我設(shè)計(jì)一個(gè)系統(tǒng)!”
這真的是一個(gè)令人驚訝的請(qǐng)求,當(dāng)時(shí)我已經(jīng)有20個(gè)小時(shí)沒(méi)有睡覺(jué)了,有點(diǎn)不確定自己聽(tīng)清楚了他的話。我跟他說(shuō),開(kāi)發(fā)系統(tǒng)很困難。我不清楚他希望系統(tǒng)實(shí)現(xiàn)哪些功能,如何處理異常,應(yīng)該支持多少個(gè)讀者,在哪里部署,所以在這種情況下,我沒(méi)辦法給他設(shè)計(jì)一個(gè)良好的系統(tǒng)。
“那個(gè)沒(méi)關(guān)系。只要給我設(shè)計(jì)一個(gè)系統(tǒng)就行。”
沒(méi)辦法,我給他畫(huà)了下面這個(gè)架構(gòu)圖:
他看了看圖,搖頭說(shuō)道:“這個(gè)系統(tǒng)還不夠好。再設(shè)計(jì)一個(gè)吧”。我照做了:
并給他逐一介紹了背后的原理。
我這個(gè)新朋友禮貌地笑了笑。“這并不是我想要的,它太復(fù)雜了,很多功能都不是我需要的。”
我有點(diǎn)不高興,我可是考慮了冗余、監(jiān)控、備份、緩存、負(fù)載、外部支付、故障切換備份、快速部署等諸多因素。光是這份系統(tǒng)設(shè)計(jì),我就能收一筆不小的咨詢費(fèi)!終于沒(méi)了耐心,我就隨便給他畫(huà)了張圖:
然后補(bǔ)充道,“這就是你要的設(shè)計(jì),你所要的系統(tǒng)就在那個(gè)黑盒子里”,希望這個(gè)亂七八糟的答案會(huì)讓他離我遠(yuǎn)點(diǎn)。但是他的回答再次讓我感到驚訝:
“這就是我想要的設(shè)計(jì)!”
就這樣,我認(rèn)識(shí)了小Printf。