从专业技术看,工业软件开发其实也不是特别难。关键是思维方式要融合,还要融合得天衣无缝。
我经常讲一个段子:老婆让程序员出去买五个包子;如果遇到卖西瓜的,就顺便买一个过来。结果,程序员买了一个包子回家。他的理由是:看到卖西瓜的了。如果这是个段子的话,下面的故事是真实的:我的一位软件专业硕士毕业的同学让一位程序员在“386”上加上“111”。结果,程序员给他的数是“386111”。
程序员的思维方式与“正常”的思维确实不太一样。正如司机选择路线的逻辑,和步行者不一样。前些日子,我参与一个讨论:如何把大的软件,拆成小的APP。我说:没有必要把大的拆小,只要把其他功能封闭就可以了。在物理世界里,“拆”是更经济的,但在软件的世界里,“封”往往更经济。最近大数据技术之所以称为热点,是因为计算机的发展,让一些“笨办法”变得更有效了。
我曾经要同事写段程序。写完后,他让我检查。看完后,我要求他重写这段代码。他问我:什么地方错了? 我回答说:我看不出哪里错了,但我无法证明你是对的。
这个故事则反应了工业软件的特点:对可靠性要求特别高。这种特殊性,让工业软件的思维方式,与普通软件开发又有所不同。
有位同事,写了3000行程序。调式结束后,我让她把三个全局变量改成两个。这样,整个程序都要重写。我对她讲:这样做的目的,是让检查的人方便。因为做检查的时间,比写程序的时间要长。可谓“一天编码、十天检查”。所以,检查的效率高了,整个研发的效率也就高了。有时候,工业软件往往是“一行代码描述功能,十行代码防错”。因为工业软件往往不允许在使用过程中出现严重的BUG。
为了提高可靠的程度,写软件时要考虑到各种意外的场景与异常。正常的场景只有一个,而意外的场景可能有很多。可谓“一种正常场景,十种异常场景”。而现实中,最难防备的就是“预料之外”的问题。这就要求对工业场景特别熟悉
工业人的思维方式,与学术界差别很大:你以为某个技术可以提高产量,但现实中可能不能用:因为它可能影响质量。你以为某个改进可以提高质量,现实中可能也无法用:因为它可能影响安全、稳定。不理解这些“约束”,就写不出合用的软件。
要解决这些问题,本质上都是要解决知识融合的问题。对于不善于交流、不喜欢讨论的中国人来说,知识融合是个很大的挑战。有时候,与其让别人说明白,还不如自己成为这个领域的专家。其实,我的建议是:至少你要成为半个领域专家,才能去开发工业软件。
来源:微信号 蝈蝈创新随笔
作者:郭朝晖
该作品已获作者授权,未经许可,禁止任何个人及第三方转载。
楼主最近还看过