开发经验提升三部曲
编写了十多年程序,更换了不少平台,也做了不少项目。总结一下,基本上不停地在学习应用总结这三个循环中逐步提高自己。
简单的说,开发经验的提升,基本上逃不出这三个阶段:
学习库测试库; 应用库解决实际问题; 总结一套库的使用经验,形成自己的二次开发库
以最开始学习C语言为案例吧。Borland C++/Turbo C中提供了一个库:graphics.h。这是一个DOS下,PC平台的图像库。我们当时很多程序需要用到,从课程设计到毕业设计。这是我们第一次经历这三个阶段。
第一个阶段,我们看帮助,看graphics.h头文件,自己编写一些小程序测试graphics.h的功能,了解公共参数,熟悉里面的大多数函数的用法。
第二个阶段,应用库解决实际问题。比如我的一个大作业,要编写程序演示信号的变化情况,这就要用到这个库。刚好我之前因为兴趣,比较熟悉这个库,在编写代码的时候,就只把精力放在信号处理的核心算法上,学习库函数的时间基本上可以忽略了。
通过一系列的开发之后,我有空总结了一下,把自己编写的和graphics.h相关的,比较通用的函数汇集在一起,形成了一个自己的二次开发库,这就进入了开发的第三个阶段,通过这个总结,不但自己把这个库理解得更清楚了,而且积累了学习和应用的经验,在将来的开发过程中大大提高了效率。比如毕业设计中,就有部分是编写一个小型CAD平台,就又需要使用这个graphics.h库。因为我自己已经总结了一套二次开发库,在开发实践中,拿起来就用,在项目编写过程中,主要精力就集中在CAD平台的数据处理上,图像显示部分,已经有成熟的经验,效率大大提高。
毕业之后,进入实际项目的开发。基本上每个项目都会学习一个新的库,因为一般的设备都提供了一套库函数供我们开发使用。也避免不了就要进入上面所说的三个循环:学习库测试库;应用库解决实际问题;积累了足够的经验,慢慢形成了自己的二次开发库,提高了工作效率。当然,有的库简单得很,只能说积累了应用经验,没必要一定要写出一个二次开发库来。
即使后来的平台转换,实际上,也是这样的过程。用ucOS,学习ucOS的运行机制,阅读它的代码,也是一个库的学习过程,然后是应用,总结经验。用VxWorks,依然是学习VxWorks原理,然后应用它。更换到LIUNX平台,也是同样的过程。
当我们成为一个成熟的开发者,这样的学习和应用,就变得简单了。我们换用Visual C++,要学习Windows开发库和MFC类库;我们用Delphi/C++ Builder,就要学习VCL这个组件库;……只不过我们的学习和开发经验丰富之后,后面的学习,因为前面的经验,将变得相当的简单。
我们来总结一下,这三个阶段,其实是不断的在锻炼我们三方面的能力。
学习库测试库——→ 锻炼我们的学习能力。特别是有源代码的库,通过看高手的编写成熟的源代码,你会因为他们的处理方法和机制学习到很多优秀的开发经验。
应用库解决实际问题——→ 提升解决问题的能力。发散多种算法,选择最优数据结构,优化代码提高效率……
总结一套库的使用经验,形成自己的二次开发库——→ 总结与提高的习惯和能力。嗯,一般人没有这个抽丝剥茧的习惯,其实很重要。不管是对应用这套库,还是使自己思维更清晰,解决问题的能力更强,都是非常必要的。
我们的学习能力,因为个体的不同而各有异同,总的来说,不断的学习和找窍门,终究会找到一套自己的快速学习方法。解决问题的能力,概括来说,就三个方面:发散思维的能力,直觉和经验积累。总结与提高,更多的是一种态度和习惯。
我们应该承认个体是有差异的,比如说发散思维的能力和直觉的能力,就可以看出一个人的聪明程度。但不断的经验积累,总结和提高会弥补你的这些方面。前面有介绍我的开发经历,其实感觉自己的资质一般得很,但兴趣,勤奋,比较踏实逐步弥补了我的缺陷,而且,经验的积累,使我很惊讶的发现,直觉和发散思维的能力也在逐步的提高,越到后面,越能在千头万绪中找到解决问题之道,开发效率越来越高。
总结过去,我有一个感慨:勤能补拙是真理,但前提是方法正确。