异地金融研发团队的敏捷实施策略-Top100Summit

通过重构提高组织灵活性-百度技术沙龙

重构到管道式函数-软件匠艺小组

全球敏捷之旅2015天津站花絮

全球敏捷之旅2017北京站《禅与复杂》演讲(2:59-3:56)

TDD中变形动作的优先顺序 - Transformation Priority Premise

在TDD循环中,重构(Refactoring)是不改变行为而改变内部结构的动作,保持测试常绿。而变形(Transformation)是改变内部实现来使测试由红变绿。这些变形的变化使代码形式从特殊specific到一般generic。

Uncle Bob的一篇文章。http://blog.8thlight.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html
中用了bowling game kata 和 Prime Factor kata来解释。

继续阅读 More

Do you like my piece of paper?

What I see every day is people creating pieces of paper to take into a room for people to look at and decide if they like that piece of paper, and if they don’t totally like it they say what they would prefer to see on that piece of paper.

This repeats until everybody is happy with a piece of paper.

capture3

继续阅读 More

SVN pre-commit hook

某团队希望做到Continuous Code Review, 想在每次check-in 到SVN之前,先判断特定用户群体否在commit log里面包含了”Review By: xxx”的字样。

记得以前NSN里面有人用过这个法子,记不太清了。

于是研究了一下脚本,其实SVN/GIT都提供了类似的hook, 在<your repository>/hooks 目录下,都是shell或cmd脚本(要看服务器的操作系统了),会在不同的事件时触发。

为了实现更复杂的功能或者需要跨平台,那不妨用shell或cmd去调用Python脚本咯。

继续阅读 More

用户故事使用中的十大错误

1) 在用户故事中,将开发中的相关人员作为系统用户角色

比如 As a po/apo/ppo/developer/tester/manager/integration engineer, I want 。。。

必须注意,As a 中的role是运行时实际使用该系统的用户角色,不是开发时干系人的角色

包括客户文档相关的用户故事,也要以实际使用该文档完成某项任务的视角来描述:什么角色,什么情况下使用该文档用来做什么,达到什么样的可衡量的目标等,而不是某经理要求该文档。

2) 把系统的发布版本放入用户故事标题中

继续阅读 More

Scrum忘记的土地- The Land that Scrum Forgot

Scrum is a starting point. In fact, it’s a great starting point. But, as a framework rather than a full-blown methodology, Scrum is deliberately incomplete. Some things—such as the best technical practices to use—are left for individual teams to determine. This allows a team to create the best fit between their project and environment and an assortment of technical practices.

Scrum是一个起点。事实上,这是一个很好的起点。但是,作为一个框架,而不是一个成熟的方法论,Scrum故意是不完整的。一些措施——例如使用最好的技术实践——留给每个团队自己来决定。这允许一个团队在他们的项目和环境和各式各样的技术实践之间创建最适合自己的方式。

继续阅读 More

设计已死? (Is Design Dead?)

对于很多初步接触极限编程(Extreme Programming, XP)的同学来说,XP似乎宣告了程序设计的死亡。不仅限于很多设计行为被嘲笑为“冗余的前期设计”(Big Up Front Design),而且连像UML,灵活的框架(Framework),甚至连模式(patterns)这些设计技巧都被轻视乃至被完全忽视。实际上,XP中包括很多的设计,只是不同于以往软件开发流程中的做法。XP通过允许进化的实践技巧使演进式设计(evolutionary design)成为一种可行的设计策略。它还为设计人员(Designers)提供了新的挑战与技巧,令他们去学习如何使设计简单,如何利用重构保持设计的整洁,如何在一个演进的形式下使用模式。

继续阅读 More

每日站会说什么?

经常听到有人抱怨说,敏捷实践中会议太多,形式主义严重。在真实了解实际情形后,我们会发现并非这些敏捷实践本身没有价值,而是因为没有正确地领会会议的目的,采取了不恰当的会议形式,或其它深层次的问题,导致会议不能产生预想的结果。每日站会就是一个例子。

首先必须明确,每日站会的目的:基于迭代目标的团队协作和快速反馈。更详细点地说,每日站会提供了在达成迭代目标过程中的团队协作同步点,以及快速反馈循环中的检查和调整点。它的目的不是汇报状态,不是要知晓每个团队成员昨天把时间花在了哪里,不是要知道每个人将要把时间投入在什么地方,而是对目标的跟踪和校准,以及加强在达成目标过程中的协调和合作。

继续阅读 More

大公司里技术专家转做基层敏捷Product Owner,前途何在?

同一般小公司或互联网公司的产品不同,电信设备行业软件系统很复杂,动辄几千人做一个系统。即便在敏捷模式下,为了支持Scaling Agile, PO也是分层次的。三层很常见,越往上,越倾向于管理和协调,越往下,越倾向于实际需求管理和技术。最基层的PO往往是从技术专家转型而来,在初任PO的几个月里常常存在不少困惑,比如:无法投入更多时间花在自己喜欢的技术上;需要同很多人打交道,不仅花费了很多时间,争吵也是常有的事,很多看似简单的事情并不容易推动,很不适应这种工作状态,常有想回到过去纯做技术的冲动。

PO到底是个什么职位呢?在互联网类的公司里,PO做为产品经理是科技,商业与用户体验的综合体,有权决定产品的未来。但在电信设备类的公司里,情况稍有不同,我总结为PO乃技术、管理和人性的综合体。

继续阅读 More