﻿<?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-風向逆轉 - 就要爪哇-文章分类-学习·工作·生活</title><link>http://www.blogjava.net/iKingQu/category/9382.html</link><description>Java菜鸟升级中...</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:26:02 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:26:02 GMT</pubDate><ttl>60</ttl><item><title>[收藏]如何准备软件工程师的面试</title><link>http://www.blogjava.net/iKingQu/articles/75056.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Fri, 13 Oct 2006 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/75056.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/75056.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/75056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/75056.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/75056.html</trackback:ping><description><![CDATA[
		<p class="byline-timestamp">
				<span id="time116070371011452241">转自:Google 黑板报 -- Google 中国的博客网志<br /><br />原文如下:<br /><br />2006年10月13日 上午 09:33:00</span>
		</p>
		<script language="javascript"><![CDATA[
uT("time116070371011452241");
]]&gt;</script>
		<div class="articlebody">
				<div style="CLEAR: both">
				</div>
				<font color="#666666">
						<span class="byline-author">发表者：王忻，Google 工程师 </span>
						<br />
						<br />
				</font>（作者简介: 王忻，Google 工程师。北京出生，五岁时跟随父母移居美国。中学期间跳了三级，十五岁进入了加州理工大学，加入 Google 前曾在微软等公司工作。）<br /><br />六月份的时候，我曾经在黑板报上介绍过“<a href="http://googlechinablog.com/2006/06/blog-post_14.html" target="_blank">如何写一份好的工程师简历</a>”， 今天想跟大家来谈谈如何准备软件工程师的面试？假设，现在您的杀手简历 (killer resume)已经吸引了某大公司的注意并约你面试。那么接下来该如何准备呢？<br /><br />我在 Google（以前是微软）工作期间面试了不下 300人，其中某些应聘者确实表现非凡，但有些却显得准备不足。当然许多面试准备不足的人最后依然获得了录用通知，因为他们本身确实才华出众。但如果应聘者能提前准备妥当，那么面试过程将更为保险和轻松。以下所列出的就是我根据多年经验总结得出的建议：<br /><span style="FONT-WEIGHT: bold"><br />1．使用相同的工具（如铅笔和纸张）和时间限制（例如半个小时）模拟面试训练</span><br /><br />Google 和微软都会让应聘者在白板上手工解答编程问题，但通常大部分的应聘者都是习惯于在电脑上利用编程工具系统编写程序。因此面试的时候，某些应聘者离开了熟悉的电脑光标，站在白板前感觉手足无措不知该如何起行。又或者他们不习惯在编程之时旁边有人观看，这会让他们感到紧张而无法正常思考。<br /><br />在现实生活中，如果你想要横渡英吉利海峡，自然不能总是在室内游泳池练习。你必须投身于大海在波涛之中训练，在准备面试的时候也是如此。:)<br /><br />在面试开始之前你最好向招聘单位询问面试形式和面试问题。如果招聘单位让你在某个房间考试且仅提供没有汇编程序的编辑器，那么就应该在家中按照这种情景进行练习。如果招聘公司单位让你在白板上回答问题并会安排考官在旁监督，那么你就要找一位软件工程师来扮演考官配合你练习。即使找来的考官经验不如你也没有关系，他们依然能帮助你消除在他人面前出错所带来的紧张感，这样可以让你适应有人在旁边盯着看的面试氛围。<br /><br />如果你恰巧认识我并希望由我来帮你联系，那我的条件就是必须请我吃饭：如果你已经工作了就吃日本寿司大餐；如果你还是学生，那么吃比萨饼也可以。:)<br /><span style="FONT-WEIGHT: bold"><br />2．在面试过程中不要对细小错误耿耿于怀</span><br /><br />我曾不止一次的在面试过程中碰到这种情况：当应聘者知道编程问题后，他马上就想到了最佳的方案、确定了边界条件，然后开始编写程序。但在编写过程中，应聘者犯了诸如首先检查是不是操作顺序错误或忘记设定某变量等无关大局的小错误，当我指出其错误之后，应聘者立刻变得十分紧张，这种焦虑情绪影响了他在后面环节的正常发挥。<br /><br />其实这种恐惧心理完全不必要。一名优秀的程序员在编程过程中出现错误也是很正常的，就像是小提琴手在演奏高难度的巴赫交响乐时也会偶尔失误。音乐会的听众可能会觉察到这些错误，但是听众绝对不会因为这种细小失误就把出色的小提琴手看作是门外汉。<br /><br />即便应聘者彻底搞砸了某个编程问题，面试考官也可能会提出不同的问题并会容忍应聘者在某个问题上的失误。再退一步说，就算某次面试彻底失败，你也有机会在其它面试上补救。<br /><br />我的一位同事（一个项目的技术负责人）最近面试了一个人，在开始面试时他觉得面试者的交流方式存在问题，因此开始表现的相当不友好。但经过了整个面试过程后，面试者证明了自身的能力，而我的那位同事也成了那位面试者最坚定的支持者。在过去的一年中，我从未见过这位同事如此强烈的支持哪位面试者。<br /><br />所以，因此就算面试进展不顺，也务必坚持到底不要放弃。<br /><span style="FONT-WEIGHT: bold"><br />3．在面试过程中不要失礼<br /></span><br />这似乎是不用说的问题，但在面试过程中我确实碰到过影响很不好的失礼行为。曾有一位前来应聘软件工程师的人看到我就说：“哇，我真不敢相信你这么年轻！你看上去好小！！我觉得你才 18 岁！”我看了他的简历才搞清楚原来是来应聘的，在开始的时候我却忍不住想：“这个人是来面试我的吧？！？！”<br /><br />面试者的这种言行实在要不得。<br /><br />面试者也要注意不要说出诸如此类的话：“哇，你真的就是考官吗？你看上去好老！”“哇，你真的是来面试我的，你看上去好胖！”（相信应该不会有人说这样的话）。<br /><br />在我的另外一次面试中，应聘者的手机在面试开始 15 分钟之后就响了，她没有理会，手机连续响了 20 秒，这样不免会对面试造成影响。5 分钟之后，她的手机又响了，她依然没有理会；5分钟之后，手机第三次响起。最后她终于抓过手提包在里面翻出了手机。我想：“是时候关掉手机了，她在进来之前就应该把手机关掉。”但是她在手提包中拿出手机之后却旁若无人的打起电话来，而且就在面试过程中间！<br /><br />这种情况唯一可接受的理由就是他有什么非常紧急的事，但是即便情况如此，那么他也应该在面试开始之时就讲清楚，让面试官有所准备。<br /><br /><span style="FONT-WEIGHT: bold">4．不要在面试中喧宾夺主</span><br /><br />我曾经面试过几个应聘者，他们好像铁了心肠一定要告诉我他们最近的“超级项目”。当我开始发话他们就立刻打断：“我想让你了解我们近期处理的超级项目，10年之前当这个项目开始之时还默默无闻……”，然后接下来的5分钟时间都在那里滔滔不绝唾沫横飞。<br /><br />有时应聘者好像打定主意要给每个考官详细描述其引以为豪的项目，然后一整天都在那里翻来覆去的说这个项目。<br /><br />记住：面试官在面试过程中有具体的问题需要询问。但是如果应聘者喧宾夺主，那么考官就可能无法获得充分的信息来做出判断，同时这种行为也会让考官觉得应聘者很难共事。<br /><br />如果你确实想谈论自己的项目，那么就应询问面试官：“我觉得最近的某某项目能充分体现我的能力，我能不能用 10分钟的时间来描述一下具体情况？”这样就会给面试官空间来调整面试过程，由此也避免毫无征兆就让面试离题万里。<br /><br /><span style="FONT-WEIGHT: bold">5．在回答需要具体答案的问题之时，记得首先要有总括性的发言</span><br /><br />有时我会问一个答案可以很简练的问题，例如：“在你的那个成功项目中总共有多少人参与？”但应聘者往往会就此打开话匣：“恩，张三参与了这个项目，他负责UI部分，当然我也会给他一些指导。李四也在项目中，她在宾州远程工作，负责后端服务器。两年之后我们又有新人王五加入……”<br /><br />在应聘者滔滔不绝的讲了三分钟之后，我还是不知道这个项目到底有多少人参与。<br /><br />因此首先要简练的回答问题，然后再展开描述：“在我接手项目时有三个人，但当我离开项目时人数已经增加到12人。”<br /><br />当然如果能简练的回答问题，然后征询意见之后再展开论述那就更好了：“在我接手项目时有三个人，但当我离开项目时人数已经增加到 12 人。我可以讲一下各人在项目中的具体分工吗？”<br /><br /><span style="FONT-WEIGHT: bold">6．（不是特别重要）在面试中要衣着得体，舒适的商务便装是最佳的选择</span><br /><br />人们有时候会为衣着犯愁。但是最重要的是要让自己感觉舒适。如果需要具体的建议，那么我建议穿衬衫甚至T恤衫。对于某些公司（例如 Google），西装革履显然是太隆重了。<br /><br />这条建议不必太看中，因为面试官不会管应聘者穿什么。最好应该询问人事招聘部门穿什么合适，因为不同国家有不同习俗，就算美国东海岸和西海岸的公司着装文化也会有差别。像 Google 这样的公司在着装方面更加随意，因此如果你穿着“三件套”的经典西服去 Google 面试，考官可能会有异样的感觉。因此如果你真的具备软件工程的本领，穿什么其实并不重要。某个应聘者曾经穿着皱巴巴脏兮兮的T恤就跑来面试，他的T恤衫上还有着许多破洞。但最后他还是拿到了录取通知（当然我绝不建议如此穿着）。<br /><span style="FONT-WEIGHT: bold"><br />最后的一个小故事</span><br /><br />最后我想讲一场极为尴尬的面试。在看完之后，我希望你能这样想：无论你的面试如何糟糕，你至少要比这位应聘者幸运。<br /><br />以前我还在微软的时候，我们通常会为应聘者准备一些饮料，某位暂称其为 Jeff 的应聘者要了一听百事可乐。我们走进面试房间后，他就在桌前坐下了。接下来我们简要的谈了谈他的工作经历，然后他开始在白板上解答编程问题，此时他还没有打开他的可乐。<br /><br />我们俩站在白板前，然后杰夫开始在上面写程序。在写程序之时他沉浸在对整体构架的思考中，下意识的退了一步来查看整个白板。在后退时他不小心碰到了桌子，放在桌上的百事可乐掉到了地上。<br /><br />因为可乐还没有打开，因此当可乐罐落地的时候，可乐罐炸开了。<br /><br />可乐罐在地上打转，泡沫喷的到处都是。你可以想象当时的场景，可乐喷到了墙上、书架还有我电脑的键盘上。我俩楞在那里，手都半伸着（根本来不及抓到可乐罐），眼睁睁的看着可乐弄得到处都是。<br /><br />我们花了 5 分钟的时间用纸巾来清理现场（虽然我的书本自那天之后都粘页了，而墙壁也不再是干净的了）。<br /><br />随后我们重新开始白板测试。杰夫此时已非常紧张（换了谁都会紧张吧？）。他写了几行程序，然后擦掉，然后再写。他是用自己的手擦拭白板而不是用板刷。他急得额头冒汗，然后他又用刚刚擦过白板的手擦汗。在面试过程结束之时，他的脸上布满了红色、绿色和蓝色的颜料。<br /><br />我说：“你的手上粘了很多颜料，我带你去卫生间洗洗吧，”然后我把他领到洗手间让他从镜中看到了自己的尊容。 </div>
