11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

敏捷咨询工具箱(一)──读书写代码活动

  • 2010-12-22
  • 本文字数:1725 字

    阅读完需:约 6 分钟

只要功夫深,铁杵磨成针

──宋·祝穆

clip_image002

在我们咨询过程中,遇到一些开发技术很薄弱的团队,大部分人只会通过复制和粘贴的方式写代码,然后花费大量的时间进行修改和调试。有些开发人员还只是刚刚从学校毕业,几乎没有什么开发经验。面对这样的团队,如何教他们使用敏捷开发方法?如何教他们测试驱动开发?如何教他们简单设计呢?

如果连一门语言还没有完全吃透,还如何谈测试驱动开发和简单设计呢?这是一个很大的挑战。我回想起自己学习新语言的方法。前些时间我自学了 SCALA 语言,看完了《Scala 程序设计:Java 虚拟机多核编程实战》,但还是觉得很多概念没有吃透,然后我就把书合上,然后把书上所有的例子独立写了一遍,这时才能感觉自己是学了一门语言。于是我用同样的方法来训练这个团队:

一、找一本合适的书。

如果要快速吃透一门语言,最快的方法就是找一本好书,系统的把一门语言学习一遍,扫除语言的盲点。我们如何选择一本合适的书呢,我总结了三个条件:

  1. 选择国外大师的权威著作,这些大师应该有深厚的开发经验,这样可以从书上学到很多编程和设计的最佳实践。
  2. 书不能太厚,最好在 200-300 页左右,足够介绍完一门语言的常用特性和最佳实践。那些面面俱到的的厚砖头一般适合做参考手册。
  3. 书上的例子一定要经典,这样比较适合练习。

因为团队主要使用 C 语言,我就在 Google 上搜索了一下“C 书籍推荐”,找到了很多网友推荐的 Top C 语言书籍。通过我几天的阅读和筛选比较之后,最后我为大家选择了《C 程序设计语言》这本书,完全符合上面的三个条件。如果你是使用的其它编程语言,可以参考下面的读书列表:

二、具体的读书计划

选择书之后,就要有一个具体可行的读书计划,这样大家能有节奏的一步一步把书读完。因为大家都有一些C语言基础,所以我们把读书活动安排为每天的家庭作业,每周读完2章。我们的验收标准是:在不看书的情况下用 TDD 实现每章全部的例题(这个后面会有详细的介绍)。下面是我给大家制定的读书计划:

时间

内容

第一周

第 1 章 导言

第 2 章 类型、运算符与表达式

第二周

第 3 章 控制流

第 4 章 函数与程序结构

第三周

第 5 章 指针与数组

第 6 章 结构

第四周

第 7 章 输入与输出

第 8 章 unix 系统接口

三、光看不练假把式

有了书,有了读书计划,当然这个还不够。这个活动的重点就是要写代码。这是读书写代码活动的验收条件。要求每个人在不看书的情况下,把书上的例题改造成测试驱动的代码。一章所有例题都改造完了,才算是把这章读完。比如:Hello World 的例子

复制代码
#include
main()
{
printf("hello, world\n");
}

要求把这个例子改造成测试驱动的代码。改造之后代码分别为:

测试代码:

复制代码
TEST(test_case_name, test_greetings) {
EXPECT_EQ("hello, world", greetings());
}

业务代码:

复制代码
char[] greetings()
{
return ("hello, world");
}

通过这样的训练,每个人不但可以系统的学习一遍 C 语言的知识,并且可以锻炼如何用 TDD 进行开发。

四、闭环──代码展示

如何保证每个人可以完成写代码活动并且达到预期的效果呢?我们搭建了一个 Subversion,让每人把自己的代码提交上去。我们每天早上会有一个代码展示活动。准备一个投影仪,每个人花 3-5 分钟展示和讲解自己的代码,然后集体鼓掌表示认可,然后其他的同事提出问题和改进建议。这样有三个好处:

  • 让每人分享自己的代码和经验,这是对每人的认可和鼓励
  • 一个互相学习的氛围 ; 通过展示可以学习一下其他同事是怎么写代码,怎么写测试
  • 互相督促,如果没有完成代码,这时候就没有任何东西可以展示了

