划重点 | 关于“任务分解”,你要重点掌握哪些事?

在这个模块中,主要讲解的是“任务分解”这个知易行难的工作原则。普通人与高手之间的差异,很大程度上取决于任务分解的粒度大小。但真正理解并应用好“任务分解”的原则并不容易,希望你能勤于练习,将知识内化成为你的能力。

重点复习

在这个模块中,我们学习到了一些最佳实践:

测试金字塔

-- 行业中测试组合的最佳实践。

-- 多写单元测试是关键。

测试驱动开发

-- 测试驱动开发的节奏是:红——绿——重构,重构是测试驱动开发区别于测试先行的关键。

-- 有人把测试驱动开发理解成测试驱动设计,它给行业带来的思维改变是,编写可测的代码。

艾森豪威尔矩阵(Eisenhower Matrix)

-- 将事情按照重要和紧急进行划分。

-- 重要且紧急的事情要立即做。重要但不紧急的事情应该是我们重点投入精力的地方。紧急但不重要的事情,可以委托别人做。不重要不紧急的事情,尽量少做。

最小可行产品

-- “刚刚好”满足客户需求的产品。

-- 在实践中,要用最小的代价找到一条可行的路径。

另外,还提到了一些可以直接在工作中应用的做法和评判标准:

尽量不写 static 方法;

主分支开发模型是一种更好的开发分支模型;

好的用户故事应该符合 INVEST 原则;

估算是一个加深对需求理解的过程,好的估算是以任务分解为基础的;

好的测试应该符合 A-TRIP。

也带你学习了一些重要的思想,帮你更好地改善自己的开发工作:

分而治之,是人类解决问题的基本手段;

软件变更成本,它会随着时间和开发阶段逐步增加;

测试框架把自动化测试作为一种最佳实践引入到开发过程中,使得测试动作可以通过标准化的手段固定下来;

极限编程之所以叫“极限”,它背后的理念就是把好的实践推向极限;

大师级程序员的工作秘笈是任务分解,分解到可以进行的微操作;

按照完整实现一个需求的顺序安排开发任务。

实战指南

在“任务分解”的板块,我也将每篇内容浓缩为“一句话”的实战指南,现在一起回顾一下。

动手做一个工作之前,请先对它进行任务分解。

—— 《11 | 向埃隆·马斯克学习任务分解》

多写单元测试。

——《12 | 测试也是程序员的事吗?》

我们应该编写可测的代码。

——《13 | 先写测试,就是测试驱动开发吗?》

将任务拆小,越小越好。

——《14 | 大师级程序员的工作秘笈》

按照完整实现一个需求的顺序去安排分解出来的任务。

——《15 | 一起练习:手把手带你拆任务》

要想写好测试,就要写简单的测试。

——《16 | 为什么你的测试不够好?》

想要管理好需求,先把需求拆小。

——《17 | 程序员也可以“砍”需求吗?》

尽量做最重要的事。

——《18 | 需求管理:太多人给你安排任务,怎么办?》

做好产品开发,最可行的方式是采用 MVP。

——《19 | 如何用最小的代价做产品?》

额外收获

在这个部分的最后,针对大家在学习过程中的热门问题,也进行了回答,希望你懂得:

对不了解技术的任务,先要去了解技术,然后再做任务分解;

通过一次技术 Spike ,学习新技术;

丢弃掉在 Spike 过程中开发的原型代码;

分清目标与现状,用目标作为方向,指导现状的改变;

多个功能并行开发可以考虑使用 Feature Toggle;

在遗留系统上做改造可以考虑使用 Branch by Abstraction 。

——《答疑解惑 | 如何分解一个你不了解的技术任务?》

留言精选

在“任务分解”的模块中,有很多同学非常用心,将自己的学习心得和工作中的经验进行了分享,在此挑选了一些同学的留言,与你一起学习。

在讲大师级程序员的工作秘笈时,同学提到:

最近在做战略拆解,都是一样的道理。战略飘在空中遥不可及,要落地就必须拆解。比如说达成目标有哪几个方面可以努力,各方面都需要做哪些事,这是路径。这些路径里哪些优先级最高,需要配置哪些组织资源。心里有数之后就是制订计划时间表。