<img src ="http://www.blogjava.net/iKingQu/aggbug/75056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-10-13 21:32 <a href="http://www.blogjava.net/iKingQu/articles/75056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]如何写一份好的工程师简历</title><link>http://www.blogjava.net/iKingQu/articles/75055.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Fri, 13 Oct 2006 13:29:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/75055.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/75055.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/75055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/75055.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/75055.html</trackback:ping><description><![CDATA[
		<p class="byline-timestamp">
				<span id="time115025559221238129">转自:Google 黑板报 -- Google 中国的博客网志<br /><br />原文如下:<br /><br />2006年6月14日 上午 10:15:00</span>
		</p>
		<script language="javascript"><![CDATA[
uT("time115025559221238129");
]]&gt;</script>
		<div class="articlebody">
				<div style="CLEAR: both">
				</div>
				<font color="#666666">
						<span class="byline-author">发表者：王忻，Google 工程师 </span>
						<br />
						<br />
				</font>最近三年作为 Google（谷歌）的软件工程师，我每周会帮人事部门审查简历，决定要不要给他们面试。Google 这几年的发展让很多许多优秀的工程师都前来申请。到目前为止，我已经看了上千份简历，有些简历留下的印象比别的好很多。尤其是最近亲戚朋友常常问我如何修改他们的简历，所以我积累了一些常见的错误避免的提议，在此跟大家交流一下。<br /><br /><span style="FONT-WEIGHT: bold">1．谈到你做过的技术时，应该提到用的程序语言、你的个人贡献和产品细节。</span><br /><br />有时我看到有人把过去的经验在简历上一笔带过，比如说：<br /><br />• 在三人小组里，为电子邮件软件写了些 features。<br /><br />这是远远不够的，看简历的人希望了解你做的工作的难度和对本公司有多少联系，所以你最好写的具体一些。譬如：<br /><br />• 用 C++ 语言写了网络电子邮件的自动 backups。在三人小组里，专门负责设计和写储存服务器。从设计开始， 一年后把这个功能 feature 的用户推到了三千。<br /><br /><span style="FONT-WEIGHT: bold">2．多讲事实, 少用形容词。</span><br /><br />看简历的人读你的简历时，需要做判断，所以在简历里需要事实和数目。如果你写“迅速的提高了软件的操作效率”，看简历的人很难判断你成就的难度。但如果你写“在3个星期内，把软件的操作效率提高了40%” 就好多了。<br /><br />有些谦虚的朋友们不愿意把话说满，所以你也可以用这个办法。你如果说自己“突出”或“在项目上常常被请去救火”，听起来难免会有点骄傲。但你也可以用不能否认的事实来说明你的观点，如“《纽约日报》评这个产品为‘突出’”，或“加入了三个原本已落后于计划的项目小组，但经过努力和组员一起把它们都按时完成了。”<br /><span style="FONT-WEIGHT: bold"><br />3．你获得的奖、商业的荣誉或表扬、受用户欢迎的产品和你做过的有难度的业余项目都该包括在简历里。</span><br /><br />我有位朋友在硅谷一个著名的硬件公司做了六年，她设计的 IP phone（网络电话）为公司赚了上亿的收入，被公司与商业报道多次评了奖。我有一次在旧金山的高速公路上驾车时，看到路边有她产品的广告牌；还有一次我去上海度假时，竟然发现上海公路边上也有！<br /><br />不久，这位朋友决定换工作，请我看看她的简历。我惊讶的发现，她居然轻描淡写的写了一句-- "1998 – 2004：网络电话产品的硬件工程师组长" 和她的职责。<br /><br />"产品赢的奖呢？它为公司赚的钱呢？" 我追问到。<br /><br />"那些也该写吗？" 她说。<br /><br />当然该写。<br /><br />有人问，业余时间做的项目可不可以写？我觉得只要你的项目有代表性能说明对你的能力，都该包括。<br /><br /><span style="FONT-WEIGHT: bold">4．分清主次，删掉相比之下不起眼的成绩，以免冲淡更加突出的成绩。</span><br /><br />有朋友问，写简历是不是写的越多越好？譬如：<br /><br />在甲公司做暑假实习生——<br />* 改善电子游戏的数值分类算法， 减少了内存要求 10%。<br />* 用 Java 写了 3000 行用户界面程序。<br />* 每周做两小时的人工测试。<br /><br />你在申请软件工程师的职位时，我觉得前两点比较相关，第三点其实就不必写了。有时我看到有的简历里会提到，"按时完成了任务，产品符合原计划规格"。但读简历的人通常会认为这是理所当然的，而你把这些声明出来反而减弱简历的效果。<br /><br />写一份简历不容易，但写好了也会带来成就感 （和好工作！）。 Google （谷歌）在中国广召各方面的人才，你不妨可以给我们投个简历！我们不但在信息检索方面招雇工程师，还有计算机图形、用户界面、硬件、Windows、质量保证员和系统管理员等方面。更多信息，请您访问<a href="http://www.google.com/intl/zh-CN/jobs/index.html" target="_blank">这里</a>。<br /><br />谢谢阅读！大家感兴趣的话，下次我可以介绍“如何预备软件工程师的面试”。</div>