我们坚持了一个月之后,这个活动结束了。每个人都感觉很好,系统的把 C 语言掌握了一遍。一些有经验的一个开发人员也觉得,系统的学习之后消除了 C 语言的很多盲点。现在对 C 语言编程更有信心了,并且还学会了如何做 TDD 开发。

关于作者

钱安川,ThoughtWorks 公司高级软件咨询师、敏捷过程教练、资深讲师、Team Leader、开发者、 BeiJing Open Party 组织者和主持人。个人博客:敏捷开发训练

2010-12-22 07:382622

评论

发布
暂无评论
发现更多内容

从七日更,到28天写作挑战,我无法拒绝的原因

梁龙先森

大前端 编程语言 28天写作

价值 - 价值的底色(一)

石云升

读书笔记 投资 28天写作 价值

还在手动写数据库文档吗?试试这个工具,划水干活儿两不误!

我爱娃哈哈😍

数据库 文档生成

要想软件“一想之美”,UI测试少不了

华为云开发者联盟

软件 测试 华为云

文档驱动开发模式在 AIMS 中的应用与实践

华为云开发者联盟

Web 代码 API 文档

LeetCode题解:111. 二叉树的最小深度,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

一次系统调用时间过长追踪完整教程案例

AI乔治

Java Linux 架构

俯瞰Dubbo全局,阅读源码前必须掌握这些!!

冰河

架构 分布式 微服务 dubbo 服务治理

如果你听说过 Elastic Certified Engineer

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

一个正确的编程思维

程序员吴师兄

28天写作

云算力矿机租赁挖矿APP系统开发|云算力矿机租赁挖矿软件开发

系统开发

Hive的调优你都知道那些?

大数据老哥

大数据 hadoop hive

新思科技网络安全研究中心发现Bouncy Castle中的漏洞

InfoQ_434670063458

新思科技 Bouncy Castle

CSS09 - 文本&背景属性

Mr.Cactus

html/css

【CSS】CSS对大小写敏感吗?

德育处主任

28天写作

甲方日常 82

句子

随笔杂谈

数据中心“容灾”和“备份”的区别

如何使用Eclipse内存分析工具定位内存泄露

Java老k

Java 内存泄露

杜绝标题党,好的标题是成功的99%

xcbeyond

方法论 28天写作 写作技巧

开始的开始-可能是最早提交的28天写作活动作品

石君

28天写作

甲方日常 81

句子

随笔杂谈

如何使用Eclipse内存分析工具定位内存泄露

AI乔治

Java eclipse 架构

【Mysql-InnoDB系列】InnoDB架构

程序员架构进阶

MySQL 架构 innodb 28天写作

Spark HistoryServer日志解析&清理异常

笨小康

大数据 spark hdfs

volatile 关键字精讲

伯阳

Java volatile 后端 关键字 多线程与高并发

代码也能“杀”虫:此虫,真虫非Bug也

华为云开发者联盟

代码 华为云 modelarts

Java中定时器Timer致命缺点(附学习方法)

叫练

学习 定时任务 多线程 定时器 技术学习

不愧是Alibaba技术官:程序员必会的架构知识清单,如何让你技术上的提升面试时的丰收

Java架构之路

Java 程序员 架构 面试 编程语言

ETL都没弄懂,谈什么大数据 ?我用一分钟给你整明白

智分析

ETL

VUE项目性能优化实践——通过懒加载提升页面响应速度

葡萄城技术团队

Vue

边缘计算安全技术研究

华为云原生团队

云计算 大数据 云原生 边缘计算 华为云

敏捷咨询工具箱(一)──读书写代码活动_敏捷_钱安川_InfoQ精选文章