软件开发中的反馈

现实中的反馈

反馈,即信息的返回。在现实生活中,有很多反馈控制系统,系统的控制器会根据系统的输出进行调整,以期得到正确的输出。

一个小实验

试想,有如下三个场景

  1. 你的前方100米有一瓶水,让你去把水取回来,允许全程睁着眼睛
  2. 还是把水取回来,但是只允许每一分钟睁开眼睛观察一次
  3. 依旧是取水,但是不允许睁开眼睛,全程都闭着眼睛。

那么,会得到怎样的结果呢?

  1. 场景一:可以避开所有障碍,并按照最优路径把水取回来。
  2. 场景二:由于可以睁眼观察,行进过程中会碰到障碍,会走弯路,但依旧可以完成任务
  3. 场景三:两眼一抹黑,也许走一路摔一路,也许方向完全走偏,等到后期才发现完全错误,以至于推倒重建。

关于实验的思考

同样的人,同样的场景,为何结果会有这么大的差异?原因就在于,是否可以用眼睛观察。
结合本文的主题,就是:有反馈和没反馈的区别。我们在有反馈的时候,可以及时根据输出情况调整我们的方向,以避免弯路。
反馈在现实中是如此重要,那么在软件开发过程中又是怎样的情况呢?

软件开发与反馈

软件开发,其实也是一个输入输出系统,用户的需求经过我们的分析设计开发直到成为一个可运行的产品。
然而,在开发过程中,我们对反馈却不够重视。也许会有很极端的情况,我们的产品一直都不符合要求,直到最后死亡。
联想到现实生活中,我们看到的高楼大厦,也是从无到有创造出来的,一般很少有失败的情形,当然开发商跑路的烂尾楼除外。那么,二者究竟有什么差异导致不同的结局呢?
因为楼房在修建过程中,看得见摸得着,每时每刻都有反馈,细小的误差都会在最快的时间内解决。
那么软件开发为什么很难得到反馈呢?盖因软件不可见,只有可以运行的软件才能被我们感知。
在《程序员修炼之道》里有提到曳光弹

注重实效的程序员往往更喜欢使用曳光弹。曳光弹之所以行之有效,是因为它们与真正的子弹在相同环境、相同条件下工作。它们快速飞向目标,所以枪手可以得到即时的反馈。

时间-成本

  • 时间越久,成本就越高
  • 及时反馈,及时发现问题,及时解决

软件开发该如何反馈

敏捷也好,持续集成也罢,从头到尾都强调着反馈。
软件开发中反馈的重要性

后记

这个是在公司内网发的一篇完成任务的帖子,凭记忆复述了一遍,感觉不如原文多矣。文笔变差了~sigh


本博客欢迎转发,但请保留原作者信息
github:codejuan
博客地址:http://blog.decbug.com/