<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Some reminiscences, some memories &#187; 团队</title>
	<atom:link href="http://www.mikespook.com/index.php/tag/%e5%9b%a2%e9%98%9f/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mikespook.com</link>
	<description>Just another boring day</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:28:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>我们要什么样的.NET程序员</title>
		<link>http://www.mikespook.com/2011/12/%e6%88%91%e4%bb%ac%e8%a6%81%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84-net%e7%a8%8b%e5%ba%8f%e5%91%98/</link>
		<comments>http://www.mikespook.com/2011/12/%e6%88%91%e4%bb%ac%e8%a6%81%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84-net%e7%a8%8b%e5%ba%8f%e5%91%98/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 04:47:13 +0000</pubDate>
		<dc:creator>mikespook</dc:creator>
				<category><![CDATA[My life]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[团队]]></category>
		<category><![CDATA[扯淡]]></category>

		<guid isPermaLink="false">http://www.mikespook.com/?p=1170</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 70px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
外刊IT评论今天抽风，发了很久以前的一篇博文的译文出来：《为什么我们不要.NET程序员》。本文一发，各种口水接踵而至。这篇文章实际上是《CEO Friday: Why we don’t hire .NET programmers》的译文，原文作者在发文后的两天的时间里不断的根据读者反馈对文章进行了更新和补充。但是遗憾的是外刊IT评论却未能翻译完整（不，不，你们不要指望我会翻译剩下的部分，我对此毫无兴趣。），这使得这篇很有闪光点的文章立刻变成了“孰优孰劣”的口水文章了。

看看中文翻译后的评论吧：

