写过代码的人,相信都对一个观点深有体会,那就是:No Magic。
用中文来说,就是没有不用写代码而实现的功能。比如你在程序里只写了一行打印“Hello World”的代码,那么这个程序就只能打印这么一行字符,只能干这么一件事,其他的事情都不会干。再比如你的程序做了一个表格的界面出来,除非你额外写了“排序”的代码,否则这个表格界面是不会自动实现“排序”这个功能的。你想让你的程序干更多的活,那就得写更多的代码。
这个道理也可以反过来理解,如果你发现你的程序额外实现了功能,但是你没有写过这样的代码,那么就可以推断:必定有人帮你写了额外的代码,这个“人”可能是厂商已经写好的框架,可能是开发工具,它自动帮你写了一些代码,也可能是这个程序的上一任作者,他把代码写到了隐蔽的地方。
总之,这时候你得深信必定有代码存在哦。
说回上个例子,你就写了一个表格的界面,哎,发现居然它“天生”可以排序,那肯定是有人帮你写了额外的代码了,比如说苹果公司的Cocoa框架。
乍一听,有这样的事情多好啊,不用自己干活,事情就自己成了,不用操心啊。但是一个优秀的程序员不会对这样的事情放手不理的,他一定要找出谁帮他写了额外的代码,至少要了解这些代码的运行逻辑。他为什么要这样做呢?答案是:这些不知道的代码很可能将来会出问题!
优秀的程序员必须掌握他所写的代码的一切细节,这样他才知道他的程序在不同场景下会有怎么又的表现,他才能预测他的程序的行为,会不会出问题。再说回排序的例子,当前你的表格是可以实现对数字进行排序,但如何用户在你的表格里面输入了数字和字符,那你的表格会怎么样排序呢?如果你不懂别人帮你写好的“排序”的代码,那么就是不知道你的程序会做出什么行为,说不定它会弹出一个告警骂用户不要乱输入呢!
这个观点,想想其实蛮好玩的,可以上升到处事哲学的层面。
比方说这么个场景:某天,某一服务器发生故障造成公司业务停顿,这时候IT经理怒火冲天的来了,对着服务器工程师劈头盖脸就骂:你干的好事?!我不管你用什么方法,总之必须在中午前给我解决故障!!
这场景看官有无经历过?其实用旁观者的眼光来看,这话妙就妙在:我不管你用什么方法。
最妙的就是三个字:我不管
领导指出大方向,定好目标,即“火速恢复故障”,然后就可以“不管”了,坐着等下面的人把工作完成,实现目标。一定程度上,这位领导也算做了领导工作,灾难面前没有躲起来而是直接面对,而且做出了应对的行动。但是想想又好象哪里不对。
我就想起了No Magic的哲学,事情要完成,就必须有人付出劳动的,不是说你说了一句话,然后喝完咖啡之后,事情就会自动完成的。事情必定是由于某人付出了额外的劳动而完成的。如果你不管他具体用了什么方法,那么可能就会埋下祸根。
话说这个服务器工程师也就是个临时工,他查看了一下服务器,哎,原来是某一个卡出了问题啊,但是这个服务器型号太老了,厂商已经没有备件换了,上头又逼得紧,那就上电脑城某某摊位买一张吧,反正我和档主也熟。这个故障就这么对付过去吧,反正这家公司待遇也不是很好,下个月就跳槽罢。
至于摊档买的这个卡好不好用嘛,呃,我也不管了。