另外,同学还为 Spike 给出了一个很生动的解释:

“技术 Spike”可以翻译成“技术撩”,就是撩妹的那个撩。试探下,有戏就继续,撩不动就算或者放一段时间再说。

针对分解的粒度问题,同学也分享了自己的心得:

我会的任务分解,不仅可执行,粒度还很细。比如说,我要修复一个 rpc 接口的 bug。我会列出每个代码的修改点,要修改的测试,要增加的测试,合并到哪个分支,修改 rpc 文档,文档中有哪些点要修改。

每一步都非常容易执行,看起来没多少必要,但在我当前的工作环境特别有用:(1)事前思考,不会造成遗漏;(2)任务实施过程中经常被打断,比如,测试有疑问和你讨论、主管找你谈事、紧急会议来了,这种“硬中断”完全打破了节奏,而任务列表,让我清楚知道当前做了多少,该从哪一步继续。

对于单元测试,同学提到:

我的想法可以在复杂度高,重要核心的模块先开始写单元测试。特别是公用、底层的,因为这些靠功能测试很难覆盖。

单元测试难以推行主要是没有碰到质量的痛点,通常都依靠测试工程师来保证质量。我们之前就遇到过质量崩塌,倒逼着我们去做,以保证质量。

关于“任务分解”的执行问题,同学分享了感悟:

对任务分解的体会非常深刻,刚入职的时候任务评估不准。现在想想主要是两个原因:(1)需求梳理的不清晰,还没清楚地搞明白需求就动手写代码,导致返工和一些“意想不到”的情况。(2)任务分解做的不好,没有将任务分解成非常清晰地可执行的单元,导致有些时候无从下手,而且任务时间评估不准确。

在讲到为什么很多人的测试不够好这个问题时, 同学提到:

本节我有以下几点体会:

(1)从开发者的视角看,编码和测试是不分家的,是可以通过重构形成良性生态圈的,类似之前课程中的反馈模型和红绿重构模型;

(2)A-TRIP 是个很好的总结和行动指南,在今后工作中应一以贯之,把工作做到扎实有成效;

(3)对文中提到的数据库依赖的问题,我也说说自己的浅见。我觉得在测试代码中,尽量避免与数据库打交道,测试更关注领域与业务,往往爆雷更多的是 resource 和 service,模型的变化往往牵动着表结构的变化,与其两头兼顾不如多聚焦模型。我常用的做法是用例配合若干小文件 (数据忠实于模型),保证库操作临门一脚前所有环节都是正确的,同时方便适应变化。一旦出现异常,也比较容易定位是否是数据库操作引发的问题。 (此点基于,我在工作中发现,项目型程序员大多是先急于把表结构定义出来,好像不这么做,写代码就不踏实)

针对需求的管理问题,同学提到的点也非常关键:

程序员也应该更积极主动一些, 最好能推动事情发展, 当这件事情由你推动时,主动权就在你的手里了。