<span class="readmore"><a href="http://www.mikespook.com/2011/12/%e6%88%91%e4%bb%ac%e8%a6%81%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84-net%e7%a8%8b%e5%ba%8f%e5%91%98/" title="我们要什么样的.NET程序员">阅读全文——共2236字</a></span>]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 70px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p><a href="http://www.aqee.net/" target="_blank">外刊IT评论</a>今天抽风，发了很久以前的一篇博文的译文出来：《<a href="http://www.aqee.net/why-we-dont-hire-net-programmers/" target="_blank">为什么我们不要.NET程序员</a>》。本文一发，各种口水接踵而至。这篇文章实际上是《<a href="http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/" target="_blank">CEO Friday: Why we don’t hire .NET programmers</a>》的译文，原文作者在发文后的两天的时间里不断的根据读者反馈对文章进行了更新和补充。但是遗憾的是外刊IT评论却未能翻译完整（不，不，你们不要指望我会翻译剩下的部分，我对此毫无兴趣。），这使得这篇很有闪光点的文章立刻变成了“孰优孰劣”的口水文章了。</p>
<p>看看中文翻译后的评论吧：</p>
<blockquote><p>有一种人，自己写不出东西，就怪能写出东西的人使用的工具太先进</p>
<p>弱智文章</p>
<p>SB文章，还以为有什么高深的见解，完全是个自以为是的家伙。至多不过是了解了.net之外某一些东西，对自己完全不了解的东西大放厥词还放出优越感来了。</p>
<p>俺作为一名.NET程序员，鉴定结果为，“此文纯属标题党”，一笑而过~~~</p></blockquote>
<p>我对留下这些评论的程序员感到悲哀……</p>
<p>我们的团队也有着大量的.NET工程师，我每天与他们共处。他们中间有聪明的、优秀的、稳重的工程师；也有躁动的、浮夸的、随意的编码人员。他们能够产生符合设计规范和要求的代码和系统；也会在不经意之间向系统引入致命 bug 而导致生产环境的崩溃。他们其实与依赖其他技术架构的程序员并无多大的不同。</p>
<p><span id="more-1170"></span></p>
<p>早上，我看到那篇中文翻译的时候，在公司的讨论组里向大家分享了译文和原文。特别提示了，重点看看原文后面的评论。发出去后，我本以为会有人回应支持或者反对。但是没有任何一个人对那些内容进行赞扬或者批评。后来，一个比较了解我的同事私下跟我说“估计一大部分人心里不是滋味”，“一下看到标题，还有你的身份”。好吧，可能许多人心里十分不悦，但是碍于我的“身份”不便表露？我毫不介意的跟大家分享一下，我在国家正式的定义中的身份是“群众”。</p>
<p>我不知道会有多少团队的成员看到本文，我也无从知道他们真实的想法。不过，我可以谈谈什么样的.NET程序员是我们需要.的。</p>
<p>当然为了避免在我的博客上有人指责我由于“根本不了解.NET技术，也不懂windows平台，没有资格来说三道四”。我简要介绍一下我对windows平台和.NET的了解情况。</p>
<p>跟大部分人一样，我对计算机和IT的认识是从windows开始的。win32.hlp 这个帮助文件我想大部分年轻的.NET程序员从来没看过，甚至从来没听过。COM/COM+对于.NET平台就像战国时代的二轮马车一样遥远。PE文件结构就是放在博物馆里的竹简一般，除了历史学家会感兴趣之外毫无用处……我能举的例子还有很多，而这些在我被开源和 Linux 这个魔鬼抓去之前，是每日在学习和探索的东西。哦，忘记说了，.NET 我也不算是毫无认知。至少，在有史可查的范围内，我开源了国内第一个用C#编写的针对性SQL Injection自动化注入工具，如果没记错，那是01还是02年左右的时间。好吧，现在我是否有资格来跟大家探讨这个事情了呢？</p>
<p>事情还是从如何做出一个1.7盎司的汉堡说起……</p>
<p>作为一个.NET程序员，或者特指正在进行互联网开发的.NET程序员，你是否知道我们面对的不仅仅是1.6盎司、1.7盎司的汉堡这么简单的事情？你是否知道互联网这场盛宴不仅仅是做一两个汉堡这么简单？思考的方式有许多种，你是否陷入了做汉堡需要在哪里获得合适的面包、肉饼、洗好的蔬菜、酱料的迷题中，而忘记了手边就有面粉、烤炉，冰箱里有冷藏的鲜肉（你看，已经无需自己杀猪宰牛了），放在窗台的蔬菜上面的泥土和青虫说明菜叶相当的新鲜。</p>
<p>换句话说：你们是否陷入过疯狂的在.NET库中寻找一个合适的类，而忘记去看看开源社区或者第三方是否有提供更好的服务？是否执意要在微软提供的架构体系下实现一些特别的需求，其实那些需求只要一些跳出框架的小小的技巧？是否在看到业内的某些关于技术创新的一句话新闻时，就在心中暗想“这有什么先进的，.NET早有了”，而没有深入的研究为什么这一创新能够成为业内的新闻？</p>
<p>当然，如果对于这些你都有自己可以解释的答案，那么你或许是我们所需要的那种.NET程序员！</p>
<p>如果：你不但能够使用服务器端控件，还能说出其封装的底层原理；不但能够在IIS里建立应用，还能弄明白从客户在浏览器输入你的应用的地址，到他得到满意的结果，这中间每个环节隐含的细节；不但会用WCF来实现功能，也清晰的理解其中的缘由，尤其的，清晰的了解SOA应用于互联网的利弊；不但会在MSDN中查询疑难问题，也会在Google中参考出现在Mono中的类似的解决办法。</p>
<p>那么你应该是我们所需要的那种.NET程序员！</p>
<p>当然，更为优秀的，是那些能够在.NET框架下开发，却从不自称为.NET程序员的家伙们。他们不会将自己限定在某种技术、某种平台；他们热爱技术，热爱生活；他们有着像猫一样的好奇心，即便是这好奇心可能杀死他们也从不畏惧，他们同样有九条命；他们乐于钻研.NET技术，但是也会吸取其他平台的精华……</p>
<p>对于这样的人，我知道是可遇不可求的……</p>
<p>.NET、JAVA、PHP、Python……这些技术难道就没有一点贯通的地方？难道我们在自我介绍的时候不能换个说法：</p>
<blockquote><p>我，是程序员，在现在这个阶段我对.NET的使用积累的经验更多一些。</p></blockquote>
<p>是的，我正是这个意思，程序员可以有各种标签，但是别让标签左右了工程师的灵魂。做技术的主人还是奴隶，只是个人的选择而已。</p>
<p>这或许能够阐述我们要什么样的.NET程序员了吧？</p>
<p>我们需要的是熟悉.NET的程序员，我们真得不要“.NET程序员”。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikespook.com/2011/12/%e6%88%91%e4%bb%ac%e8%a6%81%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84-net%e7%a8%8b%e5%ba%8f%e5%91%98/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[翻译]想要更好的质量？干掉你的QA团队吧。</title>
		<link>http://www.mikespook.com/2011/02/%e7%bf%bb%e8%af%91%e6%83%b3%e8%a6%81%e6%9b%b4%e5%a5%bd%e7%9a%84%e8%b4%a8%e9%87%8f%ef%bc%9f%e5%b9%b2%e6%8e%89%e4%bd%a0%e7%9a%84qa%e5%9b%a2%e9%98%9f%e5%90%a7%e3%80%82/</link>
		<comments>http://www.mikespook.com/2011/02/%e7%bf%bb%e8%af%91%e6%83%b3%e8%a6%81%e6%9b%b4%e5%a5%bd%e7%9a%84%e8%b4%a8%e9%87%8f%ef%bc%9f%e5%b9%b2%e6%8e%89%e4%bd%a0%e7%9a%84qa%e5%9b%a2%e9%98%9f%e5%90%a7%e3%80%82/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 08:35:25 +0000</pubDate>
		<dc:creator>mikespook</dc:creator>
				<category><![CDATA[My life]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[团队]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[质量]]></category>

		<guid isPermaLink="false">http://www.mikespook.com/?p=844</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 70px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
