欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习
在处理一些复杂任务时,我们有时很难理出头绪,有没有什么方法论一般性适用这些复杂任务?在实践中我认为以下三种方法可以有效应对复杂场景:
系统性思维分为两个维度:
明确当前任务服务于什么目标非常重要,例如一个技术团队在做专项任务,本季度工作是系统稳定性,那么稳定性就是本季度核心目标,整体任务设计必须围绕这个目标展开,例如增加告警配置,制定代码规范,组织代码Review等等。
但是如果你本季度把系统性能放在首位,而忽略了稳定性建设指标,即使性能做得再好,也不会拿到好指标。
需要明确的是,并不是说性能不重要,而是当前最重要的目标是稳定性,所有工作要围绕核心目标展开。
假设存在两个任务:任务A和任务B,如果把这两个任务做到最好,是不是总目标就做到最好?答案是不一定,因为这两个任务有可能相互削减。
例如完结率和满意率就是两个削减典型指标:追求满意率很可能就不能迅速结单,追求完结率很可能有些事情就做不到多方满意。
例如开发人员在编写测试用例时,覆盖率是否一定要做到百分之百?如果单测这一个指标做到极值可能会减少测试时间,假设减少3天测试工期。但是编写覆盖率为百分之百测试用例需要花费5天,整体工期反而延长。
这就要做到动态平衡,例如开发人员只需要覆盖核心用例,这样既可以提升测试速度,编写测试用例也不会花费太多时间。
大家工作中有没有遇到以下情况:一位同事用了很长时间罗列了很多事实和数据向你说明一件事情,但是你听完根本不知道他要说什么。另一位同事用了大量笔墨编写了技术方案,但是你看完也不知道这个方案到底要解决什么问题以及如何落地。
上述情况出现大概率是因为表述者没有使用结构化方法进行阐释,信息看似非常丰富但是杂乱无章,让人很难抓住重点,所以我们需要引入结构化思维。
金字塔原理就是一个由芭芭拉·明托女士提出的结构化思维方法论,风靡世界五十年并在各个行业都取得过很好效果。详细介绍参考我之前《结构化思维指导系统优化》这篇文章。
结构化思维分为两个维度:
结论先行是指开宗明义地展示中心思想,让听众一开始就明白沟通主旨,而如果把中心思想隐藏在沟通过程中,听众可能因为走神或者沟通信息太多而失焦,根本不知道你在说什么。结论先行具体有以下六个方面:
以上统下是指任何一个层的思想必须是其下一层思想的总结概括,我们分析一个例子进行说明:小王今天需要买牛肉、鸡蛋、萝卜、果汁、白菜、牛奶、青菜、鸡肉、酸奶,但这么多菜品他记不住。
我们不难发现牛肉、鸡肉、鸡蛋属于肉蛋类,白菜、青菜、萝卜属于蔬菜类,牛奶、果汁、酸奶属于饮品类,这样聚合之后再以上统下进行结构化表达。
归类分组一般有四种维度:时间维度、结构维度、程度维度、经验维度。时间维度是根据时间线进行归纳,结构维度根据组织结构进行归纳,程度维度是根据程度级别进行归纳,经验维度是根据已有经验进行归纳:
逻辑递进是指每种思想需要按照一定顺序进行排列,时间维度按照事前、事中、事后进行排列,程度级别按照高级、中级、初级进行排列。例如时间维度我们还可以继续使用怎样减少代码上线故障案例,按照事前、事中、事后时间线进行排列,这种顺序更加符合理解和记忆习惯。
流程化管理分为三个维度:
目标分阶段:大任务不可能一蹴而就,而是要还分成多个阶段逐步实现。例如第一个阶段先做成一个最小可用品,后续再进行迭代。
进度定期同步:核心是风险及时同步,尽早协调资源。例如利用早会和周会时间同步项目进度,早会要迅速抛出风险,周会要同步项目重大进度。
进度可视化:用可视化方法管理进度,业界有很多可视化项目管理工具,也可以用Excel表进行可视化管理。在实践中我一般使用三张表格:
第一张表是团队项目汇总表:列出团队所有项目进度,包括项目名称,需求文档,需求评审时间,技术方案评审时间,后端人员,后端开发时间,前端开发人员,前端开发时间,提测时间,测试人员,测试时间等。
第二张表是单个项目管理表:由本项目负责人维护。这就要根据功能点列出每个功能点时间点,例如后端、张三、用户登陆功能点开始时间和截止时间。
第三张表是人员任务管理表:主要是人员维度记录组内人员工作任务安排,组长根据组内人员工作繁忙程度进行任务调配。
在面对复杂任务时,系统性思维核心是明确目标,结构化思维核心是拆解任务,流程化管理核心是及时抛出风险,可以使用三张表格管理项目进度。
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习