软件开发小结2009

通常程序员比较关注程序的执行效率,愿意花费大量精力用于算法和优化代码。
这很好,对于一个成熟的产品或专业的开发生涯来说,这是很好的专业素养。
今天我要讨论的是如何加速软件开发过程的进行,达到高效的目的。

从事软件开发已经六年多了,今天也就来总结一下。
主要可以归结到下面几点。

1、目标明确
理解客户的需求
软件开发的目的是为了满足客户的需求,因此,客户需求是否正确理解成了项目成败的关键。
试想,如果我们不清楚自己要实现的程序功能,或者不清楚客户所需要的功能,那么我们的工作将会失去方向,或者走了弯路。
这种情况,在刚开始工作的开发人员当中,会时常发生,但究其原因,也通常是由于不够成熟,遇事变得仓促造成的。
理解需求有时候并不容易,但个人认为,同客户的充分沟通是很重要的。特别是,在了解客户的实际业务环境后,设身处地的考虑一下,
如果是你,你会如何得出需求。同时,任何不清晰的地方,好的做法是把它记录到文本中,找机会,同客户进行沟通,确认。

本人比较推荐的做法是, 把需要实现的功能点采用思维图或者记事本的形式进行记录,并经常更新。即使小的项目,也有必要通过书面来表达。
同客户的确认结果,可以采用邮件或书面的形式登记下来。这可以让你专著的投入到当前进行的事情中,而不要老在回忆之前的讨论结果。

对于一定规模的项目,在项目开始的最初有必要提交可运行的demo版本给客户试用。这个demo版本不需要真正实现功能,但需要能清晰表达客户的需求点。
客户在试用后,会更容易对现有的程序功能进行修正。从而达到理解客户需求的目的。

重视你的客户
人与人一切交往的基础,是相互尊重。为了更好的完成开发目标,我们需要为客户考虑一个好的沟通环境。比如,时间安排,DEMO程序,书面的记录总结等等
这些要尽量让你的客户参与进来。

理解需求,也是你帮助客户产生新的需求的过程。别担心,新的需求会给你增加这个项目的工作量,相反,新的需求,可能会让你成为下个项目的合作者。
关于这个话题,比较大,但如何对待层出不穷的需求,就又是一个新的话题了。

2、合理的步骤
预估风险
假定一个新的需求是一个新的挑战,那么在我们的职业生涯中,很多时候,是需要面临新的挑战的。
前面我们确定客户的需求是明确的,那么这里的风险是来自软件实现本身。
我的做法是对新的技术,或新的难题,先建立一个模型。模型成立后,进行实际演练。这种演练就是尽量模仿实际环境下,软件所需要实现的关键动作。
我们不需要对已经证明的功能,每次实现。 先进的程序设计方法,已经为我们提供了各种测试关键步骤地方法。一个简单的模型,通常也是最高效的。 也更容易发现问题的所在。
对于一定规模的项目,是需要一个demo程序进行评估的。同时,开发人员也为正式产品开发的进行画好了蓝图。从敏捷开发的角度,这也是重构的开始。
战略层面
需求理解-〉预估风险-〉制定步骤-〉有力执行-〉总结
宏观上,我们不需要太究于具体细节,一旦关键技术难点得到解决方法,那我们就可以按照蓝图开始执行了。

3、有力的执行
思路清晰
不清楚自己手头上进行的项目吗?还是不清楚这段代码到底做了什么?
很多时候我们精力无法集中,那么运动是这时候最好的办法。离开办公室,出去活动一会, 忘记刚才的工作吧。
经验证明,暂时的忘记,是有效的恢复清晰思维的方式。不是说,很多重要的发明都是在人们无意中得到的吗?

代码可读
软件的文档大家听说了不少,但很少有人关注针对代码的文档。其实,对开发人员来说,可读性强的代码才是可维护的代码。
当然,你的用户并不了解这些。但并不表示,你以后不需要对代码进行更新。要知道,好的软件,是不断更新的软件。当你一段时间后,重新找回代码时,它还是你的吗?
从今天开始,把你的代码当作你的作品吧。如果把它比作文章,这会是相当优美的作品,而且是可执行的。

战术层面
上一篇讨论过“解决问题的更好途径”,这里可以用来说明,在具体问题上,我们可能采用的一些思路。
解决问题的方法有千万种,但问题解决和效率是这里要关注的。这里就不重复叙述了。

4、好的装备,擅长的工具
也就是提高效率的物质条件。
这里,微软提供的IDE为我们提供了优美的解决方案。
另外推荐的工具有:
文本处理:ultra edit (通常我用于编写asp代码、记录项目需求,提供了很好的语法显示和文字编辑功能)
需求理解:MindManager (思维图工具,可以形象地表达树状结构模型。可以用来描述系统功能点,以及实现上的任务细化)
备份工具:winrar脚本 (winrar命令行提供了很好的压缩多个目录到一个文件的功能,同时提供了增量、加密等功能。准备开发一个图形界面,方便大家了解它)
信息管理:outlook (日程表是我要强调的功能,可以作为一个私人小秘书使用哦

购买、定制 | QQ | 留言 | Top
page updated: 2009-02-16