这是典型的“死Coder责任制”和“QA无用论”合体。大家仁者见仁、智者见智吧。个中道理还是得自己参悟啊！

原文在此：http://blogs.forrester.com/mike_gualtieri/11-02-17-want_better_quality_fire_your_qa_team，原作者是Mike Gualtieri，一位应用开发和部署专家。

&#8212;&#8212;&#8212;&#8212;翻译分割线&#8212;&#8212;&#8212;&#8212;

<span class="readmore"><a href="http://www.mikespook.com/2011/02/%e7%bf%bb%e8%af%91%e6%83%b3%e8%a6%81%e6%9b%b4%e5%a5%bd%e7%9a%84%e8%b4%a8%e9%87%8f%ef%bc%9f%e5%b9%b2%e6%8e%89%e4%bd%a0%e7%9a%84qa%e5%9b%a2%e9%98%9f%e5%90%a7%e3%80%82/" title="[翻译]想要更好的质量？干掉你的QA团队吧。">阅读全文——共946字</a></span>]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 70px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>这是典型的“死Coder责任制”和“QA无用论”合体。大家仁者见仁、智者见智吧。个中道理还是得自己参悟啊！</p>
<p>原文在此：<a href="http://blogs.forrester.com/mike_gualtieri/11-02-17-want_better_quality_fire_your_qa_team" target="_blank">http://blogs.forrester.com/mike_gualtieri/11-02-17-want_better_quality_fire_your_qa_team</a>，原作者是Mike Gualtieri，一位应用开发和部署专家。</p>
<p>&#8212;&#8212;&#8212;&#8212;翻译分割线&#8212;&#8212;&#8212;&#8212;<span id="more-844"></span></p>
<p>严肃的说，我近期和一位客户聊天，他咒骂到，当他们去掉QA团队后软件的自量立刻得到改善。他们让软件的开发人员直接承担质量责任，以代替QA对于质量的责任。这看起来有违对于软件质量和开发者一贯的认知：不要相信开发人员，或者借鉴 <a href="http://www.reaganlibrary.com/" target="_blank">Ronald Reagan</a>所说，相信但是要验证。</p>
<p>其实这位客户并无懈怠。他们的应用面向金融市场提供了实时的市场数据，而这位客户每年发布超过40款软件。如果某个应用提供的市场数据不可用或发生错误，那么使用它的金融市场将崩溃。信息必须绝对可用和正确。这个应用不能宕掉，也不能发生错误。</p>
<p><strong>为什么这能运作？</strong></p>
<p>这位用户说，能运作的原因是开发者知道他们要100%的为应用负责。如果应用不能工作，开发者不能说“QA没有找出问题”。这里没有QA团队去推卸责任。在应用开发团队这里皮球就停下了。他们最好让一切都正常，否则就要把脑袋当皮球了。</p>
<p>作为英国作家<a href="http://en.wikipedia.org/wiki/Samuel_Johnson" target="_blank">Samuel Johnson</a>幽默的描述，”上了绞刑台的精神最集中（译注：好吧，我不知道这个是不是准确，意思应该没错。原文是：The prospect of being hanged focuses the mind wonderfully.）”。</p>
<p><strong>这个能为你所用吗？</strong></p>
<p>如果应用开发团队对于<a href="http://blogs.forrester.com/mike_gualtieri/10-07-18-software_quality_more_just_lack_defects">软件质量</a>负责，这就能运作。糟糕的质量的后果如此严重，以至于应用 团队没有选择，只有在设计、开发，和测试时集中他们的精神。这些年来我开发的多数软件并无QA团队。当你为大型企业开发关键应用做顾问的时候，要么提供更好的质量，要么掉脑袋，得不到报酬。</p>
<p>责任并不够。要想成功，应用开发团队必须建立测试约束，建立测试计划，以及使用测试工具。由于开发者知道代码中哪里是藏尸地，他们可以集中力量针对应用中脆弱的部分。所付出的努力与软件的类型有关。最终的结果将是更好的质量和更快的发布周期。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikespook.com/2011/02/%e7%bf%bb%e8%af%91%e6%83%b3%e8%a6%81%e6%9b%b4%e5%a5%bd%e7%9a%84%e8%b4%a8%e9%87%8f%ef%bc%9f%e5%b9%b2%e6%8e%89%e4%bd%a0%e7%9a%84qa%e5%9b%a2%e9%98%9f%e5%90%a7%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>没有大团队——Nothing is big enough!</title>
		<link>http://www.mikespook.com/2009/06/%e6%b2%a1%e6%9c%89%e5%a4%a7%e5%9b%a2%e9%98%9f%e2%80%94%e2%80%94nothing-is-big-enough/</link>
		<comments>http://www.mikespook.com/2009/06/%e6%b2%a1%e6%9c%89%e5%a4%a7%e5%9b%a2%e9%98%9f%e2%80%94%e2%80%94nothing-is-big-enough/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 05:38:34 +0000</pubDate>
		<dc:creator>mikespook</dc:creator>
				<category><![CDATA[My life]]></category>
		<category><![CDATA[团队]]></category>
		<category><![CDATA[组织结构]]></category>

		<guid isPermaLink="false">http://www.mikespook.com/?p=348</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 70px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
