DL刚开始的工作是先看懂其中一个模块的一部分代码,然后需要把
该模块输出的内容再丰富一些。该软件以前的版本输出内容言简意赅,
黑箱一个,即便是程序算错了,用户也难以从那么多不明来历的数中
发现什么端倪——原本这是领导的所谓“高明”之处,用户没时间
判断正伪,那么只好信了,反正盖房子又不是发导弹,差点儿没关系。
但是逐渐地有些较真的用户有意见了,总归用户是搞建筑结构的工程
师,担的风险大,还是希望软件算的尽量透明化,英雄狗熊都得问问
出处,算对算错都搞搞清楚,不希望笃信了软件算出的结果却不幸塌
了房子,直到进了监狱也不明不白到底载在何处。现在领导也算顺应民
意,打破黑箱,也算是良心发现吧。
改别人的代码,有点像改别人的文章,但是又有些不同。打小学
毕业就已经写过不少作文了,也改过一些文章,帮别人改过病句。那
改文章和自己从头写文章,哪个更容易?一般而言还是改文章容易一
些,当然这里又一个隐含的前提,就是读那待改的文章时,没什
么阅读障碍。那么,类似的,是不是改代码比自己从头写代码也要
容易呢?一般而言,跟改文章不同,还是自己从头写代码要容易,为
什么?因为阅读上有障碍——读别人的代码并不是很容易的事情,特
别是这些代码是经过从古到今的N多仁人志士的补丁加补丁、文言加拉
丁文式的类似经过了复杂的化学变化遗留下来的,而如果这些仁人志
士又恰恰是有着艺术家风范,从来都是标新立异各自代表婉约、麻辣、
朦胧、不走寻常路风格的话,那经过这些艺人打造的代码,的确只
能是值得费时费力考证的甲骨文,而非容易拆解理解
的工业品。读这样的代码,就像品味一首被东坡、鲁迅、司马迁、孔
子、莎士比亚等人分别删改过片断歌词、又被诸如流行歌手、京剧
名角、高中低音分段演唱的复杂的歌一样,大脑
需要有在时空中迅速穿梭在情境上立马变化的本领。
这段短期经历,从另一面把DL学过的软件工程学给补上了丰富
的反面实例,在学校学软件工程时,还没有什么开发经验,更没有几
个人合作开发的经历,从课堂上学到的都是应该如何行善,看起来
并没什么感觉。就像未曾到江湖上混的时候,并不知江湖险恶,只要
俺不犯法,学不学法律似乎并不打紧,果真开始见着尔虞我诈、杀 人放
火的时候,这才紧张起来,这才觉得法律这东西还是应该有的,规
矩也是要遵守的,否则乱作一团,谁也不舒服。
这反面实例就像驾校的首堂课,未作司机之前先看到的是一场场
血肉横飞震撼人心的交通事故录像,心存畏惧之后自然就乐于遵守规
矩,当然也希望别人如自己一般做良民。