“软件定义一切”、“软件创造价值”,非计算机软件专业出身的其他专业人员投身应用软件开发后,充分发挥自己掌握的所在领域知识和洞见的价值离不开通过实现优秀的软件来解决领域的问题,具备良好的计算机专业的素养能使自己发挥领域能力如虎添翼。花适当的精力来提升自己的软件素养是非常有必要也是值得的。
应用软件研发人员提升软件素养始终要注意的是不能走向另外一个极端,即过多的关注了软件,而忽视不断提升对自身领域问题的分析能力,不断提升自己设计或寻找以及实现或集成最合适的算法来解决领域问题的能力,不然自己真正的武功就会偏废了。
应用软件研发人员提升软件素养的基本出发点是要理解软件的特点。实现的软件用于解决我们问题中的正常情形所做的工作所化的工作可能占不到一半,要想到自己实现的软件可能会运行几年甚至几十年,开始编写代码的时候就要想到,还要把大量的精力花在如何适应和容错异常情形,花在如何让别人看懂和修改自己的代码上,如何适应功能的扩展,如何适应问题规模的增长。从编写产品代码的第一天起,头脑里面就要有这些意识。
应用软件研发人员提升软件素养的更高一点的要求是能够用专业的工具和专业的思路来提升软件开发的效率和质量。其中非常基础也非常重要的是要学会使用版本管理工具,特别是现在已经有了能够支持分布式版本管理的Git和Hg,对于有效控制团队协作软件开发过程是非常有效的工具。其次,是要理解编码构建之外的大量工作的价值,特别是设计和测试的价值,希望高级别的应用软件开发人员花在编码构建上的时间最多不要超过50%。第三,是要避免自己重新或从头造轮子,平台方面要多利用公用组件,学会给平台提需求,应用方面要多复用已有的好的组建;目前的软件生态环境下,大量的开源软件是一个巨大的宝库,除了去使用,还可以积极的去参与到一些开源项目中去。
最后一点,应用软件研发人员也要关注新技术。
今天专题交流的内容为自动化系统的演化——面向“网站即软件”和通信、数据封装新技术在数据采集中的应用。希望应用人员在理解这些新技术以后继续专注于领域问题的解决。