热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

流程合理化的重要性

这周末我发现自己在前阵子陷入一种错误的唯心论中,认为只要培养起健康的团队文化,就可以做好开发,做好项目。从前面这半年的管理经验来看,这种强调团队文化思路下的确取得了一定成绩,但把这种思路放到更宏

这周末我发现自己在前阵子陷入一种错误的唯心论中,认为只要培养起健康的团队文化,就可以做好开发,做好项目。从前面这半年的管理经验来看,这种强调团队文化思路下的确取得了一定成绩,但把这种思路放到更宏观的角度来看就不行了。

一、在小型团队中,成员个人业务能力的总和是提高团队业绩的主要矛盾。

我分析了一下,之所以强调健康的团队文化,强调积极的工作状态,能在提高项目组业绩上有所成效,是基于以下几个客观条件为基础的:

(1)小团队开发。
      小团队的沟通成本低,在项目开发中起决定因素的是每个成员的个人工作能力和工作状态,而项目组沟通协调水平被放在一个很次要的位置上。简单划个百分比,在整体业绩中团队成员的个人能力之和占40%,精神状态之和占40%,沟通成本和流程制度管理占20%。因此即使项目组用了最糟糕的流程、最低劣的团队管理方法,那这些额外开销也很容易被80%的单兵能力之和所掩盖。相反,如果在小团队开发中花大精力去规划合理流程、完善开发制度,而忽视了对个体的技术能力培养和精神关怀,收效会很微小,毕竟没有把握住事情的主要矛盾。

(2)公司的流程本身设置不合理,相当繁冗
        公司也尝试了建立现代企业制度,规范化流程。但由于流程设置不合理,所以基本上被大家搁一边了,走流程就是在做样子。
        举个例吧,产品立项后,一堆人开会制定了产品需求的框架,就要我作为“软件需求代表”的角色写一份产品需求文档,我在内部OA系统上花了10分钟终于找到了软件需求文档模板,然后把需求涂写完(反正后面还会频繁修改的),找流程管理员教我怎么提交上去;过一会儿发现我还是“软件开发代表”,要对需求文档进行审核,我自己写的东西当然直接批“同意”了;然后一会儿有要求我作为“软件测试代表”进行会签,继续点“同意”,然后就是X总X总会签,一天下来全部签完了批准发布了;发布的时候却发现同个产品线上,两个不同产品的文档提交的目录正好相反了,这样的文档在批阅时都没人看,一路绿灯居然发布了!更有讽刺意义的是居然在随后的一次内审的时候都没报告这个问题。我试图发起一个变更活动,但在OA系统上误操作了一步,只好找来部门的流程管理员,搞不定;再打电话给公司的流程管理员,一并折腾了一上午才弄好。
        我的结论就是:按照不合理的流程做事,还不如凭借自己的逻辑来做更有效率。

 

二、在大型团队管理中,降低沟通成本、提高沟通质量成为主要矛盾

        如果是50人甚至100人以上的项目团队呢?情况就变了。

        两个人相互传递思维和观点的时候,花费了时间和精力不说,所沟通的信息还会失真和损失,按照排列组合计算出来的团队成员沟通次数就可以看到次数是随人数呈几何级数递增的了。当团队足够大的时候,沟通质量和沟通方式的好坏就足以超越项目组成员的个人业务能力之和,对项目结果起到决定性作用。复制一下前文假想的百分比,在大型团队管理中,在整体业绩中团队成员的个人业务能力之和可能只占30%,精神状态之和占20%,沟通成本和流程制度管理占50%(这里百分比只是为了直观表示其重要度,而不具有统计意义)。这时候就需要合理化流程,并且保证流程的实施了。
 
       在拿需求变更来讲,假设没有流程可以遵循,那么按照最恶劣的情况来看,需求开发者A单独找工程师B1,要求立即增加某某功能需求,工程师B1花两天时间完成后,项目管理者C才知道这事,但由于工程师B1当前的任务和工程师B2,B3处于串行开发位置上,所以B1多花了这两天后,B2、B3又得多傻等两天;而B1开发完新功能后,由于没有提前通知测试人员D,所以缺乏测试例,必须再等一天后才可以测试该项新功能。当然这是一个非常恶劣和可笑的事情了,在这个过程中,由于需求开发者C的错误做法,导致整个项目至少增加了5人天( (B1+B2)*2 + D )。这还不算如果该项需求以后再次被修改或者撤消的情况。

        如果我们设计的流程是:需求开发者A提出新功能需求 -> 需求开发组每周对新需求进行评审,并和开发组确定新功能的实现难度/风险 -> 开发组每周更新工作任务,分配一周里各人的任务 -> 开发组通知测试组在下周会发布的新功能列表 -> 测试组制定测试例,编写测试代码 -> 下周新功能的代码发布后,可以立即开始测试。 上面是我按照常规逻辑设置的流程而已,但已经可以明显地避免上一段中出现的额外增加5人天情况。

 

