从事软件开发相关工作近八年,将自己形容成一名老兵。做开发几年,带团队几年。头几年编码量较大,后几年断断续续写点东西,大多时间以指导别人开发为主。究个人能力而言,不算特别出色的程序员。但因工作性质等原因,对软件系统产品整体的把握和产品设计工作还是有一些心得。这几年的工作,既有项目管理,也有架构设计与分析设计,还有产品设计。对软件开发的感觉相对比较宏观,但也还是有一些方面有较为深入的了解。
今天谈谈软件开发方法,主要原因在于最近观察到新入行做外包开发的小伙子们,似乎都不太注重方法这类知识的积累。个人理解,软件开发是一门技术活,其直观特点应是一门偏工程类的工作。既然为一门工程,必然有方法可循。整个行业发展至今,各个细分领域都有不少经典的理论。如项目管理工程,架构方法,产品设计方法等等。这些理论都是在工程实现的过程中可以借鉴和使用的方法学知识,是提升工程效率和质量的武器装备。软件的实现过程,不仅仅是一个将计算机语言转换为信息系统的过程。它不仅包含了一类信息流,数据流的抽象和组织工作和方法。还是一个用信息科技解决现实需求的过程。
在外包行业,代码的重复堆叠的时间远比创新的结构设计工作要多得多。有时候为了赶工,大量的拷贝和复制成为现实的选择。但随着从业年龄的增长,继续使用这类方法显然不合时宜。这既不利于提高工作效率,也不利于提高软件产品的质量。大量的编码实践是提高软件实现能力的不二选择,但没有软件开发方法的思考与积累,再多的量变也无法发生质变。软件产品千千万,但其组织结构与设计方法却是大同小异。更多的关注软件产品的设计方法而非语言实现形式,才能不断提高软件开发水平。
一名资深的架构师设计或分析师编写代码的速度不一定比从业两三年的小伙子快,但其实现的软件产品质量绝对要比后者好得多!