刚才看到 Fenng 写的这篇博文：大技术团队的危险性。其中的一些东西，确实有一些感触。

维基百科上对于“团队”的定义是这样的（http://zh.wikipedia.org/wiki/%E5%9B%A2%E9%98%9F）：

“团队由若干独立成员共同组建，有临时与长期之分。团队要为某一共同目标而奋斗，这需要团队成员贡献各自不同的专业特长。对团队的管理不同于上下级关系的管理，是横向的交流与沟通而不是纵向的命令与服从。”

<span class="readmore"><a href="http://www.mikespook.com/2009/06/%e6%b2%a1%e6%9c%89%e5%a4%a7%e5%9b%a2%e9%98%9f%e2%80%94%e2%80%94nothing-is-big-enough/" title="没有大团队——Nothing is big enough!">阅读全文——共856字</a></span>]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 70px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>刚才看到 Fenng 写的这篇博文：<a href="http://www.dbanotes.net/review/tech_team.html" target="_blank">大技术团队的危险性</a>。其中的一些东西，确实有一些感触。</p>
<p>维基百科上对于“团队”的定义是这样的（<a href="http://zh.wikipedia.org/wiki/%E5%9B%A2%E9%98%9F" target="_blank">http://zh.wikipedia.org/wiki/%E5%9B%A2%E9%98%9F</a>）：</p>
<blockquote><p>“团队由若干独立成员共同组建，有临时与长期之分。团队要为某一共同目标而奋斗，这需要团队成员贡献各自不同的专业特长。对团队的管理不同于上下级关系的管理，是横向的交流与沟通而不是纵向的命令与服从。”</p></blockquote>
<p>虽然不是一个十分正式的定义，不过能说明几个问题。</p>
<ol>
<li>团队不是一个人在战斗。</li>
<li>团队有统一的目标。</li>
<li>团队成员一定有分工。</li>
<li>团队的工作方式是合作的，而不是管制。</li>
</ol>
<p>团队成员不光可以是个人，还可以是一个紧凑的组织，部门甚至公司。成员间进行平等的沟通、交流，相互支撑最终达到一个确定的、统一的目标。</p>
<p>由于沟通交流是平等的、横向的，那么就意味着任何沟通都是点对点的。当团队成员增加时，沟通的难度也就加大。</p>
<p>听起来有点像早期没有交换设备的点对点电话。在只有2个端点时有1条通信链路，3个端点就增加到3条，4个端点就增加到6条……那么对于一个有 n 个成员的团队，每个团队成员就需要有 n-1 个沟通链路。当沟通链路数足够大时，整个团队的人都在忙着沟通，而不是真正进行工作。当超过临界，沟通链路超过单个成员所能承受的极限时，为了维持团队正常的运作，有一些沟通链路会被忽略。一些工作关系相对疏远的成员不再进行沟通。这时从行政架构上虽然还是一个大团队，但是这个大团队已经不复存在，由若干个自然形成的小团队取而代之。</p>
<p>4-5个人组成了开发小组。4-5个开发小组组成了技术组。技术组、客服、市场……组成了项目组。项目1组、项目2组……组成了项目部……自最终稳定的团队结构是树形的，是分层的。站在每层去看，每层的团队都是小团队。当某一层上的团队开始有大团队出现时必然会有新的层次出现，将大团队重新划分为小团队。</p>
<p>这或许就是“无为而治”的道理吧。</p>
<p>硬是要将这种很有美感的、自然的组织架构重新排布，徒增本不需要的沟通链路，那么团队的结果或许跟<a href="http://shipmuseum.sjtu.edu.cn/ship07.htm">瓦沙</a>一样最终沉没。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikespook.com/2009/06/%e6%b2%a1%e6%9c%89%e5%a4%a7%e5%9b%a2%e9%98%9f%e2%80%94%e2%80%94nothing-is-big-enough/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

