为什么软件开发,人多,事少,还会工作量大?

  本文所要分享的是软件开发过程中,亲身经历过的“怪现象”。为什么说怪呢,人多力量大,似乎才符合常理,但是往往在软件项目开展的过程中会出现人多、事少、工作量大的情况,这跟我们以往的认知大相径庭。

  首先,要解释下标题的意思。人多,指的是同一个项目团队、同一个小组或者同一个部门的范围内;事少, 指的是做出的效果,真正的产出少;工作量大,指的是,工作时间长,工作忙,实际的投入大。

  其实,人多事少工作量大,说白了就是效率低,而影响效率的,原因千万种,有人员问题、沟通问题、流程问题、管理问题、技术问题,下面零散地列举下博主亲身经历过的问题:

文章基本纯文字,需要空闲的时候,精心阅读哦。

● 一线工作人员,没让专业的人做专业的事,导致效率低
  没让专业的人做专业的事情, 是工作开展的大忌,在工业上,早已证明了一切,在工厂生产中,工人流水化作业,一个人只专注一件事情,会越做越熟练,越做越快,越做效率越高。
  在软件开发分工越来越明确的今天,让后端人员抢前端人员的饭碗,去写网页、样式,效率能高吗?让后端人员去抢DBA的饭碗,去做数据库优化,效率能高吗?
不专业的人做不专业的事情,可能和公司的发展历程、组织架构、人员规划有关;也可能和任务安排有关。
公司发展初期,养不起很多专业的人,可能更需要“全栈”工程师,啥都一把捉;公司发展的过渡期,有点钱了,也意识到了要让专人做专业的事情,但是人员还没招齐,那没办法,你也得兼职着做各种各样的事情。如果公司有钱了,发展也成熟了,不是属于以上两种阶段,在IT组织中,连前端、后端、测试、架构、DBA、网络、服务器运维、技术支持、安全、产品,这些职能都没区分好的话,就会对工作效率有影响。IT一线工作人员,每个坑位,都需要一颗专业的螺丝钉。

● 开发人员不注重代码质量,导致后期返工,导致效率低
  有时候,快即是慢,对于经验不足或者习惯不好的开发人员,开发前期,被迫或者自己没意识到,为了追求进度,逻辑没考虑周全,没做好自测,代码能跑起来就算完成任务了,表面上任务完成得很快。但是在项目后期,测试阶段,问题大规模爆发,甚至要返工,由于测试后期,离自己写代码的时候,可能隔了一段时间,有的东西自己都忘了,再回过头去重新“熟悉”,效率能不低吗?更为严重的后果是让项目进度不可控。因此,就算进度再紧张,也顶住压力,必须要做最基本的测试,再进入下一个任务点。

● 个体组织人员膨胀,出现沟通成本大的问题,导致效率低
  沟通成本是人员膨胀后,暴露出来的首要问题。
  举个简单的栗子,很多公司都有每天晨会习惯,如果一个组有5个人,开晨会汇报工作,平均一个人汇报2分钟,就需要10分钟,现在一个组增加到10个人,一人汇报两分钟,都要20分钟才能汇报完。时间就这样过去。
  再举个栗子,30人/天的工作,分给2个人做,可能需要15天,共耗费30人/天,但是分给5个人做,6天能完成吗?
  信息在沟通、传递的过程中,可能会“失真",你想的,不一定能100%说出来,你说出来了,别人也不一定能100%理解,而且每个人的理解能力、知识体系都不一样,理解起来容易产生偏差,产生偏差就容易做错事情。
  因此,如果人员出现膨胀,要以项目为单位,进行合理的项目拆分、人员拆分。同一个“小项目”最好不要超过4个人负责。沟通的时候,推荐使用口头+书面+复述,减少沟通过程中的信息失真。

● 上、下属之间相互不信任,做事有阻碍或者导致重复工作,导致效率低
  上下属相互信任是一切工作的基础。如果上级不信任下属,不敢授权给下属,凡是都要自己过一遍,而上级往往是一对多的关系,这个时候,工作瓶颈会出现在上级身上;如果上级不信任下属,搞一堆监督机制,为了下属不做错事情,又让别人同事过一遍,又要耗费额外的成本,劳民伤财,而下级得不到信任,做事受阻,久而久之就会畏手畏脚,很难独当一面,或觉得自己有能力没地方使,干脆走人。
上级应该充分信任下级,放心授权让下级去做事情,但这些都一个前提就是要有一个较好的软件管理过程,包括开发环境和测试团队和在完成任务的过程中进行一些辅导和进行重要节点管控和监督。
  上级不信任下级,经常碰到,而下级不信任上级也很要命。程序员是很有个性的工种,不好管理,往往特别多想法。就好像车轮子陷入泥潭中,上级说车子往前推,有的人又说,往后拉,各自发力,估计车子永远都摆脱不了泥潭,还谈何效率?

  因此,如果有意见,前期可以提,但是解决方案一旦定下来,应该上下一心(即使有意见也埋在心底吧),朝着目标一起去努力。

