<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>梦想风暴</title>
  <link>http://dreamhead.blogbus.com</link>
  <description><![CDATA[一个小程序员的信口开河]]></description>
  <generator> by blogbus.com </generator>
  <lastBuildDate>Tue, 30 Jan 2007 23:24:15 +0800</lastBuildDate>
  <image>
									<url>http://public.blogbus.com/images/head.gif</url>
									<title>梦想风暴</title>
									<link>http://dreamhead.blogbus.com</link>
								</image>  <item>
   <title>错过Agile China</title>
   <description><![CDATA[<p>上周末，<a href="http://www.agilechina.net/" target="_blank">Agile China</a>，因为家里有些事，我没有参加。<br /><br />作为一个ThoughtWorker，错过这次活动的遗憾并不是像之前以为的那么大。首先，这次活动所涉及到的内容，大多是内部讨论或是讲座涉及到的东西，再有，这次活动做得比较好的地方是很快就放出了活动的讲<a href="http://agilechina.net/" target="_blank">演稿</a>和<a href="http://211.100.26.82/CSDN_Live/tw2008/agile2008.htm" target="_blank">视频</a>，所以，可以随后弥补一下错过现场的遗憾。<br /><br />真正值得遗憾的是，错过了一次与人交流的机会。</p><p>有时，我会想，公司为什么要举办Agile China这样的活动。在ThoughtWorks的工作这段时间，敏捷已经成为了一种工作习惯，<a href="http://dreamhead.blogbus.com/logs/12705285.html" target="_blank">我甚至不觉得它有任何特别的</a>，对我而言，它只不过是一种恰当的工作方法而已。与很多书上介绍的敏捷方法，几乎没有太大的差别。<br /><br />最近，一个朋友给我写了一封邮件，给我介绍了一些他心目中应该如何做持续集成，这是他读了一些东西加上了一些自己思考的结果。不过，在我看来，所有这些内容和我日常工作中使用的持续集成差别几乎没有。显然，当这些内容还停留在他思考中的时候，我们已经在实践了。显然，他对这方面的了解还是有些不足的。事实上，这位朋友也很愿意提高自己，只是周遭的环境能够给他的帮助太有限了。<br /><br />和Darwin聊过，ThoughtWorks带给我们的并不是直接技术上的进步，而是为我们打开了一扇窗。与不同的人交流，会让我们拥有更开阔的视野，总有很多新鲜东西在等待我们了解。<br /><br />还是那句话，敏捷不过是一种恰当的工作方式而已。对比于所谓的传统开发方式，敏捷给人的感觉是很不同，但如果真正在工作中使用它，消除了它的神秘面纱，也不过如此。但真正有多少人能在工作中使用。它这是一个问题。只读几本书，照着几个实践去做，就&ldquo;敏捷&rdquo;了吗？未必。看到很多人在抱怨敏捷，不过，很多说法都是想象或是教条的结果。<br /><br />公司举办的Agile China实际上是一种经验分享，告诉大家，我们在做什么。正如我前面所说，这些东西其实并不是什么新鲜东西，但对于不了解它的人来说，它就是新鲜东西。</p><p>闭塞，是阻碍人不断进步的绊脚石。</p><!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/23826144.html</link>
   <author>dreamhead</author>
   <pubDate>Sun, 29 Jun 2008 23:24:45 +0800</pubDate>
  </item>
  <item>
   <title>苍天作弄</title>
   <description><![CDATA[<p>当意大利顶着世界冠军的头衔来到欧洲杯的赛场，没人会怀疑它会从小组顺利出线，尽管它所在的是所谓的死亡之组，毕竟失去齐达内的法国如同失去了灵魂的人，巴斯腾的荷兰总是给人激情有余、实力不足的感觉，而罗马尼亚，它的辉煌可能还停留在哈吉的年代。<br /><br />小组赛前两轮，似乎一切一切都在朝着不利于意大利的方向发展。荷兰一下子成熟起来，3:0斩意大利于马下，4:1横扫法国，对世界杯冠亚军的一视同仁让荷兰一下子成了欧洲杯冠军的头号候选。而首轮0:0沉闷战平法国的罗马尼亚，面对意大利的时候，突然被激发出无穷的活力，与意大利打了一场激情四溢的比赛。在这场比赛里，裁判似乎对世界冠军并不友好，上半场让托尼的进球化为乌有，下半场又判给了罗马尼亚一个点球。<br /><br />意大利是一支奇怪的球队，每当站到悬崖边上，它总能爆发出惊人的能量，82年的足球丑闻和06年的电话门为意大利带回了两座世界杯。这一次，意大利又一次站到悬崖边上。这一次，布冯发挥&ldquo;失常&rdquo;了，作为队长的他，扑出了穆图的点球，让意大利保留住出线的最后一线希望。<br /><br />两轮战罢，没有人看好意大利，有人在替荷兰谋划着败给罗马尼亚，挤掉世界杯冠亚军。<br /><br />当世界杯冠亚军再次站到一起，早已没有了06年的光环，多少还有一丝的苍凉。毕竟他们为之而战的不再是金杯，而仅仅是一个小组出线名额，甚至胜利者都无法掌控自己的命运。<br /><br />老天在作弄意大利未果的情况下，于是，选择了作弄法国队。<br /><br />开赛不久，新一代法国攻击核心&mdash;&mdash;里贝里便在一次拼抢中受伤下场。如果说这只是作弄的序章的话，那么，头两场表现可以用失常形容的皮尔洛开始把这场作弄推向高潮。第25分钟，皮尔洛用他最擅长传球方式，将皮球送到禁区里面那个守门员无法出击而又在后卫身后的位置，托尼恰到好处的挺球，让客串中后卫的阿比达尔只有在背后犯规。点球、红牌！</p><p>在AC米兰已将头号点球手位置让给卡卡的皮尔洛，又一次站到了点球面前。事实证明，复活的皮尔洛是无可阻挡的，1:0。如果说还有比被红牌罚下的阿比达尔更郁闷的话，也许就是纳斯里，这个开场替换里贝里出场的法国小将，还没来得及把身体跑热，就因为这次犯规带来的人员调整，被一个中后卫换下。<br /><br />在这场比赛中，复活的不仅仅是皮尔洛，还有米兰的新后卫赞布罗塔。于是，两个复活之人，开始在法国后防线面前一次次送出威胁球。如果不是德甲今年的头号射手&mdash;&mdash;托尼忘记带来得分能力，也许意大利早早就会大比分领先。与之形成鲜明对比的是，赛场的另一端，法国前锋亨利和本泽马，两个人只留下孤独而无奈的身影。<br /><br />下半场开始不久，换下9个主力的荷兰队打进罗马尼亚一个球，意大利人看到了出线的曙光。巴里混小子卡萨诺的盘带为意大利队赢得了一个禁区正面的任意球。这时，头号任意球手皮尔洛已经离场。站在任意球面前的是罗马新贵&mdash;&mdash;德罗西，他也是意大利的新10号。当他的重炮轰出，亨利&mdash;&mdash;没能将足球送入意大利球门的法国前锋，无意中用脚尖改变了足球的方向，法国门将回天无力，2:0。<br /><br />当荷兰队攻入第二球的时候，意大利人开始庆祝了，他们抓住了救命稻草，成功上岸！</p><!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/23192166.html</link>
   <author>dreamhead</author>
   <pubDate>Wed, 18 Jun 2008 23:54:56 +0800</pubDate>
  </item>
  <item>
   <title>寂静深夜改bug</title>
   <description><![CDATA[bug这种东西，只要存在，早晚会暴露出来，即便是<a href="http://www.cnbeta.com/articles/55431.htm" target="_blank">深藏25年</a>。不过，我们了解到的bug大多不具备很深的资历。有些不幸的bug会被QA们扼杀在摇篮之中，稍微强壮一点的也许可以生存到系统发布之后。<br /><br />拜IE6所赐，我们的系统刚刚上线，便有一个bug浮出水面。经过验证，这是IE6处理直接打开附件（如PDF、PPT等）的错误。不过，好在这是一个广泛遇到的问题，使得这个bug连午饭时间都没有坚持到，便被消灭了。<br /><br />按照对客户的承诺，我和另外一个同事要在办公室支持到晚上10点。上午的时候，我们的QA和客户努力了三个小时，并没有发现其它问题，于是，我们想当然的认为我们可以按&ldquo;点&rdquo;下班。就在我们俩准备收拾东西回家睡觉之前，从睡梦中醒来的客户终于发现了bug。于是，我们只好在深夜来临之际，开始了bug征服之旅。<br /><br />有bug不是什么坏事，发现总是比不发现好。<br /><br />在客户和PM压力之下修改代码并不是什么愉快的经历，好在bug们都是一些友好的家伙，很容易就定位到。不过，因为客户在线，所以，必须强迫自己把事情做得尽可能按部就班：本机测试、提交到主干、提交到分支、部署到测试环境&hellip;&hellip;<br /><br />感谢之前大家辛勤努力编写的测试，让我们很容易就知道自己的修改在系统内会造成怎样的影响。通过所有测试的那一刻，心头如释重负。在这个原本很是紧张的时候，多了一份自信。我喜欢这种感觉，虽然忙碌，但依然从容，一切尽在掌握之中。<br /><br />这个无眠的夜里，身边还有自己的Pair，有专程赶来帮助我们进行验证的项目组的老大哥，当然，还有一直都很辛苦的PM，一个敬业的团队。<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/22304472.html</link>
   <author>dreamhead</author>
   <pubDate>Thu, 05 Jun 2008 03:55:30 +0800</pubDate>
  </item>
  <item>
   <title>等待发布</title>
   <description><![CDATA[一起想一下，程序发布之前的情形。<br /><br />印象中，这应该是一个手忙脚乱的阶段，一大群人奔前跑后，忙着处理各种各样的问题，尤其是bug。许多人回忆自己经历的时候，往往会很有成就感的说，在某某程序发布之前，忙了一整夜，终于在程序发布之后，回到家里，一觉睡了N个小时，俨然一副历经沧桑的样子。自己经过的，既有有过连续十几天工作十几个小时，为了赶上发布日的经历，也有连续几个熬到后半夜改bug的痛苦。虽然这些都是不错的日后谈资，但当时，那是透支的感觉。<br /><br />现在，我在等待发布。<br /><br />是的，等待！<br /><br />Story的开发工作早就已经完成，bug修改也到了尾声。代码已经冻结，Mingle上可供开发的卡已无踪影，有一种闲暇无聊的感觉。<br /><br />这已经不是第一次体验发布前的闲暇了。记忆中，最近做过的几个项目，到了最后的几天，都会出现无卡可做的情况。最极端的是有一次，在PM的陪伴之下，打了多半天的游戏。<br /><br />对比之前的经历，这样的经历显得很特别。原本在我的印象中，越是临近发布，应该越是忙碌，而这种一下子闲下来的感觉，真的是让人有些不适应。<br /><br />这个时候，PM就成了给大家找事的人。比如，他会组织大家进行一些讨论，看看之前那些做得好，做得不好，以便在后续的工作中进行改进。比如，他会把一些属于下一个阶段的任务拿过来，让大家分析一下，提前热热身，有些手快的家伙，甚至会顺便把一些任务做完。<br /><br />这样难得的清闲，多半要归功于合理的计划和控制。其实，想想之前的经历，最终期限并不是合理规划出来的。事实上，大多数情况下，对于要做什么，以及这些工作的工作量究竟有多大，并没有很好的估计，所以，往往就是指定一个发布的日期，剩下的就是靠人了，其结果就是为了赶上发布日期，拼命的加班加点，那种透支需要很长一段时间才能恢复过来。<br /><br />而现在做项目，所要做的一切都是经过大家一起估计出来，包括客户和开发团队，大家对于软件开发的实质认识得比较清楚，所以，不会做一些杀鸡取卵的事情，于是，所有的一切，都会按照预期一步步进行：开发团队也不会为了追赶进度，而损失了软件的内在质量；客户会重新认识他需求的价值所在，做好优先级排序，而不会不明就里的要求全部完成。这是一个合理的开发过程，一种软件开发应有的状态。<br /><br />准备发布了！<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/22209516.html</link>
   <author>dreamhead</author>
   <pubDate>Tue, 03 Jun 2008 22:08:31 +0800</pubDate>
  </item>
  <item>
   <title>职业的程序员</title>
   <description><![CDATA[有人问我，在目前这个项目中，和外国同事一起工作的感觉如何，我答曰，他们更职业。<br /><br />这里说的职业，并不是说他们写出的程序本身有多么神奇，恰恰相反，他们写出来的程序和我们写出来的程序，看上去并没有多大的差别。之所以，他们给我留下更职业的感觉，主要是日常工作的一些细节。<br /><br />刚开始进入项目的时候，我们几个中国同事对项目完全是一头雾水，甚至Rails开发都很少，所以，在和他们一起工作的过程之中，就需要他们为我们做大量的解释，而这种时候，他们总是表现得非常耐心。有时候，语言上的障碍让我们不能一下子抓住他们说的重点，他们就会不厌其烦的一遍遍解释着，直到我们表示自己真正的理解了。<br /><br />刚刚入门的人难免会问一些愚蠢的问题，他们并不会嘲笑，反而会认真的给你讲解，这会给人以极大的信心，不会因为问题的愚蠢而被打击了积极性。回顾自己之前在工作中的表现，在这一点上，我做得总是很不够，我愿意给人解释一些问题，但对于简单的问题，我有时会表现得不屑一顾。实际上，谁没有从笨笨的初学阶段走过来呢！对于初学者，鼓励的作用更大一些。最近一段时间，我会和几个新近加入项目的同事一起工作，自己刻意在这个方面注意了一下。<br /><br />前些天，有一些来自产品环境的任务，要对产品数据做一些修改。这些外国同事对这种问题的想法是，写个脚本解决它，即便数量不是很大。所以，那几天几乎每天都是在写脚本。其实，对于数据量不大的一些修改，手工修改可能来更快，但是，每次都用脚本解决问题，一来可以锻炼一个用脚本解决问题的好习惯，二来可以避免做一些让自己头疼手工操作，将其转化为编程问题，解决起来更有乐趣，再有，以后遇到类似的问题，有之前的脚本可以参考。这里不得不说一下用Ruby写脚本还是很方便的，Rails项目的开发和维护都用Ruby，很大程度将二者统一起来。<br /><br />项目进行性能测试，一个外国同事将测试结果放到了一个电子表格中，做成了动画效果，很高兴的给秀给我们看。因为在他看来，那是一件有乐趣的事，尤其是一群人乐呵呵的围绕在他身边看他的工作成果。<br /><br />我们的开发平台是Mac，基本上就是一个Unix平台。所以，我们的外国同事经常会给我们展现他们良好的运用Unix命令的能力。他们经常将一些Unix命令组合起来，完成一些辅助开发的工作，很大程度的提高了工作效率。<br /><br />在我们项目的Mingle里面，有一个Dev Standup的页面。在日常的开发中，一些解决起来会有些困难部分或者影响会比较大的部分，就会记录在这个页面里面。一方面，分布在中国和美国的同事都有机会知道对方做了些什么影响比较大的部分，另一方面，双方也可以协作解决一些对方觉得头疼的问题。<br /><br />在ThoughtWorks做程序员，幽默感是不可缺少的一环。所以，经常会出现这样画面：&ldquo;你能帮我一下吗？&rdquo;，&ldquo;不&rdquo;，然后，一个人过去问什么事；&ldquo;一个问题&rdquo;，&ldquo;一个答案&rdquo;；两个人正在讨论，有一个人过来说&ldquo;我觉得有道理&rdquo;，另一个过来说&ldquo;我不这样认为&rdquo;&hellip;&hellip;<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/21728427.html</link>
   <author>dreamhead</author>
   <pubDate>Mon, 26 May 2008 23:59:22 +0800</pubDate>
  </item>
  <item>
   <title>哀悼，逝去的生命</title>
   <description><![CDATA[这是一个全国哀悼的日子，为那些在地震中逝去的生命。<br /><br />关于地震，我一直想写点什么，又不知从何下手，因为我着实不是一个愿意记录悲伤的人。但我还是决定写一些东西，让思绪飘散一下。<br /><br />这注定不是一个平静的年景：雪灾，火车相撞，地震。国难让中国人空前的团结起来。<br /><br />对我而言，今天也是姥姥过世三周年的纪念日。我是姥姥一手带大的，对姥姥有着深厚的感情。所以，我深知亲人离开的痛苦。地震让那么多人失去了亲人，对于活着的人，那是一种折磨，无论你怎样的坚强。<br /><br />和老妈通电话，她对于地震的记忆要比我深刻，因为75年的海城地震和76年的唐山地震，对于家里都是有影响的。因为曾经离地震很近，所以，她更知道今天的地震意味着什么。<br /><br />地震时，我以为自己眩晕，后来，才意识到不对，但也并没有往心里去，因为念高中时，学校离矿区很近，矿里放炮的时候，就会感到楼在晃。当我得知地震发生在四川，北京可以感到明显的震动，我知道这会是一场灾难。<br /><br />其实，最近一段时间，我有意无意在回避关于地震的消息，因为我知道，那些消息会让自己心痛。<br /><br />有人以为，有些公司或个人捐款是在作秀。如果真是这样，我希望这样的秀越多越好，只要是对灾区有益的。<br /><br />默哀那一刻，站在办公室里，耳边是响亮的喇叭声和警报声，思绪是混乱的。<br /><br />自然面前，人很渺小。这是我写在自己饭否上的一句话。渺小的一方，价值何在？在抗震救灾的过程中，一个个感人的故事给了我们答案：人性的光辉。<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/21238368.html</link>
   <author>dreamhead</author>
   <pubDate>Mon, 19 May 2008 23:23:55 +0800</pubDate>
  </item>
  <item>
   <title>ThoughtWorks的开源土壤</title>
   <description><![CDATA[今天到CSDN参加了一个关于开源的讨论，谈到了自己参加开源项目的感受，也谈到了公司的一些情况。关于自己的部分，前前后后在blog里提到了不少。这里稍微整理一下自己对公司开源情况的一些理解，不见得完全正确，只是基于自己看到的和理解的，如果哪位同事觉得不对或不足，不妨站出来纠正或补充我。<br /><br />ThoughtWorks是一个咨询公司，这意味着我们有很多机会参与到不同领域的开发之中，也就让我们的经验可以得到不断丰富，更重要的是，我们有机会知道哪些经验是可以复用的。一些可以被复用的知识就在开发过程中被识别出来。ThoughtWorker们是一群愿意不断把事情做得更好的人，于是，就会有一些人把这些可以复用的部分提炼出来，将其开源，把这些知识分享到给社区。据说，<a href="http://cruisecontrol.sourceforge.net/" target="_blank">CruiseControl</a>、<a href="http://rubyworks.rubyforge.org/" target="_blank">RubyWorks</a>就是诞生自ThoughtWorks的实际项目。<br /><br />ThoughtWorks最有价值的部分是人。和这样一群人一起工作，只要你把自己的想法抛出来，就会有人愿意与你讨论。相信大家都有类似的经验，很多时候，自己想一个问题很容易走进一个误区，而和别人稍微讨论一下，即便这个人的言论本身并不能给你带来太多的价值，但这个讨论的过程会让自己的思路逐渐清晰起来。ThoughtWorker们是一个巨大的思想来源，这样一群人之间的讨论经常会激荡出各种各样的火花。一个业余的例子是上周五下班之后，一群人玩编故事的游戏，其结果是包括周边的人在内，大家都已经乐得直不起腰了。<br /><br />开源，需要一个环境。如果周围的人都在做开源，自己就会以为开源是一件理所当然的事情。列在公司开源网站上的项目，其实那只是一些比较知名的项目，也是冰山一角。平时，不经意间和某个人聊天，你就发现，原来身边的这个人正在做一个开源的东西。大家在一起讨论的时候，也经常可以听到这样的话，那就不妨开源一下试试。陶公子最近发起了一个<a href="http://www.javaeye.com/topic/191261" target="_blank">关于Domain Model的讨论</a>，我就对他说了类似的话。<br /><br />公司内部有一个Innovation Community，也就是说，公司是鼓励大家进行创新的。经常会收到公司内部关于Innovation的邮件，介绍一些最近一段时间有人做的一些事情。其中很重要的一环就是一些ThoughtWorker新近发起的一些开源项目。gigix最近就在一次Innovation Community活动上，介绍了<a href="http://code.google.com/p/fluorida/" target="_blank">fluorida</a>。<br /><br />如果一些开源项目能够证明自身的价值，公司也是愿意投入一些精力将它完善。<a href="http://selenium.openqa.org/" target="_blank">Selenium</a>和CruiseControl就是这样在ThoughtWorks的协助下，得到了快速的成长。当然，不只是公司员工的项目，对于一些其它有价值的项目，公司也会投入一定精力去做，比如Ruby和JRuby。<br /><br />有了这样的土壤，开源也就变得自然而然。<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/20962047.html</link>
   <author>dreamhead</author>
   <pubDate>Thu, 15 May 2008 23:06:11 +0800</pubDate>
  </item>
  <item>
   <title>客户来了</title>
   <description><![CDATA[敏捷软件开发中，与客户的沟通是一项必不可少的内容，因为只有客户才知道他们自己想要的是什么，只有他们才真正了解自己的业务流程。于是，在ThoughtWorks，客户来访是很常见的，这不，我们的客户今天就来了。<br /><br />一大清早，客户就到了办公室，他们给我们做了一个关于项目的介绍，让我们有机会聆听一下真正使用这个系统的人究竟如何看待这个系统，他们为什么会有这样的业务流程，在他们看来，哪些东西才是最有价值的部分以及他们希望这个系统未来会在他们的工作中起到怎样的作用。虽然在这个项目也工作了一段时间，但我也只是知道有哪些东西，对于为什么是这样，完全没有概念。今天客户的到来算是给我们补上了欠缺的一课。<br /><br />对于开发者而言，客户到来的作用很直接的体现在某些细节问题的确定上。通常，我们有了问题会问我们的BA（业务分析师），但BA不能给出答案的部分，就只能等待客户的回答了。原本因为时差的关系，一旦涉及到客户，这个过程至少需要一天。而如今客户就在身边，一旦我们有了问题，几乎瞬间就可以得到解决，开发周期大大的缩短。当然，客户不会一直在这里，所以，趁着客户在的这几天，我们要充分发掘他们的作用。<br /><br />以前也曾经历过客户到来，但这次给我留下的印象却特别深刻。因为，客户让我们近距离的接触到他们的业务。<br /><br />我们的项目是一个关于宾馆审计的项目，简而言之，有人制定标准，有人按照标准进行检查。虽然听起来很简单，但是系统里面的概念却离我们很远，很难想象究竟是什么样子的。今天，客户就带着我们亲身体验了一下做审计的感觉。<br /><br />我们去的是客户旗下的一家五星级宾馆，宾馆的总经理带着我们在宾馆内部进行参观，过程之中，还为我们解释了很多真正的检查过程中会出现的问题，在这个过程中，一个个曾经因为写程序而听说过的名词不断的出现在耳边，那个曾经遥不可及的概念，一下子变得异常清晰。上午的讲解和晚上的参观让这个系统变得更加真实了。以前只是住过宾馆，还从来没有从其他角度想过问题。今天的参观，明显是抱着&ldquo;找茬&rdquo;的心理。顺便说一下，我们的&ldquo;审计&rdquo;还真起到了一定作用，有人在宾馆的游泳池边上的宣传牌上发现了错别字。<br /><br />客户到来，还有一个很直接的好处，那就是，给了我们一次team building的机会。即便单从这个角度说，我们也总是欢迎客户来访的。^_^<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/20801070.html</link>
   <author>dreamhead</author>
   <pubDate>Mon, 12 May 2008 23:26:09 +0800</pubDate>
  </item>
  <item>
   <title>最佳雇主</title>
   <description><![CDATA[<p><a href="http://blog.csdn.net/programmer_editor/archive/2008/05/05/2392083.aspx" target="_blank">谁是最受程序员欢迎的雇主？</a><br /><br />一篇关于最佳雇主的帖子，很高兴在里面看到了ThoughtWorks的名字。<br /><br />很快，成为ThoughtWorker就要满一年了，这一年时间里，我一直享受着在ThoughtWorks工作的乐趣。确实，它和我之前工作的环境差别很大：开放的工作环境、没大没小的工作关系、不利于保持身材的零食、需要排队的游戏机等等。这段时间一直在考虑一个问题，对我而言，ThoughtWorks到底好在哪里。思来想去，我的答案是人文环境。<br /><br />依然记得当年，我在当时的部门里发邮件尝试与大家讨论技术，应者寥寥；<br />依然记得当年，有人劝我放弃所谓新鲜想法，老老实实走在原来的道路上；<br />依然记得当年，有人对我说，只有做管理才有更大的价值，怎么你对管理一点兴趣都没有；<br />依然记得当年，我们把&ldquo;以人为本&rdquo;作为笑话来听；<br />&hellip;&hellip;<br /><br />我也依然记得，当年选择软件开发作为职业是因为热爱；<br />我也依然记得，当初遇到Darwin点燃了我对技术的热情；<br />我也依然记得，在本应完成一个功能的时间里完成整个系统重写的快感；<br />我也依然记得，修改别人留下的bug缠身的程序直至深夜；<br />&hellip;&hellip;<br /><br />用了自己职业发展的最初几年，我逐渐清晰了自己在职业发展路上的追求。我会努力走在自己预期的路上，如果环境不能再给予我所需要的，我会寻觅其它的环境。<br /><br />在这里，我得以继续走在技术的路上；<br />在这里，身边有一群有想法的人，让讨论可以深入下去；<br />在这里，总有人能在不同的角度给你一些新鲜的东西，让我不得不偷偷去补各种各样的新知；<br />在这里，可以和有很多年的工作经验的人一起工作，学习他们解决问题的思路；<br />在这里，完成功能绝对不是开发的终点，大家总是竭尽所能让程序看上去更清晰；<br />在这里，关注用户价值会成为程序员也要思考的问题；<br />在这里，我有机会体验不同的角色；<br />在这里，我终于弄清楚了leadship和management不是一回事；<br />&hellip;&hellip;</p><p>幸运的是，我坚持了自己的选择；幸运的是，我成为了ThoughtWorker。 </p><!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/20340024.html</link>
   <author>dreamhead</author>
   <pubDate>Mon, 05 May 2008 23:52:58 +0800</pubDate>
  </item>
  <item>
   <title>新项目，新体验</title>
   <description><![CDATA[又到周末了，由于<a href="http://dreamhead.blogbus.com/logs/19475526.html" target="_blank">CodeJam</a>的原因，这已经是我连续第十二天的工作了，有些许疲惫。在这个即将到来的周末，要好好让自己放松一下。<br /><br />这周开始了一个新的项目，一个Ruby on Rails的项目，一个让我期盼了很久的项目，也是我之前<a href="http://dreamhead.blogbus.com/logs/19324827.html" target="_blank">学习Rails</a>的最重要原因。不过，Rails是我最近的blog中出现频率很高的字眼，所以，我并不打算在这里聊Rails的话题。<br /><br />既然不谈技术，那就不妨聊一些与自己之前做项目不同的体验吧！<br /><br />在我们这里开发的准确的说是这个项目的第二阶段，也就是这个项目已经有了很多东西，之前这个项目是由美国那边的团队来做，所以，我得到了一个观察国外的ThoughtWorker如何做事的机会。原来参与过的项目里面，更多的是中国这边的ThoughtWorker，所以，我饶有兴致去观察一下二者之间的差异。由于参与这个项目的ThoughtWorker大多是有经验的开发者，所以，很多方面做得成熟许多。<br /><br />这个项目的自动化程度很高，显然，这些ThoughtWorker在开发之初做了很多工作，把许多可以自动化处理的部分都放到的Rakefile里面。所以，我们得以把更多的精力放在开发本身上，少了很多繁琐的操作。一个简单的例子是，我们提交代码只要简单敲一个命令，首先会到SVN进行更新，然后重做数据库，运行测试，随后，把增加的部分找出来添加到SVN中，最后，它会问我们Pair的人，Story的编号，以及做了哪些工作，以便生成SVN提交的日志。和大多数自动化的工作一样，这些工作本身没有任何技术难度，但有了这些之后，我们可以少敲一些命令，更关注开发本身。其实，之前的几个项目也有一些自动化，比如用Cruise Control做持续集成，但这个项目应该是我经历过的自动化程度最高的项目，差不多常见的重复性工作都自动化了，看看那长长的Rake任务列表便可见一斑。<br /><br />每天早上，Standup之后，我们会把所有的Dev召集到一起，一起来看一下昨天的工作。我们用SVN diff把代码的差异列出来，大家一起来过。如果恰好是自己做的代码，编写代码的人就会站出来，为大家简单解释一下做了些什么。这样，这样保证大家都会了解到项目的进展。这样做还有另外一个原因，因为我们是一个分布式团队，除了我们在中国这边，还有几个人在美国开发，这样过代码，便可以大致了解到美国那边在我们睡觉的时候干了些什么。<br /><br />这个项目还有一个做得我觉得不错的地方，就是Story做得很细致。我们在Mingle里面的Story，很多都会有完成这个Story要做哪些步骤的描述。我们只要按照这些步骤一步步做下去就可以了，每完成一个步骤，就做一个简单的标记，这样，几乎不会有遗漏。除了Mingle上的Story，我们还会有专门的文档对这个Story进行比较详细的解释，包括一些验收条件。显然，这个项目的BA做了大量的工作，让我们后续的开发更容易。<br /><br />这个项目从美国过来了一个BA和两个Dev，而Pair的过程，让我不得不每一天都以英语进行交流。私下里，我经常说，我的英语水平代表了TW的最低水平。当年面试的时候，我自认为表现的最差的就是结对编程，因为一个英国同事高高兴兴搬了把椅子做在我边上，害得我不得不英语解释我在做什么，思路一下子就乱了。不过，少了面试的压力，这时候和人用英语Pair，效果还算可以接受，至少我还可以思考。实在不理解的，就让自己的Pair多解释几次，好在ThoughtWorker们都是很好的人，我的Pair总是不厌其烦的为我解释，直到我确切的直到了我们要干什么。<br /><br />在这个项目里面，我很高兴的扮演起学生的角色。一方面，我们不是很了解需求，需要向&ldquo;过来人&rdquo;学习，另一方面，来这边工作的两个Dev确实都有很长时间的工作经验。和他们在一起工作，我乐得把控制权交到他们手上，自己虚心的观察他们如何思考，如何解决问题。和他们在一起工作，会让人感觉很放心。正如我在《<a href="http://dreamhead.blogbus.com/logs/13258146.html" target="_blank">与高手共事</a>》中提到的，他们做的那些工作都很简单，经过一步步简单的工作，一个个Story就完成了。<br /><br />对我来说，这个项目才开始一个星期，已经学到了不少的好东西，值！<!--sp--><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://dreamhead.blogbus.com/logs/19759422.html</link>
   <author>dreamhead</author>
   <pubDate>Fri, 25 Apr 2008 21:16:27 +0800</pubDate>
  </item>
 </channel>
</rss>
