正文
“这些都不重要。就给我设计一个系统就好。”
好吧,那么我就画了一个系统的架构图:
他看了看,然后说:“不行,这个系统还不够好。给我再做一个吧。“
然后我就又做了一个:
接着我跟他简要解释了一下这个系统是如何工作的。
我的新朋友礼貌地笑了笑,说:”这不是我要的系统,它太复杂了,好多功能我其实都不需要。“
我听了感觉气不打一处来啊,我可是考虑了冗余、系统监控、备份、缓存还有很多其他的机制,来降低负载,减轻额外的处理器负担,并且还能对系统进行有效保护,失效备援,易于部署等等。要知道,如果平时我给人拿出这种方案,那可是要收咨询费的!好吧我失去耐心了,然后我就画了下面这个图:
然后我还补充说:“这就是你要的设计。你要的系统就在这个黑盒子里。”我希望这个设计方案能让他放过我。不过我听到了一句非常意外的回答:
“没错!这就是我要的系统!”
这就是我和小 printf 初识的故事。
第 2 章
我迅速地对小 printf 做了点调查。发现他之前写的东西都是些小程序,基于表单的小网页,还有一些无关紧要的命令行工具。这些东西平淡无奇,就算是做出来了也很快会被人忘记。
然后突然之间,他就开始做包含好几个模块的大项目了。这个项目要用到 sockets,要能访问本地硬盘,而且还要和数据库交互。程序刚一做出来的时候,小 printf 还觉得很神奇。但是即便如此这个项目还是差强人意。
这个项目还需要重构,需要更细致的测试,需要更完备的文档,需要更好的包装和分析。项目上线已本来应该正常运行,但是某一天早上,它崩溃了。
接下来就是各种崩溃,崩了又崩。
系统配置不对,日志界面也不再滚动,磁盘速度忽快忽慢,网络不定时抽风,bug 开始各种出现,系统编码也让人匪夷所思,数据库需要清理,事务也被挂起,证书过期,各种漏洞开始暴露,系统监测则什么动静也没有。
系统开始变成一锅粥了。
他对我说:“事实上我什么都不懂!我本应根据我的需求来做判断的。我太想做一个完美的系统,花了这么多的时间,结果却是‘磨刀误了砍柴功’。当然,我还是知道这个系统的美妙之处的。“
于是一天早晨,他决定离开办公室。他对着一大堆电脑指示灯说了「再见」。他离开是为了要看看,除了他那乱糟糟的服务器之外,软件的世界还能给他提供些什么好办法来实现他的系统。
如果照现在的情况,只会是日志继续不停地累计,直到硬盘存爆了为止。
第 3 章
他来到了一个工作区,想找个经验丰富的人指点迷津。
他找的第一个人是一个超级自信的高级工程师,他看上去地位很高的样子。
”啊,来向我取经啊!你可找对人了,我可是这个领域的专家!“这个人说。
”专家?”小 printf 问到,”这就是说你什么程序都能写,什么程序都会写?“
”那当然!“专家回答到。他补充说:”总的来说,我只写那些值得写的程序。我可不写那些没意义的东西。我能写但不写的那些程序,都是因为太简单,所以不劳我动手。“
”啊,那你能帮我看一下我的系统吗?”就在小 printf 开始阐述他的系统的时候,这位专家打断了他:
“抱歉,我真心觉得这么做没什么意义。”
“为什么?”
“因为经验。我善于编写我善于的程序,我给我善于编写的东西编程。我要严格限制我只做我擅长做的事情,这样才能变得更好。我管这个叫做‘职业安全’,这就是程序界的适者生存原理,而且这一行就是这么玩的。“
”那你为什么不能帮我呢?“
”好吧,你看,如果我花时间帮助了你,那么我就会让我的技术自我投资的方向发生分散和偏离——这对我来说是失策。对于你来说,最好的学习方法就是我当年做的那样:通过痛苦的努力来找到解决的办法。这有助于锻造你的个性。“
”但是这样效率好低。“
”好吧那你就去学校学,你也可以自学。但是无论哪种做法,都只是把那些想不劳而获的懒人踢出去,让真正愿意踏实学习的人留下来。如果不是这样的话,那我坚持恪守的价值观就会随之崩溃。“
”那你觉得跟人合作,或者是你的同事能不能帮助你?“
”并不能。我工作状态最好的时候其实是我一个人独自待着而且没人打扰的时候。每次我被迫和别人一起工作的时候,几乎可以肯定我们做的东西没法凑到一起。最后只能是我怒了,然后把他们写的东西又自己重新再写一遍,然后这才能行。“
小 printf 对这个专家不愿帮助别人的态度感到非常意外,而且也对专家描述的周围的人能力如此之差感到很困惑。专家把自己的全部视野只集中在自己擅长的领域,只解决自己能解决的问题,这听上去有点儿悲哀。
”我明白了…我觉得你别给我帮助的话就最好了。“ 小 printf 说到。
”你什么意思?“自带高大上光环的专家似乎感到了自己的价值观受到了挑战。”你是说我的做的工作毫无趣味可言吗?“
”哦,并不是,你做的工作很有趣。不过从你的眼光中看来,我只是一个烦躁而讨厌的家伙。我是来寻求帮助的,不是来找罪受的。“