● 不同部门之间沟通存在隔阂与障碍
  软件开发过程中,在IT范畴内,不同部门难免有交集,例如开发与运维、开发与测试,不同岗位承担的责任、掌握的知识体系、考虑问题的角度往往不一样,导致处理事情受阻。
  举个栗子,有一次,开发人员为了验证某个问题,需要运维人员协助重启某个站点。对于开发人员来说,这个站点,用的人比较少,而重启也是一瞬间的事情,风险为基本为0,但是由于运维人员掌握的知识体系不一样,怕重启了会造成很大影响,甚至害怕出了问题要自己承担责任,明明可以瞬间操作解决问题的,又要等到中午或者半夜三更没人的时候才敢重启,效率就是这样降低了。这个时候,需要运维人员,去学习一下相关知识,或者引入新流程,例如,重启站点,需要某个专业人士口头同意,即可立即执行。
  因此,不同部门之间的人,应该互相学习,才能更好地沟通;做事情,尽量做轻量级的流程化、标准化。

● 上级工作安排不到位
  上级工作安排不到位,也会导致工作效率低。有时候会有这种怪现象,可能很多事情没做,但是下面的人没事可做;或者有的人很忙,有的人很闲。
软件开发分工,不像搬砖头,一人搬一车就行了。软件开发,工作量化本身就是一个很难的地方,如果项目经理没有做项目计划,没有做工作点、任务点拆分工作就很难安排到位。特别是刚刚从程序员转型做项目经理的人,过程性思维,不会对项目做整体的把握、整体规划,想到哪里就做到哪里,想到什么就分配什么工作,最后一团糟,一会把下面的人累死,一会又让下面的人闲死。

● 需求传达不明确或者理解有偏差导致返工
  探知客户内心潜在的需求很难,而需求确定后,信息传递的媒介,往往是需求文档。语言文字这种东西,传递的过程中容易失真,丢失原有的意思。这种情况尽可能比较,需求传递跨越太多层次才到最终到达开发人员身上。如果是这种结构,每层信息丢失2%都不得了,做错了,返工的效率和代价就十分巨大。
很多时候往往是这种传达方式:


我们需要的是这种方式:


最终的研发人员,应该接受到需求后,应该是反向和用户、产品经理、研发经理沟通,最终才能确定的。

● 技术架构过于落后、过于复杂
  先进的技术架构、统一高效地开发标准,是系统建设的基石,会大大提高软件的生产力,让开发人员专注于实现业务、商业逻辑,做更有价值,更高产出的事情。
  当你还在纠结页面兼容性,纠结这个界面必填怎么实现的的时候,人家通过工具简单配置,界面就自动生成了;当你还在纠结并发量大,分布式事务如何实现的时候,人家消息机制、两段式提交已经用的飞起来;当你还在纠结分布式系统,数据库拆分,如果做垮库查询的时候,人家ORM自动分库路由,数据分发机制已经用烂了;当扯不清、道不明各个系统之间的调用关系,猜不透单点改动的影响范围、运维上压力巨大的时候,人家服务治理框架应运而生。。。。。。。这所有的所有,都依赖于先进的软件架构,有现成的或者自主研发的。这一切的一切,都可以让开发人员如虎添翼,事倍功半。

时间: 2024-10-27 08:12:16

为什么软件开发,人多,事少,还会工作量大?的相关文章

做移动支付软件开发智能养卡代还系统须知的以下几点!

1.信用卡代还系统开发公司以往的案例数量及难度系数,案例较多可以体现开发公司实力,案例真实性判断也有必要. 2.方案的设计专业程度,好的方案直接决定信用卡代还系统项目最终的成败,可以要求提供以往过了保密期的产品文档.原型交互等是否专业. 3.项目团队的管理,如果没有良好的项目管理,信用卡代还系统开发项目失败的几率会很高,敏捷开发还是瀑布流开发直接体现一个团队的成熟程度. 4.现有的开发过程中的文档是否专业,产品文档.测试报告等等,直接反应开发公司的专业程度. 5.报价是否合理,可以通过多家对比,

定论——软件开发的方法论探讨

http://www.jianshu.com/p/9593bd7b28d9 一.消除隐喻 1.隐喻 软件开发这件事情,出现得很晚.距今只有几十年的时间,关于它的定义,我们可以简单地说:"就是把软件做出来." 这基本上等于什么都没有说.而软件开发究竟是怎么回事,大家也没有搞明白,于是隐喻就派上用场了.当你要向一个完全没有概念的朋友,解释什么是软件开发的时候,你无法向解释建筑工程那样把他带到现场去看--案件开发的现场,你的朋友会以为软件开发就是一群人坐在电脑前面打键盘--你只能打比方:它就

