﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-人在江湖-随笔分类-process</title><link>http://www.blogjava.net/vcycyv/category/47725.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 14 Jul 2016 23:50:41 GMT</lastBuildDate><pubDate>Thu, 14 Jul 2016 23:50:41 GMT</pubDate><ttl>60</ttl><item><title>为什么一线开发经理要尽量全栈</title><link>http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Thu, 14 Jul 2016 22:53:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/431199.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/431199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/431199.html</trackback:ping><description><![CDATA[<p>在外企工作十年，从程序员做到一线开发经理，再后来转到公司美国总部，又做回程序员。工作角色的变化促使自己思考，分别站在程序员和开发经理的角度看，怎样的程序员是出色的程序员，怎样的开发经理是好经理。经历团队发展过程里种种好的、坏的变迁，再加上看到、听到其他团队的经验教训，就越来越有感触，掌握全栈技术对一线开发经理很重要。</p><p><br /></p><p>开发经理的职责是<strong>确保软件产品按时保质发布</strong>。流程也为这个目标服务， 但流程本身的作用很有限。软件开发流程理论经历瀑布式，迭代式（RUP, 又称统一软件过程）以及现在的敏捷开发（敏捷在现实中几乎就是scrum），理论越来越成熟完善，但落地执行又不简单。&nbsp;大量文章都在分析为什么敏捷流程在很多开发团队不起作用。比如最近看到&nbsp;<a data-cke-saved-href="http://www.infoq.com/cn/news/2016/06/agile-asia" href="http://www.infoq.com/cn/news/2016/06/agile-asia">为什么敏捷开发在亚洲实行不了</a>&nbsp;里说， &#8220;敏捷开发需要大家当面直言问题所在，而这有悖于亚洲文化，因为亚洲人特别注意对别人表示尊重、给别人留面子，这一点与西方文化特别不同，而西方正是敏捷思想的发源地。&#8221; 从自己的亲身经历看，这纯属扯淡。讲到留面子，和稀泥，打太极拳，老美一点儿也不输给中国人。流程只是个工具，能否因地制宜执行得好，开发经理起到决定性作用。没有普适的流程，针对一个特定的团队，只有合适的流程。&nbsp;全栈型的经理比较容易领导团队<strong>做正确的事情并做得够快</strong>。&nbsp;<strong>&nbsp;</strong>能做到这一点，是不是scrum都不重要。他不必在各个方面都是专家，但至少需要能预见技术上重要的风险才能及时采取措施处理。一些技术决定对项目成败有关键性的影响，比如技术选型，搭建软件应用的架构，包括分层, 模块化，secruity, transaction, exception, audit，自动化测试等等。开发经理不必把这些工作都承担了，但至少需要把关，保证这些核心的工作没有明显疏漏。因为最终为产品发布负责的还是开发经理自己，而不是某个犯了错的程序员。不全栈，把关自然就不全面。</p><p><br /></p><p>开发经理的各项工作中，我认为最重要的就是面试招聘。招对了人，工作中即使遇到棘手的问题，技术好素质高的队员自己就解决了。<strong>团队不怕小但要精</strong>，队员必须能独当一面。不论前台后端，经理至少应该具备足够好的技术品味过滤掉不合格的应聘者。乔布斯有个观点，一旦招了庸才，两年后，就会轮到庸才做面试招聘，很可能再招进来的还是庸才。如果开发经理不全栈，面试就要靠运气了。反过来说，资历好而水平差的程序员，也可以靠运气进好公司的。</p><p><br /></p><p>程序员为story估时间（story point）的时候，会不会虚报呢？如果认为scrum的打牌可以避免虚报的话，可以看看上面关于留面子的讨论。即使把story的分配放在scrum打牌之后，经常大家心里已经知道哪个人做哪个story, 比如feature enhancement的story自然是这个feature之前的owner来做。打牌的人很容易会&#8220;做好人&#8221;倾向于多估时间。（再说一次，这不是中国特色，是人性）心理学有个有趣的关于撒谎的讨论，<strong>撒谎的前提是1. 我知道&nbsp;2.你不知道&nbsp;3.我知道你不知道。</strong>如果经理在产品某项技术上是小白，就容易出现估时间虚报的问题&#8212;&#8212;这样的事情我亲见过很多次了。全栈的经理自然不会被糊弄。</p><p><br /></p><p>程序员经常会在一个技术问题上产生不同的意见，这很正常，技术上很多事情本来就要做取舍。这时候经常需要开发经理介入做决定。经理做合理的决定不但对项目重要，对队员的个人感受也重要。决定不能是随机的选A或选B, 需要有决定的依据。程序员往往都有点小骄傲，经理技术上捉襟见肘的时候，程序员就容易想，&#8220;你还不如我呢，凭什么做决定。&#8221;</p><p><br /></p><p>开发经理需要做coding的工作么？我认为是需要的。 英语里有句谚语， He that would command must serve。至少也要做比较多code review的工作。评价队员工作效果是开发经理的重要职责之一。技术不全面的经理经常依靠听队员自我评价（吹牛），数代码行数等这种不靠谱的方式评价工作。错误地认同或不认同严重影响团队氛围。身先士卒的经理容易长期保持住团队良好的氛围。我没有能力定义什么样的氛围才算是好的，起码，我带团队时，<strong>成员互相之间心存善意</strong>。</p><p><br /></p><p>澄清一下自己观点：经理一定要全栈或技术精湛才能带好团队么？不是，但是很多管理的难题在全栈的经理眼里都不是问题， 比如上面提到的评价队员工作。带不好团队就无法好好职业发展么? 不是， 我见过太多靠吹牛，人事等各种非技术技巧成功哄骗二线三线经理的了。管理的路越往上走，技术越不重要，而政治越重要。问题是，作为程序员或开发经理，<strong>你的目标是把项目做好还是获得上级认可？</strong>我觉得这是职业价值观最根本的分歧， 但， 不想讨论。</p><p><br /></p><p><br /></p><br data-cke-eol="1" /><img src ="http://www.blogjava.net/vcycyv/aggbug/431199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2016-07-15 06:53 <a href="http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>  开发过程的失败</title><link>http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 17 Jan 2016 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/429082.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/429082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/429082.html</trackback:ping><description><![CDATA[今天突然有了一个感悟， 开发需要避免的事情，并不是什么什么事情没做好， 而是投入了时间和精力之后，事情还没做好。因为不投入资源没把事情做完善可以是一种策略，省下来资源做更重要的事情，这是一种取舍。只有投入时间精力之后的失败才是真正的失败。<img src ="http://www.blogjava.net/vcycyv/aggbug/429082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2016-01-17 12:34 <a href="http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《人件》摘录及感想</title><link>http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Thu, 29 Nov 2012 15:10:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/392236.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/392236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/392236.html</trackback:ping><description><![CDATA[<div>《人件》是与《人月神话》齐名的书，promote manager三个月了，虽然基本是个挂名manager，也还是惶惶然恶补管理知识。《人件》是一本一定程度上影响自己价值观的书。下面是一些摘录和感想，其实之前既没管理经验也不具备更多这方面的知识，所谓感想也只是敢瞎想：</div><div></div><div><span style="color: #800000;">我们的成功源自于良好的、与所有此项工作的参与者之间的人际交往，同样我们的失败原因也是由于糟糕的人际交往。</span></div><div><span style="color: #800000;">　　我们倾向于集中精力做技术方面而不是人际关系方面工作的主要原因，不是因为它更重要，而是因为它更容易做。如果你发现自己关注的是技术而不是社会方面的问题，你就相当于在一条黑暗的街上丢掉钥匙，却到邻近的另一条街上去寻找。因为&#8220;这条街上的灯比那条街上的要亮一些&#8221;。</span></div><div><span style="color: #800000;">对任何一个员工来说，没有比因他的积极性不够而不得不由他的老板来 &#8220;补充&#8221;的感觉更令人泄气了。</span></div><div><span style="color: #800000;">人们在受到时间重压的时候不是工作得更好，只是工作得更快。</span></div><div><span style="color: #800000;">在一些日本公司，特别是日立软件和富士通的一些部门，项目团队在提交他们认为还未准备好的产品上有行之有效的否决权。甚至不论客户是否乐意接受低于质量标准的产品，团队可以坚持等到达到了自己的产品标准时才提交产品。当然项目经理们要承受同样的压力：他们正在被催促着提交东西、任何东西，马上就要！但是足够的质量文化已经建立了，因此这些日本经理懂得道理而不会威逼他的部下去满足于更低的质量。</span></div><div>【人在江湖】我平时也总是这种论调，不要给程序员太多压力，永远都有quick and dirty的approach,别把大家逼到这个份儿上.<br /></div><div></div><div><span style="color: #800000;">与经理甚至不询问他们便做出估计的情况相比较，如果他们能自己做出估计，程序员的生产力似乎更高一点。如果经理和程序员一起做估计，则结果倾向于以上两种情况之间。</span></div><div><span style="color: #800000;">当他们调查了预先没有做任何估计的24个项目的生产力时，劳伦斯和杰弗雷（Jeffery-Lawrence）在1985年发表的研究报告中最令人惊讶的部分是在报告的最后。这些项目的生产力都远远胜过了其它所有的项目。</span></div><div>【人在江湖】对于有责任心的人确实如此，幸好我遇到的大多数都属于此类。但是假如有的人天生就没有责任心，怎么办涅？我不是神父，改变不了人的灵魂。你要能改变人的灵魂，还用监狱干什么。<br /></div><div></div><div><span style="color: #800000;">经理的职能不是强迫人们工作，而是让人们有可能工作。</span></div><div>【人在江湖】严重同意。反对那种组织一堆activity风格的管理，一天开仨会，尽是碎片时间踏不下心来，一整天啥都干不了。一直努力创造条件，尽量节省队员的时间，让大家心无旁骛地工作。花很多时间帮助队员trouble shooting, 注重分享实用的tips并总结文档，重视优化开发环境，曾经独创性地把jetty引入团队的开发环境中，方便程序员的日常工作。跟UI designer沟通，申请icon, 应对组外同事基本都是自己做，为了能让大家少受打扰，同事在忙的时候，我甚至去帮他收快递！我分明是搞家政服务的，太善良了，自己都感动了。<br /></div><div></div><div><span style="color: #800000;">吉尔伯定律向你许诺度量不是免费的或者甚至不是廉价的，而且它可能不是完美的，只是比没有什么东西更好。</span></div><div>【人在江湖】这是时常思考的问题，只是一直没有明确答案。度量确实很花成本，不舍得这成本容易盲目，大量花成本又确实可惜，还在探索中...<br /></div><div></div><div><span style="color: #800000;">最有价值的人开始意识到不是因为他们的真正价值而受赏识，意识到他们的工作贡献还不如剪短的头发和领带重要，他们可能会离开。</span></div><div>【人在江湖】团队里有个兄弟，妈的，天天迟到一个半小时，上班也经常消失不见，但是技术工作很负责，干活儿也确实猛，团队需要他发飙的时候能干到下半夜。不想打压他的热情。麻烦在于，会有顾虑我的老板会不会质疑我不约束纪律不作为。倒是不担心这样的人会影响氛围，没人会攀比，即使某天有人跟他攀比，我会说，你能把工作做成这个样子你纪律也随便！<br /></div><div></div><div><span style="color: #800000;">如果你为&#8220;拯救斯奈尔达特基金会&#8221;或 &#8220;第一菲伯罗尼神圣纯洁教堂&#8221;或其它公司工作，这些公司的职员因为共同的信念而结合在一起，那么你可能可以依靠职员在公司目标上的亲合力。否则忘记亲合力一事。面对利润的快速增长，执行委员会热情高涨。但是对于位于底层的人而言，这个同样的目标只是个小小的土豆而已。</span></div><div>【人在江湖】协调个人目标和团队目标是很核心的工作，程序员的工作热情伤不起。<br /></div><div></div><div><span style="color: #800000;">一个团队的目的不是达到目标而是向目标看齐。</span></div><div>【人在江湖】这是我认为整本书里，对自己启发最大的一句话！<br /></div><div></div><div><span style="color: #800000;">你不能防止手下的无能。如果你的员工不能胜任手头的工作，你将会失败。当然，如果你的人不胜任工作，你可能会用新人。但是一旦你已经决定与一个既定小组一起工作,　你最好的策略是相信他们。除此之外，采取任何保证成功的防范措施只会使事情更糟。</span></div><div><span style="color: #800000;">如果你是经理，当然你正在想你的判断比你的手下更好，你有更多的经验，而且你可能有比他们更出色的水准；正因为如此，你才成为经理的。如果不插入你的个人判断，在项目的任何一点上，你的人都更有可能出差错。那么该做什么？让他们出一 些差错。这并不意味着你在很偶然的情况下不能撤销一个决定或者给项目下特别的指令。但是如果员工终于相信不允许他们自身出差错，那么你不信任他们的消息就会显而易见地传开来。除此之外，再也没有其他消息更会抑制团队形成了。</span><em>&nbsp;</em></div><div>【人在江湖】风险当然需要控制，任由队员犯错对他自己对团队都不好。看到上面这段话，一下就想起曾经在项目管理培训课上，学到一个技巧，"让他人感觉主意是他想到的"。沟通工作的时候，尽量循循善诱或许是比较两全的办法。<br /></div><div></div><div><span style="color: #800000;">共同点是，好的经理会为团队提供频繁而又容易一起实现成功的机会。这些机会可以是很小的、起向导作用的子方案，或示范，暗示等，可以是使团队快速养成一起去获得成功习惯的任何东西。最好的成功是没有明显管理的成功，在这样的成功中，团队工作起来如同一个亲切的同事集体。</span></div><div>【人在江湖】team building的时候成功消灭桌上所有的菜？团队每个季度有约1.7k team building预算，我的目标是一分不剩全花光，相对team building的小钱，团队玩儿舒服了把工作做好，多卖几个license才对公司赚钱最重要。那种算计给公司省team building钱的我觉得是娘们儿组。<br /></div><div></div><div><span style="color: #800000;">以下是一些倾向于产生团队自杀性负作用的管理行为：</span></div><div><span style="color: #800000;">* 年薪或绩效考评</span></div><div><span style="color: #800000;">* 目标管理（MBO）</span></div><div><span style="color: #800000;">* 褒奖出色完成任务的某些员工</span></div><div><span style="color: #800000;">* 奖励、奖金、红利与绩效挂钩</span></div><div><span style="color: #800000;">* 用几乎任何形式测量绩效</span></div><div><span style="color: #800000;">　　但在这停一下，这些正是那些经理们花费那么多时间甚至他们的大多数时间做的事情吗？悲哀得很，正是。而且这些行为很可能就是团队自杀行为。</span></div><div><span style="color: #800000;">　　爱德华兹&#183;戴明（W. Edwards Deming）在1982年出版的书《走出危机》中，他提出了他的广为遵循的&#8220;十四点&#8221;。其中第12B点几乎被看成后车之鉴的反思。</span></div><div><span style="color: #800000;">　　拆除那些会剥夺管理人员和工程人员为技艺感到骄傲的权利的障碍。这就（尤其）意味着废除年薪、绩效考评和目标管理。</span></div><div><span style="color: #800000;">　　即使认同戴明观点的人，也在这点上深受困扰。他们也只剩下喘气的功夫了。[p37]到底我们应该做些什么？</span></div><div><span style="color: #800000;">　　戴明的观点是目标管理（MBO）或相类似的行为是在管理上的一种逃避。用简单的外来的激励因素去刺激绩效，经理们总是为他们自己开脱罪责，例如在投资，直接的人员动力 ，周到的团队构成，人员的保留，以及将来的工作程序的分析和再设计等更难的事情上。</span></div><div><em>　　</em><span style="color: #800000;">我们这儿的观点说得比较窄：任何不同程度地奖励团队成员的行为可能会促成竞争。经理们需要采取措施减少或抵消这种影响。</span></div><div>【人在江湖】同意，团队氛围越好，越要无为而治。但是当团队失去平衡的时候，我觉得这些手段很难避免。<br /></div><div></div><div><span style="color: #800000;">每个地方的公司都有攀登更CMM等级的压力。明天他们会执著地追求现行等级向更高级别的跃进，或别的什么。这就是黑暗面，因为它会诱导低风险的一味保平安的行为，所以这些项目是低利润的。</span></div><div>【人在江湖】这是个很好的观点。技术管理需要对技术有insight，管理者需要理解那些值得冒的风险并且淡然承受难以避免的失败。<br /></div><div></div><div><span style="color: #800000;">威廉&#183;布瑞奇（William Bridges）在《管理变革》（Managing Transitions）一书中建议我们从不要去贬低我们的旧方法。相反，我们需要把旧方法作为帮助产生改变的一条途径来庆祝。例如：</span></div><div><span style="color: #800000;">　　&#8220;朋友们，核心图形系统（CGS）中的中心导航系统已经运行了14年。我们估计它已经完美地处理了1000000次起飞和降落。硬件平台在技术上已经陈旧了，有些新的遥感技术我们可以利用。现在我们有机会重新设计和重新建立整个系统。我们需要你们和你们这些年来在核心图形系统方面的成功经验上获得的专门技术来帮助我们成功。&#8221;</span></div><div>【人在江湖】Nice tips.</div><img src ="http://www.blogjava.net/vcycyv/aggbug/392236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2012-11-29 23:10 <a href="http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一点儿也不敏捷的成功</title><link>http://www.blogjava.net/vcycyv/archive/2011/12/04/365518.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 04 Dec 2011 14:39:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/12/04/365518.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/365518.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/12/04/365518.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/365518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/365518.html</trackback:ping><description><![CDATA[<p>周末去听Hadoop大会，看见的都是玩儿开源项目的好手，突然就想起敏捷了。敏捷强调沟通,尤其是面对面的沟通，并且有每日例（立）会，iteration plan meeting, 还有retrospect meeting。突然就在想，开源项目常常聚集来自不同国家的人，他们很多时候根本互相不认识，两个不同公司不同时区不同国家的人咋面对面沟通啊？咋聚齐开会啊？人家平时沟通全靠mail, 但是他们做大项目也能成功，人家是怎么做到的？我们搞敏捷，这么神奇的武器，开发过程仍然捉襟见肘，还不如开源项目有序，为什么？</p> <p>猜想世界范围的开源项目沟通成本高，所以他们必须千方百计降低沟通需要，通过一些手段可以做到，比如</p> <p>一，清晰，自然的架构。</p> <p>二，高质量代码，代码像文档一样流畅。</p> <p>三，模块化，面向接口。</p> <p>四，务实的文档。</p> <p>五，自动化测试。</p> <p>……</p> <p>有些沟通是必然免不了的，比如需求的沟通，我觉得最复杂的需求沟通往往起因于程序员不了解行业领域知识，而开源项目往往是工具类，框架类的项目，绝大多数不涉及特定行业领域知识，了解“domain”的门槛不高，所以需求方面的沟通要求天生就相对较低。我们平时工作的很多沟通来自于技术问题的沟通，我绝不怀疑，技术手段能够降低沟通技术问题的需求，而一个不那么倚重程序员沟通技术问题就能把技术做好的项目，才说明技术风险低，技术好。一些事情，比如技术选型，的确需要Involve比较多的人讨论。但是当技术选型确定，模块划分清楚，接口清晰之后，技术沟通的需求就应该比较低了。有的时候技术上会遇到一些dilemma,这样写程序不好，那样写也不对，有时候确实是因为技术本来也没有完美的解决方案，总要trade off掉一些事情。但更多时候是因为架构不好，才引发了随后的种种麻烦。程序员之间扯皮什么事情该谁做，是不是因为模块化做得不好？“xx,你给我讲讲某块代码实现吧，我懒得看了”，是程序员懒还是程序实在是一团浆糊，惨不忍睹？同一个问题A给B解答一边，给C解答一边，后面还有E,F,G….是不是早该写好文档？</p> <p>coding的工作不神圣，但确实不同的人做出的设计可以大相径庭，同一个功能背后的代码也可以天差地远。做产品不是靠人堆出来的，三个臭皮匠顶不了一个诸葛亮，三个臭皮匠还不如一个臭皮匠，因为安排一个诸葛亮可以带好一个臭皮匠，三个臭皮匠能把诸葛亮也熏臭了。开发团队应该是全高手阵营，人不必多，但要个顶个而的强。玩儿开源项目的人都是有热情的程序员，往往都是高手，程序员用程序说话就好了，电话不用天天打也不耽误沟通。</p> <p>跑下题说team work. 最近在想，team work表面上看是相对于个人英雄主义来说的，仔细一想，其实个人英雄主义应该是team work的前提。程序员就是要有这样的本领，当他把手放在键盘上的时候，就能源源不断创造价值。一个人没单打独斗的能力，就没资格谈team work, 笨蛋当然喜欢team work了，不然很容易暴露自己的无知和无能。</p><img src ="http://www.blogjava.net/vcycyv/aggbug/365518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-12-04 22:39 <a href="http://www.blogjava.net/vcycyv/archive/2011/12/04/365518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对敏捷的一些想法</title><link>http://www.blogjava.net/vcycyv/archive/2011/01/30/343787.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 30 Jan 2011 10:20:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/01/30/343787.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/343787.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/01/30/343787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/343787.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/343787.html</trackback:ping><description><![CDATA[<p>写这篇东西其实是因为工作的关系。学习过一些xp的思想，学习过scrum, 但是研究的都不深刻。写的基本都是自己的想法和理解，所以一定有片面或者偏激的地方。但俺就是不爱抄别人的观点。写了老半天，发给老板居然连个comment都没有，没那么差吧？下面隐去了公司的名字。</p> <p>I mapped agile manifesto with the 12 principles based on my understanding below </p> <p><a href="http://img1.51cto.com/attachment/201012/6/683635_1291647148qMt9.gif"><img title="clip_image001" border="0" alt="clip_image001" src="http://img1.51cto.com/attachment/201012/6/683635_1291647149IlSh.gif" height="959"></a></p> <p>The mapping may be debatable. But it is obvious that the first item, &#8220;individuals and interactions over processes and tools&#8221;, is the key. I only talk about the three of related principles that I think great practical guidance here.</p> <p>1.<i>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.</i></p> <p>The software product is indeed a result of intelligence. The product leads to success if individuals are fully motivated. Individuals with passion not only do their daily work, they also strive to improve the way how they work. </p> <p>Years ago, a manager in my report line said that, people has to work at least eight hours every day. The working hour is more than eight hours if the time spent on the way counts. No matter you admit or not, work is part of your life. To live a happy life, you should work happily in a positive way. </p> <p>That word is very impressive to me. To go a step further, let&#8217;s say, the attitude to the work is part of the attitude to the life. While a good working environment encourages good attitude of individuals, one&#8217;s attitude contributes back to the environment.</p> <p>2. <i>The most efficient and effective method of conveying information to and within a development team is face-to-face conversation</i></p> <p>Communication is highly emphasized in agile. It is the first value of agile in Kent&#8217;s XP book. On one hand, it is so obvious that communication is important. We work off-shore. The communication is especially crucial between Beijing and HQ. On the other hand, we should notice the communication costs. It is said, people need 15 minutes to get back to fully concentrated status after interruption. So the cost is the time the communication lasts plus 15 minutes. People should get prepared before contacting others. And to communicate at a settled time can be a good idea. Actions are needed to improve the efficiency.</p> <p>Because of the time difference, we usually communicate with HQ through mails. And because of the same reason, the communication efficiency can be badly impacted. For urgent/complex issue, we can use moc. Speaking of moc, the note part of moc can also be used to communicate. It is like a broadcast. </p> <p>Consider this:</p> <p>Suppose we have shared Windows resource. Someone needs to access to the environment. No surprise, he just logs on directly, then there is a chance to log off others by accident. If it happens, the poor guy sends message to all members &#8220;who kicked me off just now? &#8221;A note on moc may prevent this problem. To put the current task/sub-task on moc is also good for co-workers and supervisor.</p> <p>It is just a supplement to update-status meeting, not a replacement.</p> <p>Don&#8217;t blame someone if his note is &#8216;listening to the music&#8217;. </p> <p>3. <i>Continuous attention to technical excellence and good design enhances agility.</i></p> <p>Individuals need to improve themselves. It would be regretful if looking back for one year and find oneself have not grown at all. People should be open to the world outside. There are ways of getting information: </p> <p>1. Skimming over tech news/views on some websites, like <a href="http://www.theserverside.com">www.theserverside.com</a>, <a href="http://www.javaeye.com">www.javaeye.com</a>.</p> <p>2. To get information from others, especially from colleagues. </p> <p>Almost every tech guy does the first thing. Surfing the internet and finding stuff one interests in. Just a step further makes the second thing happen. Others can get useful information from the sharing. </p> <p>The way of sharing can be knowledge share and just share the material. Personally, I prefer the latter. I just don&#8217;t believe in one-shot knowledge share. For instance, even if it is Gavin King, the designer of Hibernate, giving a three-hour lecture about hibernate. You don&#8217;t expect to master hibernate after the lecture. It is great that we have a library in XXX. I&#8217;ve been thinking a web &#8211;based application, like douban.com, would help in the same way. People talk about e-books, tools, open-source projects and rate on them. What is more, people share stuff on the platform. There are some benefits over real library:</p> <p>1. Interaction is easier.</p> <p>People comment on the stuff, rate on them, exchange notes based on them&#8230;</p> <p>2. It is cheap</p> <p>Some of the books in the library are easy to find electric version on line. That money could have been spent on other good books. What is more, &#8216;copy and paste&#8217; of e-book doesn&#8217;t cost.</p> <p>3. It promotes good atmosphere. </p> <p>I believe reading changes one&#8217;s insight, and changes one from inside. It can be great if staff in XXX love reading and sharing.</p> <p>Other thoughts:</p> <p>There are useful techniques in agile methodologies. Scrum is agile process, and it got popular fast in China. You may have noticed &#8216;process&#8217;is mentioned in way of &#8220;Individuals and interactions over <b>processes</b> and tools&#8221;. Scrum is surely not silver bullet. Though many practices in scrum work well in many companies, it is not necessary to work well in a given team/company. It can serve as reference. A team needs to adopt the process in a proper way. Process is important. The thought behind the process is even more important. Just do whatever helps improve the product and low down the risk. And it is agile.</p> <p>Agile in XXX</p> <p>In XXX, &#8216;never lay off people&#8217;is kind of a principle, though it is not written in employee manual. It does correspond to the &#8216;individuals&#8217; principle in the manifesto. If people do not need to worry about losing their jobs, they get a chance to work with whole heart and soul. I&#8217;m glad to work in such environment. </p> <p>To adopt agile methodologies, individuals are required to be highly qualified. People need to be efficient and work in a professional way. It is best practice to limit the number of team members in a team, which reflects the fact that each member is expected to contribute enough. </p> <p>Both &#8216;never lay off people&#8217;and requirements by agile call for fully qualified employee. When I joined XXX, there was paper test. But that process was abandoned later. In my opinion, to be strict in hiring is important to every company. Especially for a company with humanism culture, like XXX. I&#8217;m not saying we&#8217;d better adopt paper test again. I think we do need some hiring process to be extremely strict.</p>         <img src ="http://www.blogjava.net/vcycyv/aggbug/343787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-01-30 18:20 <a href="http://www.blogjava.net/vcycyv/archive/2011/01/30/343787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>