写点什么

使用乐高讲授技术实践

  • 2016-06-11
  • 本文字数:1502 字

    阅读完需:约 5 分钟

要把工艺技术讲清楚是很难的,特别是在向高级管理者和执行官们解释的时候。因为通常关键是要理解思维转换和技术实践是开发高品质软件的方法,所以对它们的解释就极为重要了。在第 7 次敏捷运动大会上, Mike Bowler 召开了一个如何将乐高用于技术实践的研讨会。

敏捷游戏大会2016 于Cambridge, MA 在四月28-30 召开。InfoQ 对此活动进行了跟踪报导。这些新闻报导概括了Mike 推行的主要实践。他热情地回答了一些问题,这些问题关于使用乐高指导技术实践、你希望从此类研讨会中看到什么类型的反馈、它对团队或整个组织有怎样的帮助,以及对他觉得有意思的其他工具和游戏的看法。

Bryan Beecham 也曾做过此类研讨会。Mike Bowler 和他通常会一起来呈现这个主题。如果你理解这个实践,那么该研讨会就非常容易推进,它成本低廉(只需要一些乐高)且非常有效:你只需要不到 1 个小时就能完成这些实践,它们包括:

  • TDD
  • 结对编程
  • 重构
  • 技术债
  • 持续集成

这个研讨会不是一种乐高认真玩。你可以在 Mike 的网站上找到介绍(除 TDD 之外,它马上就会有了)。

该研讨会像如下方式运行:

先做一个人物和房子来热热身:它是 LSP 的强制部分,有助于创建安全感和约定。

  • 第一个问题是关于这个房子或这个人物的成本:你有多少砖块?实际你需要多少?这部分实际是关于精益思想和“刚够”的。
  • 然后 Mike 介绍TDD + 结对编程:结对,一个负责写测试,另一个负责编码,使测试通过。
  • 下一阶段增加了重构:该对子扔掉最近的测试,然后再把它们做出来,重构使其通过。
  • 关于技术债这部分可能最滑稽了:Mike 一个接一个地胡乱抛出些测试,你必须使这些测试通过,但不能拿掉任何目前用过的砖块。结果……并不好。为理解差异所在,Mike 又做了第二次,这次去掉了限制。下图展示了这两轮的差异。
  • 持续集成部分可能要与三个以上的团队一起做:每个团队所构建的东西必须要把前个团队的工件封装起来。第一个产品肯定不太完善,至少两次才能做得好一些。

InfoQ:Mike,感谢你为本次研讨会所做的一切。为什么你使用乐高来解释技术实践呢?

我最初的目的是向非技术人员介绍技术概念,这意味着不能直接跳到编码去解释。这里需要一些非技术性抽象,以此说明这些概念。Bryan Beecham 已经设计了使用乐高的 TDD 练习,每个人都得到了非常成功地运用,于是我们继续把这种方式运用到了其他所有练习中。乐高激发了每个人爱玩的天性,使大家更乐于学习和尝试。

InfoQ:像此类研讨会的目标受众是谁?任何人都能参加吗?

我们以各种方式进行这种训练。如果是和管理人员交流,我们将只关注乐高和相关概念。如果是教开发人员,我们将把乐高训练和实际编码训练揉合到一起。我们将首先用乐高引出概念,然后再深入到代码中予以强化。

InfoQ:看到首次重构活动之后的构建,我有几分震惊。在期间和研讨会结束时你听到了何种反馈?

我们听到的第一件事是参加者们有多么欢乐。然后,我们将听到他们从这种方式中关于该概念及该课程的收获。几乎每个人至少都有一个能够应用到实际工作中的收获。

InfoQ:这个研讨会很容易运用。它如何为团队或组织提供长期的帮助呢?

它的重点是帮人们理解概念。为长期帮助团队,他们需要把这些概念应用到自己的实际工作中。

我们鼓励大家给做出来的东西拍张照片,部分原因是向朋友们展示时更有趣了,部分原因有个能提醒你记得这个课程的念想。某些东西可以强化这些概念。