软件开发公司是如何接项目的?

对于软件开发公司是如何接项目的这个问题,大大神作为一个软件协同交易链平台最大的特色在于产品经理这个板块,怎么能够不了解呢?根据大大神平台相关调查人员的数据分析最主要的思路就是主动出击.一般分为以下3点:1.软件外包社群目前有很多相关的社群,比如说软件外包QQ群,软件众包QQ群等QQ群,这些都是在QQ上能够直接搜到的.像这些群里面大多都是同行在里面,基本都是僧多肉少.还有就是微信的创业群.朋友圈,现在有很多的人都想要创业,通过参加线下创业活动等方式加入一些微信创业群,对于一些创业者来说,肯定是有软

软件开发-MSF方法(《构建之法》读书笔记2)

MSF-微软解决方案框架,是一套大型系统开发指南,它描述了如何用组队模型.过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考.在现在的软件开发项目中每一个软件开发项目都要经过 一个生命周期.MSF过程模型是从传统的软件开发瀑布模型和螺旋模型发展而来的,它瀑布模型中基于里程碑的规划与螺旋模型中的增量迭代的长处结合起来.MSF作为现在流行的软件开发思路,其有自己的基本原则. MSF基本原则: 1:推动信息共享和沟通 2:为

快速软件开发需要时间和努力。

快速软件开发的目的是,减少软件开发所需时间,缩短软件开发的进程. 但是在书中的第一章就有一句话:“快速软件开发需要时间和努力”.时间是快速软件开发的重要成分. 我是一名大三学生,结合大一大二的学历历程来看,时间和努力是所有我渴求的目标所需要的.对于达成我的目标,我的总结是:时间和用心是能够达成目标的全部元素. 其实仅仅时间的花费就会起到很不错的效果.所有以往投入过很多时间的事情,都获得了一些小小的技术和能力.但是我在过去的两年中过分沉浸在游戏当中,所获得的成就也仅仅是虚拟世界中不值一提的. 公众

简单之美-软件开发实践者的思考 03

对于软件来说,最大的软肋在于逻辑思维的不可遍历性.这是测试工作存在的一个原因. 实际的软件工程师实践证明,让对软件思想有深刻理解的软件工程师进行测试,可以大幅度提高软件质量.所以,测试工作并不比软件开发轻松,让软件开发菜鸟来进行测试是不负责任的.测试人员并不是软件开发人员的对立者.他在找出bug的同时,也要尽可能的帮助编程人员指出这种bug存在的原因以及地点.所有论点都存在一定的上下文之中.所以学习别人的论点只是理会这个论点的思路,而不要到处生搬硬套.怀疑一切. 项目管理工作的基本思路不是控制,

我是一个尽量少用国产软件的软件开发工程师

 [作者] 网名: 猪头三 站点: http://www.x86asm.com Email: [email protected] QQ: 643439947 编程生涯: 2001-至今[15年] 职业生涯: 13年 开发语言: C/C++; x86asm; Object Pascal; C#; Golang; Objective-C; PHP; 开发工具: VC++; Delphi; XCode; 研发领域: Windows应用软件安全; Windows系统内核安全; Windows系统磁盘数据

[转]10年软件开发教会我最重要的10件事

注:除了第一条,其他都非常切合我的自身体会,我认为技术的问题即使复杂,也可以慢慢解决,而决定一个项目成功与否的往往是技术以 外的事情.比如文中(2)提到的情景,好多技术人员学习很努力,工作很辛苦,也很热情的帮助别人,结果却没有取得很好的效果,就是因为什么都干就什么都干 不好.不多说了,请看正文. 0. “面向对象”比你想象的要难得多 也许只有我有这种想法,不过我曾经以为计算机科学课上学过的“面向对象”是很简单的东西.我的意思是,创建一些类来模拟现实世界能有多难啊?其实,那还真是挺难的. 十年之后

关于软件开发,你老板不知道的7件事

英文原文:7 Things Your Boss Doesn’t Understand About Software Development 你的老板是否不理解你的工作?本文将有助于你更好地理解为什么你的老板不理解软件开发. 你的老板可能真的很棒.我在我自己的编程生涯中就遇到过几个真心棒的老板,但即使是最棒的老板似乎也常常总是不能理解软件开发. 事实上,我想说的是当涉及到不止编程的几个元素时,大多数软件开发经理都有点目光短浅. 所以,我编译了一个简短的清单,用来说明关于编程一些最让你老板.开发经理