<img src ="http://www.blogjava.net/iKingQu/aggbug/75055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-10-13 21:29 <a href="http://www.blogjava.net/iKingQu/articles/75055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我在MIDI摇滚音乐节上照片</title><link>http://www.blogjava.net/iKingQu/articles/45622.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Thu, 11 May 2006 03:38:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/45622.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/45622.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/45622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/45622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/45622.html</trackback:ping><description><![CDATA[
		<p>发几张我在第七届MIDI摇滚音乐节上面的照片，由于未经作者同意转载，只把链接放上来</p>
		<p>
				<a href="http://pp.sohu.com/photo.jhtml?method=view&amp;id=3321216&amp;setid=821244">http://pp.sohu.com/photo.jhtml?method=view&amp;id=3321216&amp;setid=821244</a> <br />   这张上，扛旗子的那个</p>
		<p>
				<a href="http://pp.sohu.com/photo.jhtml?method=view&amp;id=3321279&amp;setid=821244">http://pp.sohu.com/photo.jhtml?method=view&amp;id=3321279&amp;setid=821244</a> <br />   最右边那个脸朝天，闭着眼睛的那个</p>
		<p>
				<a href="http://pp.sohu.com/photo.jhtml?method=view&amp;id=3321275&amp;setid=821244">http://pp.sohu.com/photo.jhtml?method=view&amp;id=3321275&amp;setid=821244</a> <br />   那个白色风向旗帜后面，两个女生中间，张大嘴巴笑的那个<br /><br />   更多照片：<a href="http://summi.blog.sohu.com/">http://summi.blog.sohu.com/</a><br /><br />   我都被照变形了，丑死了，嘎嘎~</p>