InfoQ:有些组织还没做好玩“游戏”的准备。如何在这种情况下说服他们呢?你能提些建议吗?

我不会去讨论如何玩游戏。而是去讨论如何传授概念,实际上这和我用它玩游戏毫不相干。甚至在大多数严肃的组织中,也不会有人看到我带了乐高砖块就让我把它们拿走的。

查看英文原文 Using Lego to Teach Technical Practices

2016-06-11 19:001406

评论

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

Java知识点锦集1

喜羊羊

9月月更

为什么Vue中的v-if和v-for不建议一起用

达摩

Vue

敏捷Scrum实施落地中的3大典型问题及解法

易成管理学

[Go WebSocket] 多房间的聊天室(六)为什么要加锁?不加锁行不行啊?

HullQin

Go golang 后端 websocket 9月月更

C++学习---cstdbool和cstddef源码学习分析

桑榆

c++ 源码阅读 9月月更

不惧繁杂背景,视频编辑服务一键实现人像抠图

HarmonyOS SDK

推荐:实现 SVG 动画的 5 个 JavaScript 库~

掘金安东尼

前端 9月月更

【精通内核】Linux内核写锁实现原理与源码解析

小明Java问道之路

读写锁 锁降级 Linux内核 9月月更 锁唤醒

前端高频面试题汇总(一)

loveX001

JavaScript 前端

前端二面必会面试题(附答案)

beifeng1996

JavaScript 前端

渡过“寒冬”,看云原生数据库如何助力企业降本增效与持续创新

亚马逊云科技 (Amazon Web Services)

数据库 云原生

【C语言深度剖析】深入理解const的用法(趣味小故事解析)

Albert Edison

指针 C语言 const 9月月更

MFC框架下,加密图片加载并显示功能

中国好公民st

c++ 加密 9月月更

OKR之剑·理念篇01: OKR带给我们的改变

vivo互联网技术

OKR 目标管理 研发管理

图系列算法在转转推荐算法召回及粗排的实践

转转技术团队

深度学习 推荐系统 图算法 graph embedding

腾讯前端一面常考面试题合集

loveX001

JavaScript 前端

数据结构与算法 之线性表

喜羊羊

9月月更

C/C++生态工具链——gcc/g++编译器使用指南

独立开发者_CoderZZ

c++ C语言 GCC g++ gcc 编译器

数据库的schema与数据类型优化

阿柠xn

数据库 sql 高性能 优化技巧 9月月更

数据库的视图该怎么用?

阿柠xn

MySQL 数据库 视图 9月月更

智能湖仓架构实践:利用 Amazon Redshift 的流式摄取构建实时数仓

亚马逊云科技 (Amazon Web Services)

2022-09-14:以下go语言代码输出什么?A:0 0;B:0 1;C:1 1;D:1 0。 package main func main() { println(f(1)) } func

福大大架构师每日一题

golang 福大大 选择题

Elasticsearch聚合学习之三:范围限定

程序员欣宸

elasticsearch 9月月更

Java进阶(二十二)使用FileOutputStream写入文件

No Silver Bullet

9月月更 FileOutputStream 写文件

想成为数据科学家,哪些技能你必须具备?

雨果

Java知识点锦集2

喜羊羊

9月月更

关于数据仓库的特点及组成的概述

阿泽🧸

数据仓库 9月月更

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布

JackJiang

Netty 即时通讯 im开发 开源im

Java后端每日学点系列?线程知否,List懂否,垃圾回收器晓得否

知识浅谈

线程 垃圾回收器 9月月更

头大了,Mysql写入数据十几秒后被自动删除了

南城FE

MySQL 前端 nodejs

关于运维监控系统实践中的一些tips

穿过生命散发芬芳

监控系统 9月月更

使用乐高讲授技术实践_语言 & 开发_Stéphane Wojewoda_InfoQ精选文章