加班不出活,不是程序员的错

大家知道,现在我们国内写字楼里被称为“白领”的程序员所从事的工作,和印度被称为“软件蓝领”的工人所从事的工作大致是相同的,他们的薪资也大致相同的,但是,在国内程序员要求大专、本科以上的人才能从事这种工作,加班对每一个程序员来说是家常便饭,但拼命加班却并不能按时完成任务;在印度这个工作由高中生来担任,加班被认为是能力低下的表现,不用加班也能按时完成任务。是我们的程序员能力低下?错!大错而特错,加班不出活,不是程序员的错。

难道程序员完不成工作是其他人的错,在不考虑其他例外因素(如懒惰、超负荷安排工作等)的情况下,这个回答是正确的,我认为:程序员不能按时完成工作的根源在需求分析,责任应该由从事需求分析的系统分析员、项目经理来承担。

软件需求是软件开发的基线,软件开发的后续工作(如设计、编码、测试、实施)都是建立在这个基础之上的,如果需求定义没有作好,要想多快好省的完成后续工作,几乎是不可能的。设计人员在设计时面对一个不合格的需求,只能进行发挥,才能完成设计;程序员在面对经过设计人员发挥的设计时,又进行了一次发挥,才完成了编码;到了测试人员这里,由于没有可依据的文档,测试人员根据自己的想象,对经过发挥的编码又进行了一次发挥性测试,结果出现了到用户手中的软件,和用户要求的风马牛不相及的现象,有了把报损开发成报销这样的怪事,返工、加班在所难免。 75%-85% 的返工是由需求引起的。

难道是系统分析员、项目经理没有责任心,不想把需求分析做好?回答是否定的,这个问题的主要原因在于需求本身的性质所决定,首先是需求是分层次的,用户谈论的需求是业务层,而在实现时要知道数据的来龙去脉、业务的处理规则、和其他业务之间的关系、系统的运行环境以及限制约束条件,这些都是功能层次的。让用户把这些都准备好再做软件开发是不现实的。其次是用户需求是变化,变化是需求的属性,就像汽车有轮子一样。最后是需求是不断增加的,随着用户对系统认识的加深,增加新的需求是非常自然的事。

在这里,我想谈谈我对解决这个问题的建议,首先是选好需求过程,需求不明确有许多结构化需求过程模型,可以帮助你逐步逼近需求,其次是搭好系统架构,“没有需求”或用户需求不明确本身就是需求。面向对象设计的分层分区思想、抽象和接口等提高扩展性思想,就是为解决这个问题而准备的,系统分析员要做的只是预测用户将在那个方向进行扩展。最后系统分析员要进行模仿,由信息工程的理论我们知道,相同类型的企业在管理方法上有 75% 是相同的,是共性需求,只有 25% 是个性需求。我们完全可以通过相同类型的其他企业需求获取当前用户的需求。

说得轻松,怎样预测?怎样模仿呢?我一直比较关注需求管理工具的发展,前不久,无意在网上搜到一款国内开发的需求管理 工具: Trufun bacon 。该工具有一个功能就是模板功能,你可以用相同企业成功开发的需求文档作为模板,导入该工具中,其次是确定哪些需求是共性需求,哪些是个性需求,我采用的办法是把需求条目进行网上搜索,然后对搜索结果进行数量、相似性方面的判别 ……… ,这样就可以确定一些共性需求。模板需求条目下没有内容的地方,就是用户需求个性化的地方,也就是需求变化的预测方向。应用这种方法,我完成某个远方用户只在一张纸上写了 20 多个字的需求的软件需求开发(后来用长途电话问用户,用户说就只有那点想法)。最终软件只是在我们实现软件基础上增加了两个小模块,用了一天时间,软件的结构没有作任何改动。如果你是系统分析员,项目经理,为了使经常加班加点,无私奉献的可爱程序员不再白辛苦,你不妨试试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值