三、流程设计是为了找到做事的捷径

        把沟通成本最低、沟通质量最好的捷径设计为流程。让所有人按照捷径来做事。

        在前文中我提到了公司繁冗的流程。实际上我所接触的同事,几乎所有人都对这套流程很反感,认为这些流程不但起不到效果,而且浪费了团队成员大把大把的时间。当然,从无流程到有流程,肯定是增加了流程执行者单人的短期时间成本,但是却节省了团队的沟通成本,所以总体上是节省了团队整体的时间;最后的目的,也是减少了团队成员平均每人在整个项目中花费的时间。很早前我听到一句江湖传言“效益越好的企业,工作起来越轻松,效益越差的企业,越是要天天加班”,我到现在才似乎有点理解。

        但是如果流程不合理,或者流程没有被执行贯彻,都是管理者的问题。我觉得强制执行是取不到效果的,只有让大家体会到执行合理流程的效果,确实节省了工作时间,给每个人带来好处,流程才会被真正贯彻下去。

 

四、持续地定期修改、优化并重新发布流程,保持流程的适应性和生命力

        只有动态变化的事物才有生命力,流程制定也是如此。
       
        市场环境是变的,竞争对手是在不断进步的,所以内部流程制定后不可能一劳永逸。从另一个角度来说,“沟通成本最低、沟通质量最好的方法”的说法本身就经不起推敲。这个世界上没有什么绝对的最好最差,只有相对的好坏,今天觉得最优化的流程,几个月的实施后可能就会发现需要修改。只有持续地定期修改、优化并重新发布的流程才能保持生命力;当然也不能朝令夕改,重新发布周期我觉得大中型团队每半年或每一年就可以了。我打听了一下厦门十大集团企业的情况,有一家做得很成熟的是每年重新优化和发布新流程;有几家在建设摸索阶段,会不定期地修改发布。

--------------------------------------------

我反思后终于知道为什么自己多年来不敢把团队扩张太大,而一直维持小团队开发了。说到底,我还是只掌握了“土匪式开发”的要领,也许存在即合理,土匪式开发在一定的作用域里业绩会比“正规军”开发更好,但是从长远来看,光强调个人能力、强调工作积极性,而缺乏流程建设,似乎带不动大型团队;没有大型团队又如何承担大型项目开发。貌似是该考虑流程建设的时候了……


推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 本文介绍了两种方法,用于检测 Android 设备是否开启了开发者模式。第一种方法通过检查 USB 调试模式的状态,第二种方法则直接判断开发者选项是否启用。这两种方法均提供了代码示例和详细解释。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 前端开发:从底层到顶端的行业现象解析
    在编程领域,鄙视链现象屡见不鲜,从C语言到Java、.NET等,每个技术栈都有其独特地位。然而,前端开发者尽管常处于鄙视链底端,却在市场需求中备受青睐。本文深入探讨这一现象,并分析前端工程师如何在竞争激烈的市场中脱颖而出。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
author-avatar
才女我是周宇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有