Coding Dojo
Coding Dojo
什么是Coding Dojo?
Coding Dojo是一个学习的过程。一些程序员(通常是15-20人)在一起编程解决一个程序问题。一边编程,一边互相学习。每个人可以从Coding Dojo中学到:解决问题的思路、编程技巧、面向对象设计、演进式设计、结对编程、测试驱动开发、持续集成等等。其实即使从别人犯的错误中,我们也能够学到很多。
组织
一周以前组织者会发出邀请,同时给出所要解决的问题(比如我们这次决定实现一个JSon Parser)。以下是我们的议程:
- Coding Dojo以及原则介绍 - 5分钟
- 问题介绍 - 10分钟
- 2个时段的结对编程 – 20分钟 × 2
- 中断(所有人一起讨论一下当前的解决方案,以及下一步方案,注意事项)- 10分钟
- 2个时段的结对编程 – 20分钟 × 2
- 反省 - 10分钟
会议室组织方式
![]()
在会议室中间有两个人结对编程,一个是驾驶员(Pilot),另一个是领航员(Co-pilot, Navigator)。周围坐的都是顾问(Advisor, Sensei),前面是投影仪。
Coding Dojo中的角色
教练(coach)帮助维护秩序,引导大家
驾驶员(Pilot):负责具体实现,边写代码,边要把自己的设计意图大声说出来
领航员(Co-pilot):负责帮助驾驶员进行设计,负责控制设计的战略方向
顾问(Advisor):坐在周围,通过投影仪观察当前的进展,可以提出问题,但是不能给出方案。驾驶员与领航员必须先回答顾问的所有问题,才能继续写代码。
一些原则
- 不要讨论太多,先写代码
- 写代码之前,先写测试
- 每个人都能从其他人身上学到东西,哪怕是错误
- 所有人参与写代码
- 如果你知道好的方案,分享给大家
- 顾问只能问问题,不能提方案,驾驶员和导航员必须回答所有问题
我们的Retrospective
- 导航员应该更多帮助驾驶员
- 在同一个时段内导航员和驾驶员应该多切换,当然另一个方案是每次替换结对的时候,替换导航员,然后让原来的驾驶员成为导航员引导下一个驾驶员
- 顾问应该保持耐心,减少对驾驶员和导航员的干扰
- 减少私下讨论
- 驾驶员应该大声把设计意图说给大家听
- 实现的Test Case应该事先明确
- 每个人应该尊重驾驶员和导航员,虚心学习
- 使用代码库
- 频繁签入代码
- 重构不够
- 每个人做驾驶员的时候使用自己的环境,使用熟悉的工具。其他人也可以学习他的技巧以及工具
- 重构的时候,跳跃太大
- 使用标准键盘
- 更多的面向对象设计
- 使用Pomodomo作为时间箱,但是使用一个Range(20分钟 +/- 五分钟)而不是一个点
- 鼓励每个人参与
- 教练确保会议秩序
- 替换结对的时候确保所有的测试通过。
Coding Dojo的资源
http://codingdojo.org/cgi-bin/wiki.pl?FrontPage
http://www.youtube.com/watch?v=gav9fLVkZQc
此条目由 小样儿 发表在 学习 分类目录,并贴了 Coding Dojo 标签。将 链接 加入收藏夹。
一项名为“Pomodoro”的个人时间管理方法正日益受到敏捷从业者的欢迎。Pomodoro包含了很多与敏捷团队采用的实践相近似的做法:时间盒、频繁检查和调整、预估、对低技术含量工具的偏好,以及对保持可持续节奏的强调。 Francesco Cirillo从上世纪80年代就开始研究这项技术,当时他还是一个学生,一直在寻找一种方法,提高其学习时间的质量、减少使他不能专注的干扰和打断。
于是我就跟自己打赌——这很有帮助,因为如同受到羞辱——“你能不能学习——真正学习10分钟?”我需要客观的验证,一个时间指示器,然后我发现了一只形状像pomodoro(意大利语里的“西红柿”)厨房定时器。
在接下来的几年里,该技术一直在演变。直到1992年,它形成了基本的形式,一直沿用至今。在Pomodoro技术里面,不间断的25分钟被称为一 个Pomodoro,每项工作在若干个Pomodoro内完成。在每个Pomodoro结束时,有一个短暂的休息;每3或4个Pomodoro结束时,安 排有一个较长的休息时间。
该技术也包括一些轻量级的规划和跟踪。在一天的开始,创建一天中的目标列表,然后预估每个任务分别需要多少个Pomodoro才能完成。工作量超过 7个Pomodoro的任务应该被分解;少于1个Pomodoro的任务应该联合在一起,直到占满一个完整的Pomodoro。
打断和干扰则是被快速记录下来,在当前的Pomodoro结束之后再做处理。在一些罕见的情况下,如果不能用这种方式处理中断,当前的Pomodoro就会被停止并视为无效。Francesco指出,下一个Pomodoro会进展得更好。
在过去几年中,Pomodoro技术已经引起了敏捷社区的关注。Staffan Noteber在Agile2008大会的相关讲演是如此受欢迎,以致于被选为在大会结束时再来一遍。Staffan在Agile2009大会上再次针对这项技术做了演讲,同时Renzo Borgatti也做了一个讲演,名字是:You say tomato, I say Pomodoro。
如果想对Pomodoro技术了解更多,Francesco有一本45页的书和一张单页的备忘单,都可以从Pomodoro技术网站下载。
您是否尝试过Pomodoro技术?欢迎您留下您的评论,跟大家分享使用它的经验。
查看英文原文:Pomodoro - An Agile Approach to Time Management
Coding Dojo的更多相关文章
- Coding道场:第一次
10/23日,我在部门内部进行了一次内部学习,使用目前流行的Coding Dojo(道场)方式,进行了TDD开发的演练.演练的题目如下: 有关Coding道场的介绍,请自行百度一下,我就不再多 ...
- Odd-e CSD Course Day 5
因為今天是最後一天了,我趕緊在這次結束前提出一些前一晚上想到的問題 1. 在TDD的循環中有重構,那 DB 也會進行重構嗎? 在TDD 的重構的過程,其實也經常會重構資料庫 , 但重構資料庫這裡有一個 ...
- 年终盘点:Java今年的大事记都在这里!
在2017年即将结束之际,我们最好停下脚步来看看过去十二个月Java的发展情况.本文,笔者盘点了IT168企业级一年来对Java的跟踪报道. 这一年对Java来说是不容易的,从Java 9一再延期备受 ...
- TDD 之 Dojo coding
dojo和kata的练习记录: 进入 http://cyber-dojo.org/ 由一个人进行 setup a default practice,然后创建: 这里支持各种语言和各种测试框架,这里 ...
- 一起来学习DOJO吧--序
DOJO的官方站点http://dojotoolkit.org/ DOJO是一套完整的javascript解决方案,从UI到类库都提供了全覆盖的支持. DOJO是一套很重的框架,在运用到项目中前请谨慎 ...
- 现代DOJO(翻译)
http://dojotoolkit.org/documentation/tutorials/1.10/modern_dojo/index.html 你可能已经不用doio一段时间了,或者你一直想保持 ...
- 如何优化coding
如何优化coding 前言 最近一直在做修改bug工作,修改bug花费时间最多的不是如何解决问题而是怎样快速读懂代码.如果代码写的好的,不用debug就可以一眼看出来哪里出了问题.实际上,我都要deb ...
- AngularJs2与AMD加载器(dojo requirejs)集成
现在是西太平洋时间凌晨,这个问题我鼓捣了一天,都没时间学英语了,英语太差,相信第二天我也看不懂了,直接看结果就行. 核心原理就是require在AngularJs2编译过程中是关键字,而在浏览器里面运 ...
- 使用 Code Snippet 简化 Coding
在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符一个字符敲还是使用 Visual Studio 提 ...
随机推荐
- DirectSound应用
只是使用的假设PlaySound()这个API函数来显示的声音效果,然后,然后,它不会出现在混合声音,因为PlaySound还有播放期间声音,这将不可避免地导致现有声音停止. 因此,使用 PlaySo ...
- 14行脚本配置Linux下一个Java环境变量
供Java人们刚开始学习.多半Java它需要花费大量的精力在开发环境的配置,于Linux下一个,构造Java环境变量,很可能加入这一努力. 为此,我做了一个bash脚本来配置自己主动Java环境变量. ...
- Mono 4 和Jexus 5.6
Mono 4 和Jexus 5.6 概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mv ...
- javascript系列之核心知识点(二)
变量对象 变量对象是一个与执行上下文相关联的容器.它是一个和上下文密切结合的特殊对象,含有定义在上下文中的变量和函数声明.注意,函数表达式(和函数声明不同的)不包含在变量对象中. 变量对象 ...
- 从头学起android<AutoCompleteTextView文章提示文本框.十九.>
文章提示可以很好的帮助用户输入信息,以方便.在Android它也设置有类似特征,而要实现这个功能需要依靠android.widget.AutoCompleteTextView完毕,此类的继承结构例如以 ...
- CentOS修改用户密码方法
CentOS修改用户密码方法 CentOS修改用户密码方法 1. 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 2. 超级用户 a ...
- C_数据结构
线性结构 线性结构的特点是:在数据元素的飞空有限集中,(1)存在唯一的一个被称作“第一个”的数据元素:(2) 存在唯一一个被称做“最后一个”的数据元素:(3)除第一个外,集合中的每一个元素都只有一个前 ...
- DDD分层架构的进化
.NET逻辑分层架构演示:DDD分层架构的进化 概述: 架构是高层的设计,如果设计和理解有误,必将在实现时带来各种问题.架构又是最稳定的,不会因为各种具体技术的依赖,如各种UI框架.ORM框架.I ...
- lcc之内存分配
现在感觉这本书有些地方没有说透,如果自己的理解能力与基础知识够强的话,理解起来还好,如果不行的话,某些地方理解起来会相当的头疼. 现在来说说内存管理.当初看这一章的时候很快就过去了,感觉很多地方很好理 ...
- HDU 3683 模拟&搜索
给出五子棋残局,推断三步内能否分出胜负,玩家为当前该走旗子的颜色,下一步为白棋或黑棋不定. 依照顺序推断就可以: 1:推断棋盘是否合法,并确定玩家颜色 2:推断当前玩家颜色是否有一个必胜点,有玩家则在 ...