最近我在照一个标准来实现天然气的计量算法。特别是最近两天我特别的努力,却发现我写的有效代码行数非常非常少。两天的时间(每天大于等于8小时工作时间)写了不到两百行代码,而且每写几行代码都要考虑好多问题,这是我以前没有遇到过的,而且写这几行代码还都不敢轻易将它敲入到编辑器,都是想来想去,想了半天才敢敲入进去。因为我写的程序需要成为一个标准来验证各种参数情况下的计量,而且还要独立出来可以移植到下位机,我们的下位机程序是C语言来实现的,而上位机程序是C++,所以我的算法必须要以C语言来实现,以便直接拿到下位机就能使用。除了这些,因为这是一个标准,没有别的东西可参考,所以每实现一点,我都要自己测验一下正确性。还要考虑算法的优化等问题。让我感觉有一种艰涩的感觉。
新产品的下位机程序是基于ARM7的,驱动程序有现成的,但是我认为最难做的部分是功能部分,它决定了这款产品最终用户是否喜欢使用。而这个内容也是千头万绪,估计是要我来实现,没有任何文档和需求,这都需要从以前的产品中总结,而且并不是领导想象的那样只是移植而已,真是需要理出一个头绪出来,听领导的意思,似乎还很紧急,按照我的设想,这么短的时间是不会出来预定的效果的。所以,我一直在思考接口问题和实现方法问题,上位机程序可能一改先前的配置程序方式,而做成一个实时检测程序,这也需要在设计下位机程序是考虑到怎样以更加高效和顺畅的实现交互。
多种算法的糅合,优化,存储方式,通讯交互方式,越来越多的东西使我不敢下手写程序,因为考虑的少一点,会给以后的工作带来很大的返工,就像我们部门在我没来之前的一个项目匆忙做出来最后由我们全部返工一样。
至少我认识到了不能鲁莽,但是我还没有好的方法来协调和总结这些东西,因为这对于我来说是一项很大的挑战,我从来没有接收到从整体来考虑一个产品的挑战。希望我今年前半年能从这个项目中得到成长。
终于我明白了我们的总工程师为什么总是在夹着香烟,歪着脑袋思考,偶尔敲击几下键盘,而下面的人总是键盘响个不停。
在学习了部分linux的知识后,认识到什么叫简洁和干练。也充分认识到了接口的重要性。在我以前的经历中我认为软件工程可以以另外一种思想来指导,那就是:面向接口编程。我没有很好的思考过这个问题的具体细节,只是在很大的程度上感觉到了接口对整个项目的影响,接口设计不好能让整个工作返工重做。我想我需要好好学习和理解一下设计模式了。
据听说,印度的软件工程师平均一天写20行代码就OK,不知道这是什么境界。希望有一天,我也可以体验一下。