软件开发中的老问题——沟通
       在软件开发中有这样的一个法则( Brook 法则):向进度落后的项目中增加人手,只会使进度更加落后。我们经常可以听到“ 1+1>2 ”的说法,但从这个法则中可以知道,在软件开发中1加 1 是小于2的,甚至是小于 1 的,这是为什么呢?其中主要的原因就是沟通,项目开发人员之间的相互沟通产生了额外的时间开销,甚至可能会因沟通而产生新的问题,如新加入的开发人员因对问题理解不全面而导致产生设计上的重大缺陷,使得软件开发变得更加困难。
       在《人月神话》中论述了古代巴比伦塔项目建设失败的原因:缺乏交流,以及交流的结果 — 组织。 “ 因为左手不知道右手在做什么,从而进度灾难、功能的不合理和系统缺陷纷纷出现。 ” 由于对其他人的各种假设,团队成员之间的理解开始出现偏差,最后导致的项目的失败。这里还提到了“组织”建立的几个要素,这些都是非常有意义的,其中有一点给我的印象最为深刻:团队组织的目标是为了减少必要的交流和协作量。当你联系到自己的工作中时,你会发现这种描述是多么的精准,既然沟通会产生额外的代价,那么首先就需要有一个较好的组织,一个较好的组织会减少很多不必要的沟通,减少必要的交流和协作量,也即提高了工作效率。
       “沟通,沟通,还是沟通。”每个成熟的程序员或软件项目管理者总会反复地强调这样的问题。那么沟通会有那些形式呢?一般的形式有:非正式、常规项目会议,会上进行简要的技术陈述、共享的正式项目工作手册,以及电子邮件。其中关于项目工作手册我觉得是最为重要的,特别是在大型项目开发中,那是必不可少的,项目工作手册使得沟通在每个项目开发人员中有形无形地在进行着,项目工作手册记录了所有跟开发有关的内容,它保证了项目得以顺利有序地开发。
       对于沟通,我觉得还有一种形式是最容易被忽略的,那就是培训,说到培训,一般认为是对新员工的培训,我觉得可以把培训定义得更广泛些:一种学习上的交流。一个开发团队也都有一个相互磨合过程,一个促进磨合的方法是定期进行培训(交流学习),如开发经验的交流、对新技术的理解、工作方式的讨论,把培训做成一种双向交互式的,而非灌输式,应使得大家受益,大家都能够在培训中得到进步。
       沟通过程中要注意不要陷入互相扯皮推诿的境地,一个有效的沟通应当是使得开发目标更加明确,开发人员之间的协作更加有效地进行。
       最后我们再来看一下进度落后的解决问题,增加新人手,因需要更多的沟通,产生了效率问题,所以在面对这种问题时,我们要适时考虑进度的重新安排,不要把希望寄托在更多的人力上,在增加人手后,最为紧要的问题是如何提高沟通效率,特别是刚开始时应当把沟通列为最为紧要的问题,把因增加人手后产生的负面效应降为最低,我想如果有进行如此地充分周全的考虑和实践是可以达到 1 加 1 大于或等于 2 的效果的,其实,在很多种情况下能够大于 1 就已经是很不错了。

软件开发中的老问题——沟通相关推荐

  1. 软件开发中接手老项目应该如何快速上手

    Author:3# 一个专注于web技术的80后 核心就是一句话:软件开发要知其然知其所以然. CSDN@3#,CSDN官方首发,`3#原创 博客:

  2. 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践

    作者:sherrywasp https://www.cnblogs.com/sherrywasp/p/9436623.html "描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的 ...

  3. 软件开发中“埋雷容易,排雷难”

    软件开发中"埋雷容易,排雷难" 先讲一个亲身经历的故事,在支持一家机顶盒场景的项目中,由于初期客户不信任,或者是故意刁难,新平台的引入没有安排有经验的老员工或骨干,直接安排刚毕业的 ...

  4. 汝之蜜糖,吾之砒霜— 聊聊软件开发中的最佳实践

    文章来源:https://www.cnblogs.com/sherrywasp/p/9436623.html 作者:sherrywasp "描述一个事物,唯有一个名词定义它的概念,唯有一个动 ...

  5. 论软件开发中的可信赖的工作

    中大型软件开发,免不了团队开发,团队开发就少不了分工合作.在团队开发中,当然每个人的能力都很重要,但是我认为可信赖的工作是团队开发的首要条件,也是团队开发存在的基本保证.没有可信赖的工作,就没有团队分 ...

  6. 软件开发中项目经理有那些职责

    搜集了一篇软件开发中项目管理的文章,大家看看 当项目繁多的时候,需要规范,并且定义到细节,只有这样,才能支持大规模的开发.     PM非常重要,PM的能力将直接导致项目最后的质量.       本文 ...

  7. 软件开发中的10个认知偏差

    最近,在和同事们讨论产品经理职责的时候,聊到了关于产品的定义,如果不能准确定义"产品"的时候,可以考虑其必要条件,即可没有用户的产品肯定是没有意义的.产品有了用户, 必然存在用户与 ...

  8. 低代码平台在ERP软件开发中的作用

    很多人认为低代码开发平台的出现颠覆了传统的软件开发模式,对软件开发行业造成冲击,其实低代码开发平台的出现只是提高了软件开发的效率,并不是要颠覆软件开发的模式.低代码平台在ERP软件开发中的作用还是比较 ...

  9. 【转】工作分解结构在软件开发中的应用

    1 概述 通过对项目管理的系统学习,我个人对于工作分解结构在软件中的应用有很深的感触,对于工作分解结构在软件开发中的应用有一些个人的看法和见解. 首先我们看一下项目分解结构的定义,工作分解结构是进行范 ...

最新文章

  1. 一站式了解多模态、金融、事理知识图谱构建指南 | AI ProCon 2020
  2. POJ 3278 Catch That Cow(BFS)
  3. Java中的synchronized与volatile关键字
  4. web app指南之构建html5离线应用
  5. HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
  6. centos安装Ambari
  7. 动态规划--凸多边形最优三角剖分
  8. 编程语言注释方法大全
  9. Android的Notification研究
  10. vue项目 一行js代码搞定点击图片放大缩小
  11. tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时
  12. java kafka 拉取_java获取kafka consumer lag
  13. nginx基础概念(100%)之connection
  14. 夺命雷公狗---Redis---3-Redis常用命令
  15. n 中选 m —— 随机采样的艺术
  16. java 10阶乘_java编程求1到10的阶乘
  17. 苹果CMS 改造四合一聚合影视+聚合直播+在线小说+短视频+在线音乐+电视直播
  18. java 龙卷风_龙卷风在大约37000个请求后停止响应
  19. 操作系统中的信号量及P、V操作
  20. 山东师范大学计算机考研资料汇总

热门文章

  1. 阿里P7大牛手把手教你!mysql数据库应用案例教程
  2. android 监听电话状态 来电 接听 挂断
  3. Python爬取豆瓣Top250的电影
  4. C#总是报未能加载文件或程序集
  5. 普渡大学计算机科学最新消息,普渡大学计算机系统硕士排名,真心小心考察
  6. this.data与this.setData
  7. 全网最全可视化大屏模板
  8. 【编译原理】东北大学2022春季大作业之作业一【40%】编译一个TEX项目【已更新】【命令行编译】【texworks编译】【回答了一些问题】
  9. 【摘】卖程序的小女孩
  10. EG网关网口连接西门子PLC应用案例