I code it

Code and Life

Thoughtworks Immersion Day 1

进入Thoughtworks已经有差不多4个月了,对于TDD,敏捷开发等有了一点基本的,感性的认识,也知道了一些简单的实践,但是知识非常的不系统,很离散,很破碎。

Thoughtworks为社招的,有一定经验的员工提供一种内部培训,名叫TWI(对应的,对于毕业生,有一次为期6周的TWU(ThoughtWorks University),地点在印度),初衷是让已经在公司工作了一段时间的同事更好的理解公司的文化(当然,也可以吸收这些在其他公司工作过的同事带进来的不同的文化)。TWI培训主要是针对敏捷开发实践的,当然也有一些公司的历史,文化等的介绍。

2012-07-25 17.29.37

Thoughtworks是一个非常尊重dev的公司,这一点可以追溯到公司创建之初,当时公司宣传的理念是“university but pay”,就很明确的表达出了公司的一些理念:这里的层级结构像在大学中一样平坦,大家在这里获得并分享知识,一起成长,但是又有工资。Martin Fowler有篇关于Thoughtworks是什么的文章(事实上,我最初也正是被这篇文章所吸引,而产生加入Thoughtworks的想法的),非常有意思。

历史上,当现实与Thoughtworks尊崇的文化有冲突时,如何平衡呢?Thoughtworks的一贯做法是:不向损害文化的现实妥协,哪怕会因此而付出很大的代价。事实上,每个公司都会在不同程度上尊重自己的开发人员(毕竟,他们是为你工作的),但是很难见到哪个公司做的比Thoughtworks更好。当然,每个人理解的尊重的方式都可能不同的,我自己比较认可而且Thoughtworks也提供给我的方式是这样的:

  1. 你可以专心致志的做开发
  2. 你可以自由的表达自己的想法,和别人讨论设计
  3. 公司提供了宽松,开放的环境,鼓励交流
  4. 有很多优秀的开发人员在你周围,你可以随意与他们讨论
  5. 软硬件都是为了支持开发团队而展开的
  6. 虽然你是开发人员,你可以take更多的responsibility,比如QA/BA等
  7. 有很多有意思的和不那么有意思的项目,鼓励学习更多的技能
  8. 没有常见的“死领导”,肩膀上很轻松
  9. 鼓励你分享自己的知识

事实上,对于Thoughtworks来说,员工永远是其最为宝贵的资产,办公室,计算机,玻璃墙,所有都是可以替代的,唯独这些自称为Thoughtworker的,才是最宝贵并且不可替代的。

TWI的组织者也显然为这种内部培训投入了很多的精力和实践,使得我们的学习过程一直处于轻松,活跃的气氛中,可以说是我参加过最精彩的培训,做到了真正的寓教于乐。

2012-07-25 15.40.12

言归正传,什么是敏捷呢?简而言之,就是敏捷地进行软件开发。如何做到“敏捷地”呢?有很多不同的理论支持,这些理论也并非凭空产生,是通过大量的工程实践而总结出来的经验,事实上,敏捷开发是由很多的方法论组成的集合,敏捷宣言中提到的:

  1. 个体与交互 over 过程和工具
  2. 可以工作的软件 over 面面俱到的文档
  3. 客户合作 over 合同谈判
  4. 响应变化 over 遵循计划

(虽然右边的项也有价值,但是我们认为左边的项有更大的价值)

可以看到,这些都是比较common的一些原则,并没有规定注入如TDD,结对之类的实践。Thoughtworks为什么要使用这些实践呢?因为这些实践是我们在实际项目中,觉得行之有效:能保证软件质量和开发效率,能帮助团队迅速成长,对公司和个人都很有帮助。与其他所有的学习规律一样:

  1. 首先follow一种实践,并身体力行
  2. 与实际问题结合,发现实践可能的不足
  3. 改进这种实践,并将其分享

外界对于Thoughtworks有一些传言,经常会给不熟悉的人这样一种错觉:一群不会编程,只是死记硬背下一些方法论的年轻人,到处招摇撞骗。事实上,Thoughtworker们是我见过的,最具活力,也最热心于钻研技术,热爱分享的年轻人。而且我没有遇到任何一个同事是将敏捷奉为圭臬,或者将其上升到不容置疑的高度,大家都会遵守一些原则,也会采用一些实践,但是不会轻易相信那就是最佳的方式。

可能最后一段看着像是在写广告,那就请将他当成广告吧。给那些曾经像我一样,热爱技术却感觉希望渺茫,每天做一些平淡而无挑战的工作,但是又渴望改变,渴望和更多优秀的同好们一起工作的人们的一个广告。她可能并非最好的选择,但是她绝对是一个值得一试的好选择。

Comments