<img src ="http://www.blogjava.net/iKingQu/aggbug/45622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-05-11 11:38 <a href="http://www.blogjava.net/iKingQu/articles/45622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]有效编写软件的75条建议</title><link>http://www.blogjava.net/iKingQu/articles/38927.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Mon, 03 Apr 2006 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/38927.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/38927.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/38927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/38927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/38927.html</trackback:ping><description><![CDATA[
		<p>1. 你们的项目组使用源代码管理工具了么？<br />　　应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。<br /><br />　　2. 你们的项目组使用缺陷管理系统了么？<br />　　应该用。ClearQuest太复杂，我的推荐是BugZilla。 <br /><br />　　3. 你们的测试组还在用Word写测试用例么？<br />　　不要用Word写测试用例（Test Case）。应该用一个专门的系统，可以是Test Manager，也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。 <br /><br />　　4. 你们的项目组有没有建立一个门户网站？<br />　　要有一个门户网站，用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现，15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。 <br /><br />　　5. 你们的项目组用了你能买到最好的工具么？<br />　　应该用尽量好的工具来工作。比如，应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费，所以说是“你能买到最好的”。 <br /><br />　　6. 你们的程序员工作在安静的环境里么？<br />　　需要安静环境。这点极端重要，而且要保证每个人的空间大于一定面积。 <br /><br />　　7. 你们的员工每个人都有一部电话么？需要每人一部电话。而且电话最好是带留言功能的。当然，上这么一套带留言电话系统开销不小。不过至少每人一部电话要有，千万别搞得经常有人站起来喊：“某某某电话”。《人件》里面就强烈谴责这种做法。 <br /><br />　　8. 你们每个人都知道出了问题应该找谁么？<br />　　应该知道。任何一个Feature至少都应该有一个Owner，当然，Owner可以继续Dispatch给其他人。<br /><br />　　9. 你遇到过有人说“我以为…”么？<br />　　要消灭“我以为”。Never assume anything。 <br /><br />　　10. 你们的项目组中所有的人都坐在一起么？<br />　　需要。我反对Virtual Team，也反对Dev在美国、Test在中国这种开发方式。能坐在一起就最好坐在一起，好处多得不得了。 <br /><br />　　11. 你们的进度表是否反映最新开发进展情况？ <br />　　应该反映。但是，应该用Baseline的方法来管理进度表：维护一份稳定的Schedule，再维护一份最新更改。Baseline的方法也应该用于其它的Spec。Baseline是变更管理里面的一个重要手段。<br /><br />　　12. 你们的工作量是先由每个人自己估算的么？<br />　　应该让每个人自己估算。要从下而上估算工作量，而不是从上往下分派。除非有其他原因，比如政治任务工期固定等。 <br /><br />　　13. 你们的开发人员从项目一开始就加班么？<br />　　不要这样。不要一开始就搞疲劳战。从项目一开始就加班，只能说明项目进度不合理。当然，一些对日软件外包必须天天加班，那属于剥削的范畴。 <br /><br />　　14. 你们的项目计划中Buffer Time是加在每个小任务后面的么？<br />　　不要。Buffer Time加在每个小任务后面，很容易轻易的就被消耗掉。Buffer Time要整段的加在一个Milestone或者checkpoint前面。 <br /><br />　　15. 值得再多花一些时间，从95%做到100%好值得，非常值得。<br />　　尤其当项目后期人困马乏的时候，要坚持。这会给产品带来质的区别。<br /> <br />　　16. 登记新缺陷时，是否写清了重现步骤？<br />　　要。这属于Dev和Test之间的沟通手段。面对面沟通需要，详细填写Repro Steps也需要。<br /> <br />　　17. 写新代码前会把已知缺陷解决么？要。每个人的缺陷不能超过10个或15个，否则必须先解决老的bug才能继续写新代码。 <br /><br />　　18. 你们对缺陷的轻重缓急有事先的约定么？<br />　　必须有定义。Severity要分1、2、3，约定好：蓝屏和Data Lost算Sev 1，Function Error算Sev 2，界面上的算Sev 3。但这种约定可以根据产品质量现状适当进行调整。<br /><br />　　19. 你们对意见不一的缺陷有三国会议么？必须要有。要有一个明确的决策过程。这类似于CCB (Change Control Board)的概念。 <br /><br />　　20. 所有的缺陷都是由登记的人最后关闭的么？ <br />　　Bug应该由Opener关闭。Dev不能私自关闭Bug。 <br /><br />　　21. 你们的程序员厌恶修改老的代码么？<br />　　厌恶是正常的。解决方法是组织Code Review，单独留出时间来。XP也是一个方法。 <br /><br />　　22. 你们项目组有Team Morale Activity么？<br />　　每个月都要搞一次，吃饭、唱歌、Outing、打球、开卡丁车等等，一定要有。不要剩这些钱。<br /> <br />　　23. 你们项目组有自己的Logo么？<br />　　要有自己的Logo。至少应该有自己的Codename。 <br /><br />　　24. 你们的员工有印有公司Logo的T-Shirt么？<br />　　要有。能增强归属感。当然，T-Shirt要做的好看一些，最好用80支的棉来做。别没穿几次就破破烂烂的。<br /><br />　　25. 总经理至少每月参加次项目组会议要的。<br />　　要让team member觉得高层关注这个项目。 <br /><br />　　26. 你们是给每个Dev开一个分支么？<br />　　反对。Branch的管理以及Merge的工作量太大，而且容易出错。 <br /><br />　　27. 有人长期不Check-In代码么？<br />　　不可以。对大部分项目来说，最多两三天就应该Check-In。 <br /><br />　　28. 在Check-In代码时都填写注释了么？<br />　　要写的，至少一两句话，比如“解决了Bug No.225”。如果往高处拔，这也算做“配置审计”的一部分。<br /><br />　　29. 有没有设定每天Check-In的最后期限？<br />　　要的，要明确Check-In Deadline。否则会Build Break。<br /> <br />　　30. 你们能把所有源码一下子编译成安装文件吗？ <br />　　要的。这是每日编译（Daily Build）的基础。而且必须要能够做成自动的。 <br /><br />        31. 你们的项目组做每日编译么？<br />　　当然要做。有三样东西是软件项目/产品开发必备的：1. bug management; 2. source control; 3. daily build。 <br />　　32. 你们公司有没有积累一个项目风险列表？<br />　　要。Risk Inventory。否则，下个项目开始的时候，又只能拍脑袋分析Risk了。<br /><br />　　33. 设计越简单越好越简单越好。<br />　　设计时候多一句话，将来可能就带来无穷无尽的烦恼。应该从一开始就勇敢的砍。这叫scope management。 <br /><br />　　34. 尽量利用现有的产品、技术、代码千万别什么东西都自己Coding。BizTalk和Sharepoint就是最好的例子，有这两个作为基础，可以把起点提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XML，而不是自己去Parse一个文本文件；尽量用RegExp，而不是自己从头操作字符串，等等等等。这就是“软件复用”的体现。 <br /><br />　　35. 你们会隔一段时间就停下来夯实代码么？<br />　　要。最好一个月左右一次。传言去年年初Windows组在Stevb的命令下停过一个月增强安全。Btw，“夯”这个字念“hang”，第一声。 <br /><br />　　36. 你们的项目组每个人都写Daily Report么？<br />　　要写。五分钟就够了，写10句话左右，告诉自己小组的人今天我干了什么。一则为了沟通，二则鞭策自己（要是游手好闲一天，自己都会不好意思写的）。<br /><br />　　37. 你们的项目经理会发出Weekly Report么？<br />　　要。也是为了沟通。内容包括目前进度，可能的风险，质量状况，各种工作的进展等。<br /><br />　　38. 你们项目组是否至少每周全体开会一次？<br />　　要。一定要开会。程序员讨厌开会，但每个礼拜开会时间加起来至少应该有4小时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code。 <br /><br />　　39. 你们项目组的会议、讨论都有记录么？<br />　　会前发meeting request和agenda，会中有人负责主持和记录，会后有人负责发meeting minutes，这都是effective meeting的要点。而且，每个会议都要形成agreements和action items。<br /><br />　　40. 其他部门知道你们项目组在干什么么？<br />　　要发一些Newsflash给整个大组织。Show your team’s value。否则，当你坐在电梯里面，其他部门的人问：“你们在干嘛”，你回答“ABC项目”的时候，别人全然不知，那种感觉不太好。<br /> <br />　　41. 通过Email进行所有正式沟通 <br />　　Email的好处是免得抵赖。但也要避免矫枉过正，最好的方法是先用电话和当面说，然后Email来确认。 <br />　　42. 为项目组建立多个Mailing Group <br />　　如果在AD+Exchange里面，就建Distribution List。比如，我会建ABC Project Core Team，ABC Project Dev Team，ABC Project All Testers，ABC Project Extended Team等等。这样发起Email来方便，而且能让该收到email的人都收到、不该收到不被骚扰。 <br /><br />　　43. 每个人都知道哪里可以找到全部的文档么？<br />　　应该每个人都知道。这叫做知识管理（Knowledge Management）。最方便的就是把文档放在一个集中的File Share，更好的方法是用Sharepoint。 <br /><br />　　44. 你做决定、做变化时，告诉大家原因了么？<br />　　要告诉大家原因。Empower team member的手段之一是提供足够的information，这是MSF一开篇的几个原则之一。的确如此，tell me why是人之常情，tell me why了才能有understanding。中国人做事喜欢搞限制，限制信息，似乎能够看到某一份文件的人就是有身份的人。大错特错。权威、权力，不在于是不是能access information/data，而在于是不是掌握资源。<br /> <br />　　45. Stay agile and expect change 要这样。<br />　　需求一定会变的，已经写好的代码一定会被要求修改的。做好心理准备，对change不要抗拒，而是expect change。 <br /><br />　　46. 你们有没有专职的软件测试人员？<br />　　要有专职测试。如果人手不够，可以peer test，交换了测试。千万别自己测试自己的。 <br /><br />　　47. 你们的测试有一份总的计划来规定做什么和怎么做么？这就是Test Plan。要不要做性能测试？要不要做Usability测试？什么时候开始测试性能？测试通过的标准是什么？用什么手段，自动的还是手动的？这些问题需要用Test Plan来回答。<br /><br />　　48. 你是先写Test Case然后再测试的么？<br />　　应该如此。应该先设计再编程、先test case再测试。当然，事情是灵活的。我有时候在做第一遍测试的同时补上test case。至于先test case再开发，我不喜欢，因为不习惯，太麻烦，至于别人推荐，那试试看也无妨。 <br /><br />　　49. 你是否会为各种输入组合创建测试用例？<br />　　不要，不要搞边界条件组合。当心组合爆炸。有很多test case工具能够自动生成各种边界条件的组合——但要想清楚，你是否有时间去运行那么多test case。 <br /><br />       50. 你们的程序员能看到测试用例么？<br />　　要。让Dev看到Test Case吧。我们都是为了同一个目的走到一起来的：提高质量。<br /><br />　　51. 你们是否随便抓一些人来做易用性测试？ <br />　　要这么做。自己看自己写的程序界面，怎么看都是顺眼的。这叫做审美疲劳——臭的看久了也就不臭了，不方便的永久了也就习惯了。 <br /><br />　　52. 你对自动测试的期望正确么？<br />　　别期望太高。依我看，除了性能测试以外，还是暂时先忘掉“自动测试”吧，忘掉WinRunner和LoadRunner吧。对于国内的软件测试的现状来说，只能“矫枉必须过正”了。 <br /><br />　　53. 你们的性能测试是等所有功能都开发完才做的么？<br />　　不能这样。性能测试不能被归到所谓的“系统测试”阶段。早测早改正，早死早升天。<br /> <br />　　54. 你注意到测试中的杀虫剂效应了么？<br />　　虫子有抗药性，Bug也有。发现的新Bug越来越少是正常的。这时候，最好大家交换一下测试的area，或者用用看其他工具和手法，就又会发现一些新bug了。<br /><br />　　55. 你们项目组中有人能说出产品的当前整体质量情况么？<br />　　要有。当老板问起这个产品目前质量如何，Test Lead/Manager应该负责回答。 <br /><br />　　56. 你们有单元测试么？<br />　　单元测试要有的。不过没有单元测试也不是不可以，我做过没有单元测试的项目，也做成功了——可能是侥幸，可能是大家都是熟手的关系。还是那句话，软件工程是非常实践、非常工程、非常灵活的一套方法，某些方法在某些情况下会比另一些方法好，反之亦然。 <br /><br />　　57. 你们的程序员是写完代码就扔过墙的么？<br />　　大忌。写好一块程序以后，即便不做单元测试，也应该自己先跑一跑。虽然有了专门的测试人员，做开发的人也不可以一点测试都不做。微软还有Test Release Document的说法，程序太烂的话，测试有权踢回去。<br /><br />　　58. 你们的程序中所有的函数都有输入检查么？<br />　　不要。虽然说做输入检查是write secure code的要点，但不要做太多的输入检查，有些内部函数之间的参数传递就不必检查输入了，省点功夫。同样的道理，未必要给所有的函数都写注释。写一部分主要的就够了。<br /><br />　　59. 产品有统一的错误处理机制和报错界面么？<br />　　要有。最好能有统一的error message，然后每个error message都带一个error number。这样，用户可以自己根据error number到user manual里面去看看错误的具体描述和可能原因，就像SQL Server的错误那样。同样，ASP.NET也要有统一的Exception处理。可以参考有关的Application Block。 <br /><br />　　60. 你们有统一的代码书写规范么？<br />　　要有。Code Convention很多，搞一份来发给大家就可以了。当然，要是有FxCop这种工具来检查代码就更好了。 <br /><br />　　61. 你们的每个人都了解项目的商业意义么？<br />　　要。这是Vision的意思。别把项目只当成工作。有时候要想着自己是在为中国某某行业的信息化作先驱者，或者时不时的告诉team member，这个项目能够为某某某国家部门每年节省多少多少百万的纳税人的钱，这样就有动力了。平凡的事情也是可以有个崇高的目标的。<br /><br />　　62. 产品各部分的界面和操作习惯一致么？<br />　　要这样。要让用户觉得整个程序好像是一个人写出来的那样。<br /><br />　　63. 有可以作为宣传亮点的Cool Feature么？<br />　　要。这是增强团队凝聚力、信心的。而且，“一俊遮百丑”，有亮点就可以掩盖一些问题。这样，对于客户来说，会感觉产品从质量角度来说还是acceptable的。或者说，cool feature或者说亮点可以作为质量问题的一个事后弥补措施。 <br /><br />　　64. 尽可能缩短产品的启动时间要这样。<br />　　软件启动时间（Start-Up time）是客户对性能好坏的第一印象。<br /><br />　　65. 不要过于注重内在品质而忽视了第一眼的外在印象程序员容易犯这个错误：太看重性能、稳定性、存储效率，但忽视了外在感受。而高层经理、客户正相反。这两方面要兼顾，协调这些是PM的工作。<br /><br />　　66. 你们根据详细产品功能说明书做开发么？<br />　　要这样。要有设计才能开发，这是必须的。设计文档，应该说清楚这个产品会怎么运行，应该采取一些讲故事的方法。设计的时候千万别钻细节，别钻到数据库、代码等具体实现里面去，那些是后面的事情，一步步来不能着急。<br /> <br />　　67. 开始开发和测试之前每个人都仔细审阅功能设计么？<br />　　要做。Function Spec review是用来统一思想的。而且，review过以后形成了一致意见，将来再也没有人可以说“你看，当初我就是反对这么设计的，现在吃苦头了吧” <br /><br />　　68. 所有人都始终想着The Whole Image么？要这样。项目里面每个人虽然都只是在制造一片叶子，但每个人都应该知道自己在制造的那片叶子所在的树是怎么样子的。我反对软件蓝领，反对过分的把软件制造看成流水线、车间。参见第61条。<br /><br />　　69. Dev工作的划分是单纯纵向或横向的么？<br />　　不能单纯的根据功能模块分，或者单纯根据表现层、中间层、数据库层分。我推荐这么做：首先根据功能模块分，然后每个“层”都有一个Owner来Review所有人的设计和代码，保证consistency。 <br /><br />　　70. 你们的程序员写程序设计说明文档么？<br />　　要。不过我听说微软的程序员1999年以前也不写。所以说，写不写也不是绝对的，偷懒有时候也是可以的。参见第56条。<br /><br />　　71. 你在招人面试时让他写一段程序么？<br />　　要的。我最喜欢让人做字符串和链表一类的题目。这种题目有很多循环、判断、指针、递归等，既不偏向过于考算法，也不偏向过于考特定的API。 <br /><br />　　72. 你们有没有技术交流讲座？<br />　　要的。每一两个礼拜搞一次内部的Tech Talk或者Chalk Talk吧。让组员之间分享技术心得，这笔花钱送到外面去培训划算。 <br /><br />　　73. 你们的程序员都能专注于一件事情么？<br />　　要让程序员专注一件事。例如说，一个部门有两个项目和10个人，一种方法是让10个人同时参加两个项目，每个项目上每个人都花50%时间；另一种方法是5个人去项目A，5个人去项目B，每个人都100%在某一个项目上。我一定选后面一种。这个道理很多人都懂，但很多领导实践起来就把属下当成可以任意拆分的资源了。 <br /><br />　　74. 你们的程序员会夸大完成某项工作所需要的时间么？<br />　　会的，这是常见的，尤其会在项目后期夸大做某个change所需要的时间，以次来抵制change。解决的方法是坐下来慢慢磨，磨掉程序员的逆反心理，一起分析，并把估算时间的颗粒度变小。 <br /><br />　　75. 尽量不要用Virtual Heads 最好不要用Virtual Heads。<br />　　Virtual heads意味着resource is not secure，shared resource会降低resource的工作效率，容易增加出错的机会，会让一心二用的人没有太多时间去review spec、review design。一个dedicated的人，要强过两个只能投入50%时间和精力的人。我是吃过亏的：7个part time的tester，发现的Bug和干的活，加起来还不如两个full-time的。参见第73条。73条是针对程序员的，75条是针对Resource Manager的。</p>
		<p> </p>
<img src ="http://www.blogjava.net/iKingQu/aggbug/38927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-04-03 14:35 <a href="http://www.blogjava.net/iKingQu/articles/38927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>