感谢同学们的精彩留言。在下一个模块中,将为大家分享“沟通反馈”这个原则的具体应用。

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
销售数据 分析模型 主线 & 指标 分析思路 整体分析 分析方法 目录 CONTENTS 分析主线 分析销售数据通常是从产品、区域、客户三条主线来研究。 数据指标分解 当日整体业绩 关键数据: 当日业绩达成率 销售数据构成分析 实际操作意义: 1. 跟进弱势区域 2. 跟进弱势产品 3. 实时掌握销量 累计业绩达成 发货情况 销售质量 关键数据: 月累计业绩达成"进 度要和时间进度对比 档期任务达成 注意: 1. 特殊时段任务档期管理 关键数据: 发货客户数量 发货次数 重点关注: 1. 当月前 15 天上面两项 数据情况 2. 下半月及时跟进 关键数据: 产品结构 区域结构 重点客户和渠道结构 衍生指标: 1. 平均价 2. 重点产品占比率 分析步骤 整体销售分析 1 1 区域分析 2 2 产品线分析 3 3 价格体系分析 4 4 销售数据总结及建议 5 5 销售额 / 销售量、季节性分析、产品结构、价格体系 产品(系列)结构分布、产品—区域分析 价格体系构成、价格 - 产品分析、价格 - 区域分析 区域分布、重点区域分析、区域销售异动分、区域—产品分析 整体销售分析 季节因素 产品线 价格体系 销售额 / 销量 通过总体产品结构分析 ,了解整体产品结构 分布和重点产品表现 通过总体价格结构分析 ,了解企业的优势价 位区间,提供价格结 构调整的合理性建议 依据行业销售淡旺季规 律,与销售数据中的销 售行程进行对比,分析 淡旺季发展规律;可以 为客户提供渠道压货规 及生产运做规 分析近几年的总体销售 额、销售量,与行业标 准相比较。从而分析企 业的业绩状况并判断企 业的业绩变化类型 区域、产品、价格分析 1. 分析企业的销售区域及各区域的表现,检索重点区域、发现潜在市场 , 提出下阶段区域布局策略 2. 对重点区域的营销状况予以重点分析,解析该区域的发展走势和结构特点 , 为未来在重点区域的发展 提供借鉴 3. 对增长或者下跌明显的区域予以重点分析,总结经验教训 , 以期避免潜在的威胁或者抓住机会 4. 将重点区域中的产品结构进行时间上的横向对比,进行多要素复合分析 1. 分析产品系列和单产品结构分布,检索重点产品发展趋势及新产品的市场表现 2. 针对重点产品进行分析,发现存在的问题,提供产品改进意见 3. 通过对产品的销售区域分布的分析,区分战略性产品 / 战术性产品、全国性产品 / 区域性产品 , 为产品 线的分和进一步细化提供参考 1. 分析企业的销售区域及各区域的表现,检索重点区域、发现潜在市场 , 提出下阶段区域布局策略 2. 对重点区域的营销状况予以重点分析,解析该区域的发展走势和结构特点 , 为未来在重点区域的发展提 供借鉴 3. 对增长或者下跌明显的区域予以重点分析,总结经验教训 , 以期避免潜在的威胁或者抓住机会 4. 将重点区域中的产品结构进行时间上的横向对比,进行多要素复合分析 整体销售分析 通过对销售额和销售量的增长趋势的把握, 可以找出客户增长或下滑的本质;如销售额增 长大于销售量增长,说明增长主要来源于产品 平均价格价格的提高,它反映了市场平均价格 的提高或者是客户产品结构升级 , 即结构性增 长;反之,为容量性增长。 很多的消费品行业存在明显的季节 性趋势;根据行业规律,为企业提出 生产运做及渠道供货的的合理性规 整体销售分析 从产品结构看主导产品和产品成长合理性, 企业的利润源和销售量是否对应,初步判断 企业未来产品规的调整方向。 0 1000 2000 3000 4000 5000 6000 7000 2004 2005 2006 从价格结构看产品分布合理性,也可以判断目前企业现状与企 业的战略发展方向是否一致;
销售数据 分析模型 数据分析/ 2011/8/29 数据分析模型全文共15页,当前为第1页。 主线&指标 分析思路 整体分析 分析方法 目录 CONTENTS 数据分析模型全文共15页,当前为第2页。 分析主线 分析销售数据通常是从产品、区域、客户三条主线来研究。 区域 哪个区域需要重点巡查? 产品 哪个产品需要重点管理? 客户 哪个重点经销商的业绩不正常? 研究 主线 数据分析模型全文共15页,当前为第3页。 数据指标分解 当日整体业绩 关键数据: 当日业绩达成率 销售数据构成分析 实际操作意义: 跟进弱势区域 跟进弱势产品 实时掌握销量 1 累计业绩达成 2 发货情况 3 销售质量 4 关键数据: 月累计业绩达成"进度要和时间进度对比 档期任务达成 注意: 特殊时段任务档期管理 关键数据: 发货客户数量 发货次数 重点关注: 当月前15天上面两项数据情况 下半月及时跟进 关键数据: 产品结构 区域结构 重点客户和渠道结构 衍生指标: 平均价 重点产品占比率 销售数据 数据分析模型全文共15页,当前为第4页。 分析步骤 整体销售分析 1 区域分析 2 产品线分析 3 价格体系分析 4 销售数据总结及建议 5 销售额/销售量、季节性分析、产品结构、价格体系 产品(系列)结构分布、产品—区域分析 价格体系构成、价格-产品分析、价格-区域分析 区域分布、重点区域分析、区域销售异动分、区域—产品分析 数据分析模型全文共15页,当前为第5页。 整体销售分析 2 3 季节因素 产品线 价格体系 4 1 销售额/销量 通过总体产品结构分析,了解整体产品结构分布和重点产品表现 通过总体价格结构分析,了解企业的优势价位区间,提供价格结构调整的合理性建议 依据行业销售淡旺季规律,与销售数据中的销售行程进行对比,分析淡旺季发展规律;可以为客户提供渠道压货规及生产运做规 分析近几年的总体销售额、销售量,与行业标准相比较。从而分析企业的业绩状况并判断企业的业绩变化类型 数据分析模型全文共15页,当前为第6页。 区域、产品、价格分析 分析企业的销售区域及各区域的表现,检索重点区域、发现潜在市场,提出下阶段区域布局策略 对重点区域的营销状况予以重点分析,解析该区域的发展走势和结构特点,为未来在重点区域的发展提供借鉴 对增长或者下跌明显的区域予以重点分析,总结经验教训,以期避免潜在的威胁或者抓住机会 将重点区域中的产品结构进行时间上的横向对比,进行多要素复合分析 区域布局 分析产品系列和单产品结构分布,检索重点产品发展趋势及新产品的市场表现 针对重点产品进行分析,发现存在的问题,提供产品改进意见 通过对产品的销售区域分布的分析,区分战略性产品/战术性产品、全国性产品/区域性产品,为产品线的分和进一步细化提供参考 产品线 分析企业的销售区域及各区域的表现,检索重点区域、发现潜在市场,提出下阶段区域布局策略 对重点区域的营销状况予以重点分析,解析该区域的发展走势和结构特点,为未来在重点区域的发展提供借鉴 对增长或者下跌明显的区域予以重点分析,总结经验教训,以期避免潜在的威胁或者抓住机会 将重点区域中的产品结构进行时间上的横向对比,进行多要素复合分析 价格体系 数据分析模型全文共15页,当前为第7页。 整体销售分析 通过对销售额和销售量的增长趋势的把握,可以找出客户增长或下滑的本质;如销售额增长大于销售量增长,说明增长主要来源于产品平均价格价格的提高,它反映了市场平均价格的提高或者是客户产品结构升级,即结构性增长;反之,为容量性增长。 很多的消费品行业存在明显的季节性趋势;根据行业规律,为企业提出生产运做及渠道供货的的合理性规 销售额/销售量 1 季节性分析 2 数据分析模型全文共15页,当前为第8页。 整体销售分析 产品结构 3 价格体系 4 从产品结构看主导产品和产品成长合理性,企业的利润源和销售量是否对应,初步判断企业未来产品规的调整方向。 从价格结构看产品分布合理性,也可以判断目前企业现状与企业的战略发展方向是否一致; 数据分析模型全文共15页,当前为第9页。 整体销售分析 区域分布 5 区域销售异动 6 企业的销售区域分布看企业市场分布的合理性;企业区域布局与整体战略目标的一致性;明确下阶段企业区域布局的规方向; 通过对数据的分析,发现存在异动的产品或区域;并分析异动发生的原因; 数据分析模型全文共15页,当前为第10页。 整体销售分析 从区域内的产品动态来看区域内产品的组成变化,即区域的产品适应性,从而发现潜力产品、老化产品等。 区域-产品分析 7 价格-区域分析 8 从区域的价格分布来看产品的提升空间,即不同区域的价格构成合理性,从中分析市场提升的空间和方向。 数据分析模型全文共15页,当前为第11页。 具体分析方法 数据分析的目的是为
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值