寫(xiě)過(guò)代碼的人,相信都對(duì)一個(gè)觀點(diǎn)深有體會(huì)丽声,那就是:No Magic蜕衡。
用中文來(lái)說(shuō)壤短,就是沒(méi)有不用寫(xiě)代碼而實(shí)現(xiàn)的功能设拟。比如你在程序里只寫(xiě)了一行打印“Hello World”的代碼,那么這個(gè)程序就只能打印這么一行字符久脯,只能干這么一件事纳胧,其他的事情都不會(huì)干。再比如你的程序做了一個(gè)表格的界面出來(lái)帘撰,除非你額外寫(xiě)了“排序”的代碼跑慕,否則這個(gè)表格界面是不會(huì)自動(dòng)實(shí)現(xiàn)“排序”這個(gè)功能的。你想讓你的程序干更多的活摧找,那就得寫(xiě)更多的代碼核行。
這個(gè)道理也可以反過(guò)來(lái)理解,如果你發(fā)現(xiàn)你的程序額外實(shí)現(xiàn)了功能蹬耘,但是你沒(méi)有寫(xiě)過(guò)這樣的代碼芝雪,那么就可以推斷:必定有人幫你寫(xiě)了額外的代碼,這個(gè)“人”可能是廠商已經(jīng)寫(xiě)好的框架综苔,可能是開(kāi)發(fā)工具惩系,它自動(dòng)幫你寫(xiě)了一些代碼,也可能是這個(gè)程序的上一任作者如筛,他把代碼寫(xiě)到了隱蔽的地方堡牡。
總之,這時(shí)候你得深信必定有代碼存在哦杨刨。
說(shuō)回上個(gè)例子晤柄,你就寫(xiě)了一個(gè)表格的界面,哎拭嫁,發(fā)現(xiàn)居然它“天生”可以排序可免,那肯定是有人幫你寫(xiě)了額外的代碼了,比如說(shuō)蘋(píng)果公司的Cocoa框架做粤。
乍一聽(tīng),有這樣的事情多好啊捉撮,不用自己干活怕品,事情就自己成了,不用操心啊巾遭。但是一個(gè)優(yōu)秀的程序員不會(huì)對(duì)這樣的事情放手不理的肉康,他一定要找出誰(shuí)幫他寫(xiě)了額外的代碼,至少要了解這些代碼的運(yùn)行邏輯灼舍。他為什么要這樣做呢吼和?答案是:這些不知道的代碼很可能將來(lái)會(huì)出問(wèn)題!
優(yōu)秀的程序員必須掌握他所寫(xiě)的代碼的一切細(xì)節(jié)骑素,這樣他才知道他的程序在不同場(chǎng)景下會(huì)有怎么又的表現(xiàn)炫乓,他才能預(yù)測(cè)他的程序的行為,會(huì)不會(huì)出問(wèn)題。再說(shuō)回排序的例子末捣,當(dāng)前你的表格是可以實(shí)現(xiàn)對(duì)數(shù)字進(jìn)行排序侠姑,但如何用戶在你的表格里面輸入了數(shù)字和字符,那你的表格會(huì)怎么樣排序呢箩做?如果你不懂別人幫你寫(xiě)好的“排序”的代碼莽红,那么就是不知道你的程序會(huì)做出什么行為,說(shuō)不定它會(huì)彈出一個(gè)告警罵用戶不要亂輸入呢邦邦!
這個(gè)觀點(diǎn)安吁,想想其實(shí)蠻好玩的,可以上升到處事哲學(xué)的層面燃辖。
比方說(shuō)這么個(gè)場(chǎng)景:某天柳畔,某一服務(wù)器發(fā)生故障造成公司業(yè)務(wù)停頓,這時(shí)候IT經(jīng)理怒火沖天的來(lái)了郭赐,對(duì)著服務(wù)器工程師劈頭蓋臉就罵:你干的好事薪韩?!我不管你用什么方法捌锭,總之必須在中午前給我解決故障7荨!
這場(chǎng)景看官有無(wú)經(jīng)歷過(guò)观谦?其實(shí)用旁觀者的眼光來(lái)看拉盾,這話妙就妙在:我不管你用什么方法。
最妙的就是三個(gè)字:我不管
領(lǐng)導(dǎo)指出大方向豁状,定好目標(biāo)捉偏,即“火速恢復(fù)故障”,然后就可以“不管”了泻红,坐著等下面的人把工作完成夭禽,實(shí)現(xiàn)目標(biāo)。一定程度上谊路,這位領(lǐng)導(dǎo)也算做了領(lǐng)導(dǎo)工作讹躯,災(zāi)難面前沒(méi)有躲起來(lái)而是直接面對(duì),而且做出了應(yīng)對(duì)的行動(dòng)缠劝。但是想想又好象哪里不對(duì)潮梯。
我就想起了No Magic的哲學(xué),事情要完成惨恭,就必須有人付出勞動(dòng)的秉馏,不是說(shuō)你說(shuō)了一句話,然后喝完咖啡之后脱羡,事情就會(huì)自動(dòng)完成的萝究。事情必定是由于某人付出了額外的勞動(dòng)而完成的免都。如果你不管他具體用了什么方法,那么可能就會(huì)埋下禍根糊肤。
話說(shuō)這個(gè)服務(wù)器工程師也就是個(gè)臨時(shí)工琴昆,他查看了一下服務(wù)器,哎馆揉,原來(lái)是某一個(gè)卡出了問(wèn)題啊业舍,但是這個(gè)服務(wù)器型號(hào)太老了,廠商已經(jīng)沒(méi)有備件換了升酣,上頭又逼得緊舷暮,那就上電腦城某某攤位買(mǎi)一張吧,反正我和檔主也熟噩茄。這個(gè)故障就這么對(duì)付過(guò)去吧下面,反正這家公司待遇也不是很好,下個(gè)月就跳槽罷绩聘。
至于攤檔買(mǎi)的這個(gè)卡好不好用嘛沥割,呃,我也不管了凿菩。