10x程序员工作法
郑晔
火币网首席架构师,前ThoughtWorks首席咨询师 ,TGO鲲鹏会会员
立即订阅
7975 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序员解决的问题,大多不是程序问题
免费
思考框架 (1讲)
01 | 10x程序员是如何思考的?
以终为始 (11讲)
02 | 以终为始:如何让你的努力不白费?
03 | DoD的价值:你完成了工作,为什么他们还不满意?
04 | 接到需求任务,你要先做哪件事?
05 | 持续集成:集成本身就是写代码的一个环节
06 | 精益创业:产品经理不靠谱,你该怎么办?
07 | 解决了很多技术问题,为什么你依然在“坑”里?
08 | 为什么说做事之前要先进行推演?
09 | 你的工作可以用数字衡量吗?
10 | 迭代0: 启动开发之前,你应该准备什么?
答疑解惑 | 如何管理你的上级?
划重点 | 关于“以终为始”,你要记住的9句话
任务分解 (11讲)
11 | 向埃隆·马斯克学习任务分解
12 | 测试也是程序员的事吗?
13 | 先写测试,就是测试驱动开发吗?
14 | 大师级程序员的工作秘笈
15 | 一起练习:手把手带你分解任务
16 | 为什么你的测试不够好?
17 | 程序员也可以“砍”需求吗?
18 | 需求管理:太多人给你安排任务,怎么办?
19 | 如何用最小的代价做产品?
答疑解惑 | 如何分解一个你不了解的技术任务?
划重点 | 关于“任务分解”,你要重点掌握哪些事?
沟通反馈 (12讲)
20 | 为什么世界和你的理解不一样
21 | 你的代码为谁而写?
22 | 轻量级沟通:你总是在开会吗?
23 | 可视化:一种更为直观的沟通方式
24 | 快速反馈:为什么你们公司总是做不好持续集成?
25 | 开发中的问题一再出现,应该怎么办?
26 | 作为程序员,你也应该聆听用户声音
用户故事 | 站在前人的肩膀上,领取属于你的高效工作秘籍
27 | 尽早暴露问题: 为什么被指责的总是你?
28 | 结构化:写文档也是一种学习方式
答疑解惑 | 持续集成,一条贯穿诸多实践的主线
划重点 | 一次关于“沟通反馈”主题内容的复盘
自动化 (12讲)
加餐 | 你真的了解重构吗?
29 | “懒惰”应该是所有程序员的骄傲
30 | 一个好的项目自动化应该是什么样子的?
31 | 程序员怎么学习运维知识?
32 | 持续交付:有持续集成就够了吗?
33 | 如何做好验收测试?
34 | 你的代码是怎么变混乱的?
35 | 总是在说MVC分层架构,但你真的理解分层吗?
36 | 为什么总有人觉得5万块钱可以做一个淘宝?
37 | 先做好DDD再谈微服务吧,那只是一种部署形式
答疑解惑 | 持续集成、持续交付,然后呢?
划重点 | “自动化”主题的重点内容回顾汇总
综合运用 (7讲)
38 | 新入职一家公司,怎么快速进入工作状态?
39 | 面对遗留系统,你应该这样做
40 | 我们应该如何保持竞争力?
答疑解惑 | 如何在实际工作中推行新观念?
划重点 | “综合运用”主题内容的全盘回顾
总复习 | 重新审视“最佳实践”
总复习 | 重新来“看书”
结束语 (1讲)
结束语 | 少做事,才能更有效地工作
10x程序员工作法
登录|注册

10 | 迭代0: 启动开发之前,你应该准备什么?

郑晔 2019-01-16
关于“以终为始”,我们已经从各个方面讲了很多。你或许会想,既然我们应该有“以终为始”的思维,那么在项目刚开始,就把该准备的东西准备好,项目进展是不是就能稍微顺畅一点儿呢?
是这样的,事实上这已经是一种常见的实践了。今天,我们就来谈谈在一开始就把项目准备好的实践:迭代 0
为什么叫迭代 0 呢?在“敏捷”已经不是新鲜词汇的今天,软件团队对迭代的概念已经不陌生了,它就是一个完整的开发周期,各个团队在迭代上的差别主要是时间长度有所不同。
一般来说,第一个迭代周期就是迭代 1,然后是迭代 2、迭代 3,依次排列。从名字上你就不难发现,所谓迭代 0,就是在迭代 1 之前的一个迭代,所以,我们可以把它理解成开发的准备阶段。
既然迭代 0 是项目的准备阶段,我们就可以把需要提前准备好的各项内容,在这个阶段准备好。事先声明,这里给出的迭代 0,它的具体内容只是基本的清单。在了解了这些内容之后,你完全可以根据自己项目的实际情况,扩展或调整这个清单。
好,我们来看看我为你准备的迭代 0 清单都包含了哪些内容。

需求方面

1. 细化过的迭代 1 需求

