初到 ThoughtWorks 时,Pair 时候总会有人教我如何开始编码,这应该也是一项基础的能力。结合日常,重新演绎一下这个过程:
- 有一个明确的实现目标。
- 评估目标并将其拆解成任务(TODO)。
- 规划任务的步骤(TODO)
- 学习相关技能
- 执行 Task,遇到难题就跳到第二步。
###如何 Tasking 一本书
以本文的写作为例,细分上面的过程就是:
- 我有了一个中心思想——在某种意义上来说就是标题。
- 依据中心思想我将这篇文章分成了四小节。
- 然后我开始写四小节的内容。
- 直到完成。
而如果将其划分到一个编程任务,那么也是一样的:
- 我们想到做一个 xxx 的 idea。
- 为了这个 idea 我们需要分成几步,或者几层设计。
- 对于每一步,我们应该做点什么
- 我们需要学习怎样的技能
- 集成每一步的代码,就有了我们的系统。
现在让我们以这本书的写作过程为例,来看看这个过程是怎么发生的。
在计划写一本书的时候,我们有关于这本书主题的一些想法。正是一些想法慢慢地凝聚成一个稳定的想法,不过这不是我们所要讨论的重点。
当我们已经有了一本书的相关话题的时候,我们会打算去怎么做?先来个头脑风暴,在上面写满我们的一些想法,如这本书最开始划分了这七步:
- 从零开始
- 编码
- 上线
- 数据分析
- 持续交付
- 遗留系统
- 回顾与新架构
接着,依据我们的想法整理出几个章节。如本书最初的时候只有七个章节,但是我们还需要第一个章节来指引新手,因此变成了八个章节。对应于每一个章节,我们都需要想好每一章里的内容。如在第一章里,又可以分成不同的几部分。随后,我们再对每一部分的内容进行任务划分,那么我们就会得到一个又一个的小的章节。在每个小的章节里,我们都可以大概策划一下我们要写的内容。
然后我们就可以开始写这样的一本书——由一节节汇聚成一章,由一章一章汇聚成一本。
###Tasking 开发任务
现在,让我们简单地来 Tasking 如何开发一个博客。作为一个程序员,如果我们要去开始一个博客系统的话,那么我们会怎么做?
- 先规划一下我们所需要的功能——如后台、评论、Social 等等,并且我们还应该设计我们博客的 Mockup。
- 随后我们就可以简单地设计一下系统的架构,如传统的前后端结合。
- 我们就可以进行技术选型了——使用哪个后端框架、使用哪个前端框架。
- 创建我们的 hello,world,然后开始进行一个功能的编码工作。
- 编码时,我们就需要不断地查看、添加测试等等。
- 完成一个个功能的时候,我们就会得到一个子模块。
- 依据一个个子模块,我们就可以得到我们的博客系统。
与我们日常开发一致的是:我们需要去划分任务的优先级。换句话来说,我们需要先实现我们的核心功能。
对于我们的博客系统来说,最主要的功能就是发博客、展示博客。往简单地说,一篇博客应该有这么基础的四部分:
- 标题
- 内容
- 作者
- 时间
- Slug
然后,我们就需要创建相应的 Model,根据这个 Model,我们就可以创建相应的控制器代码。再配置下路由,添加下页面。对于有些系统来说,我们就可以完成博客系统的展示了。