一个项目最重要的是需求,而在迭代 0 里最重要的是,弄清楚第一步怎么走。当我们决定做一个项目时,需求往往是不愁的,哪些需求先做、哪些需求后做,这是我们必须做决策的。迭代 0 需要做的事,就是把悬在空中的内容落到地上。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《10x程序员工作法》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(24)

  • 草原上的奔跑
    郑老师的迭代0准备工作很齐全,平常在迭代开发中这些都会遇到,但一般没有这个清单,或者即使有,也没这么系统。准备工作做在前面,好的开始,程序员会更轻松,项目也会更易成功。
    2019-01-16
    7
  • 王维
    我在几个软件公司做过,个人的感受是:我们不缺技术,我们缺的是规范的流程和规范的工作方法。如果说技术是硬技能的话,那么规范的流程和方法就是软技能。工作中碰到的问题有很多都是因为软技能缺失引起的。学习老师的课程,真的收获很大,赞!!

    作者回复: 我们一起加油,探讨恰当的做事方式。

    2019-01-23
    6
  • Being
    突然醒悟,这才是专业的软件开发流程,事前准备好,列出清单,持续集成的过程实现自动化,包括上线部署,都是有条不紊的,降低了人为因素的错误,大大提供效率,减少偶然性错误。

    作者回复: 其实,我曾经想把这个专栏的名字叫做《专业程序员》。

    2019-01-16
    5
  • Ryoma
    还需要考虑当发生了发布失败情况时,如何快速恢复服务,如何回滚版本、回滚数据库等等
    2019-01-17
    4
  • 大彬
    感谢郑老师。迭代0就是项目的根基,地基打好了,项目做起来才更顺利。

    刚来公司的时候,没有代码规范,没有Git规范,没有CI,更没有lint,覆盖率这些东西,通过我们的努力,代码规范,Git规范开始在实施了,CI也跑起来了,还在解决lint,后面也要逐步把覆盖率做起来

    作者回复: 没有比有了重建还要简单一些。

    2019-01-16
    2
  • helloworld
    迭代0通俗来说就是把开发的整个流程都提前规划好想好,也是在这想的过程当中,发现流程的不足,那些需求是不必要的等等,这样就做到了心中有数

    作者回复: 把事放到前面做

    2019-02-22
    1
  • Dawn
    关于迭代0是不是要完全准备好界面原型和交互细节,有点不同意见。从产品经理的角度出发,他也有个迭代的过程。产品未实现前,不是所有的细节都能考虑到。在一开始定义好所有的界面和交互,也是一种浪费,开发过程中,可能又要改。有些设计,需要考虑实现的难易度。有些时候,设计看起来简单,实现起来特别复杂;开发也有义务去优化设计,可能开发过程中会出现一种即让设计简单实现也简单的方案。同时,这种方式也让开发有了依赖性,会出现不设计好就不开发的情况。其实产品本身就是个逐渐优化、逐步细化的过程。对开发如此,对产品也如此。我们现在只要求产品和开发之间,形成共识,即可开发。开发完成后,再来优化某些界面和交互细节。

    作者回复: 关于界面和交互,参考19,产品经理有更低成本的方式去试验产品的界面和交互,开发是成本最高的方式。

    产品经理与开发人员共同改进的观点,我认同。

    2019-02-17
    1
  • 何大小成
    请问下前端有没有必要使用测试驱动开发,前端好多交互,似乎好难做成这种开发思维?

    作者回复: 现在的前端也要有逻辑,有逻辑就可以测试。先考虑怎么测试JS,有各种测试框架,这就是前端的单元测试。组合到一起,可以考虑用Selenim,做整体的测试,这相当于集成测试。当懂了怎么测,TDD就好办了。

    2019-02-14
    1
  • 喜悦
    今日概念
    1. 迭代0:项目开始前的准备清单,为接下来的开发奠定基础;

    今日总结
    很多项目开发都没有事先约定好验收标准,也没有对开发过程做“监控”,对项目质量的把控全靠“感觉”。迭代0清单类似于“约定优于配置”的原则,决定了项目开发基调,还能通过监控及时发现问题。使用迭代0清单准备项目开发可以是使开发有条不紊的进行。
    2019-01-25
    1
  • Ericshape
    这个迭代0需要占项目多长时间?有迭代0的awesome list么 LOL

    作者回复: 一到两周吧,看具体项目的情况。我给出的列表是一个简化的列表,剩下的要根据项目具体情况做调整了。

    2019-01-22
    1
  • 闫玮玮
    你好,我不明白添加字段和数据库迁移有什么关系,我们是直接写的脚本,还望老师给解释下,数据库迁移文件又是什么?

    作者回复: 所有的数据库变更都应该管理起来,数据库迁移(database migration)工具就是用来管理数据库变更的,你可以查一下我这里推荐的 flyway。

    2019-01-19
    1
  • toosheep
    专业,开眼界了!
    2019-01-17
    1
  • Demi
    还不知道怎么写测试用例呢,很多时候都是看运行效果。打包上线,这个我用的jenkins加上shell脚本.我每次花时间最多都在技术实现上,自己实现某个效果,往往会出很多问题,经过很多次调试,发现问题,解决问题,有时候呢,找不到出问题的原因,无法解决,然后就百度找答案,实在不行了,就会换方案,有时候会重蹈覆辙,遇到新的问题。还是自己经验少,知识面不够吧。

    作者回复: 别急,下个模块开篇讲的就是测试,敬请期待!

    2019-01-16
    1
  • 丁丁历险记
    1 持续集成。(构建脚本+代码风格检查+测试+ci moniter)
    2 测试。(加入构建脚本,前期加入构建脚本)
    3 发布准备,数据库迁移。

    上线部署 前期考量,自动化,docker 自动化脚本。

    迭代0 自动化的基调。


    检查清单 图以收藏
    2019-11-05
  • Bufan
    老师讲的真心不错,我现在接手的项目,啥也没有,没有编码规范,没有持续集成,没有单元测试,没有自动化测试,没有review,要是补的话工作量很大,老师您觉得应该怎么办
    2019-10-22
  • 二康
    不错
    2019-10-21
  • 行者
    迭代0很重要,因为它确立工作方式;我想如果我来设计迭代0的话,我会加上发布后的持续监控,对发布后的服务监控其性能指标。
    2019-06-22
  • kyo
    补充两点: 配置信息管理方案和日志记录方案.
    2019-05-08
  • enjoylearning
    迭代0,让我们做正确的事和正确的做事
    2019-03-28
  • enjoylearning
    迭代0,让我们做正确的事和正确的做事
    2019-03-28
收起评论
24
返回
顶部