<?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>漫天风 &#187; Erlang</title>
	<atom:link href="http://blog.thinklet.net/mantian/category/erlang/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thinklet.net/mantian</link>
	<description>把细小的事情做到极致</description>
	<lastBuildDate>Mon, 18 Jan 2010 16:28:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>yahoo实施Scrum敏捷方法的成果</title>
		<link>http://blog.thinklet.net/mantian/2008/12/30/yahoo%e5%ae%9e%e6%96%bdscrum%e6%95%8f%e6%8d%b7%e6%96%b9%e6%b3%95%e7%9a%84%e6%88%90%e6%9e%9c/</link>
		<comments>http://blog.thinklet.net/mantian/2008/12/30/yahoo%e5%ae%9e%e6%96%bdscrum%e6%95%8f%e6%8d%b7%e6%96%b9%e6%b3%95%e7%9a%84%e6%88%90%e6%9e%9c/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:32:30 +0000</pubDate>
		<dc:creator>mantian</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[agile pratice]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/mantian/?p=79</guid>
		<description><![CDATA[今天例会的时候听到Lion将要介绍yahoo敏捷实践的东东，网上搜索了一把，发现yahoo其实已经实施3年多了，而且据说获得了比较大的成功，3年后，Yahoo!已经有了200多个开发团队在使用敏捷实践。明天记得找boots 要点资料哈。此外，这本书是yahoo人写的，可以考虑购买看看哦：敏捷估计与规划
Scrum 产生的收益在开发团队经验中体现在不同的方面。在Yahoo!公司，在上18 个月中将近50 个开发项目采用Scrum，一共近600 人参与，采用Scrum 的团队数量在快速发展。这些项目从客户界面，网页设计如Yahoo! Photos, 到后端基础构造服务如服务上百万客户的Yahoo!Mail；从全新的产品如Yahoo! Podcasts，其利用Scrum 作为从构思到发布的流程（并获得该年度同类产品的Webby 奖），到一些增量的项目，包括开发新的部件并维修bug 和其他的维护工作；我们也利用Scrum 来分配分布式项目。每一个季度，我们对Yahoo!公司每一位Scrum 的使用者进行调查（包括产品所有者，开发团队成员，ScrumMaster 和这些人员的经理），并让他们将Scrum 于以前的开发方式做一对比。我们正在准备Yahoo!公司的深入调查报告，以下是相关的资料显示：

生产效率：68%回复显示采用Scrum 后生产效率提高（4 分或5 分在以5 分为衡量标准上）；5%显示采用Scrum 后生产效率降低（1 分或2 分在以5 分为衡量标准上）；27%显示采用Scrum 后无变化（3 分在以5 分为衡量标准上）。
团队精神：52%回复显示采用Scrum 后团队精神加强；9%显示采用Scrum 后团队精神减弱；39%显示采用Scrum 后无变化。
适应性：63%回复显示采用Scrum 后适应性加强；4%显示采用Scrum 后适应性减弱；33%显示采用Scrum 后无变化。
责任性：62%回复显示采用Scrum 后责任性加强；6%显示采用Scrum 后责任性减弱；32%显示采用Scrum 后无变化。
协作能力：81%回复显示采用Scrum 后协作能力加强；1%显示采用Scrum 后协作能力减弱；18%显示采用Scrum 后无变化。
在产品所有者估算下，开发团队的生产效率平均提高了36%
85%的开发团队成员表示如果其拥有决策权的前提下，将会继续使用Scrum。

ADTmag.com的编辑Kurt Mackie与Gabrielle Benefield（这些团队的核心组织者之一）就Scrum在Yahoo中的应用情况进行了对话。
Kurt问到，是什么原因促使Yahoo!转向了敏捷和Scrum开发，Benefield说：
有些公司一起步官僚习气就很严重。可是，Yahoo刚开始时规模很小、发展很快，他们最开始的做法非常敏捷，几个创始人坐在一间屋子里面开发软件。然而当规模扩大到某种需要更加频繁交流的阶段后，他们提出了使用传统的瀑布流程……但是在我们这种创业型文化中，它很难实现。我们的员工都很聪明，富有创新能力，他们习惯于时时刻刻提出自己的想法。瀑布流程对他们来说太古板太做作了，它降低了他们的效率。于是，团队中的一名工程师开始给大家布道，他说：“嘿，我们应该更敏捷一些”……所以在2005年2月，我们就启动了一个敏捷开发的试点项目。
随后Benefield又谈到其在实施敏捷开发的过程中的一些心得体会：
…… 那些我曾参与其中的敏捷团队，尤其是那些对其进行过大量辅导的团队，他们的生产力很容易就提升了200～300%。有些团队做的尤为出色，因为他们真正地 实施了敏捷。某些团队可能由于没经过太多的辅导和训练，或存在系统性的阻碍，所以改进情况就不那么明显。但从整体来看——包括那些最差的情况——生产力的 提升幅度大约在35～36%之间。综合所有情况考虑，这个估算还是相当保守的。
Kurt又问道：“在敏捷/Scrum的世界里，变化是好事吗？”Benefield坦然道：
我 们 的想法发生变化是很自然的事情。当你开始构建一个产品并看到一些结果后，你就会想做出一些改变。我们不会说“你不能改它”，我们是在拥抱变化。在互联网上 面，你不得不拥有快速变化的能力。举个例子来说，当我们搭建Yahoo邮件的大规模存储后端时，中途有一个竞争对手提供了容量更庞大的邮箱存储空间。我们 当时必须迅速做出响应，假如当时我们用的是传统的瀑布模型的话，我们势必无计可施，但最终我们成功地对抗了对手的威胁。在开发产品的过程中，我们曾一次又 一次面临这样的局面。
当其被问到开发中想法常常变化所带来的影响时，Benefield说道：
敏 捷有着严格的纪律。对于类似所有的代码都有全方位的测试这种事情，我们是纪律严明的，所以你有勇气去尝试变化，理解变化所造成 的影响。这里不会出现那种所有人都在尝试自己念头的无序状态。我们允许团队进行自组织，各种想法从团队中源源涌出。但管理层和产品所有者对选用哪种想法来 实施有着最终决定权，会从业务层面上来制定优先级，因为他们对其了如指掌。他们从根本上控制着何时发布产品、发布哪些功能，而团队自己决定如何完成工作。
在最后，Benefield以下面这段话结束了本次访谈：
在Yahoo，我们永远不会命令别人使用这个过程。我认为过程的优点要靠它自身体现出来，人们也应该有选择的自由。敏捷正在Yahoo中慢慢取得主导地位……我相信，随着时间的推移，为了能够在竞争中真正胜出，敏捷会是公司最佳的选择。
]]></description>
		<wfw:commentRss>http://blog.thinklet.net/mantian/2008/12/30/yahoo%e5%ae%9e%e6%96%bdscrum%e6%95%8f%e6%8d%b7%e6%96%b9%e6%b3%95%e7%9a%84%e6%88%90%e6%9e%9c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>迎接 Erlang盛宴</title>
		<link>http://blog.thinklet.net/mantian/2008/12/19/%e8%bf%8e%e6%8e%a5-erlang%e7%9b%9b%e5%ae%b4/</link>
		<comments>http://blog.thinklet.net/mantian/2008/12/19/%e8%bf%8e%e6%8e%a5-erlang%e7%9b%9b%e5%ae%b4/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 07:28:06 +0000</pubDate>
		<dc:creator>mantian</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[quick start]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/mantian/?p=3</guid>
		<description><![CDATA[1、Erlang是什么；
Erlang是什么是我们最先要面对的问题，只有清楚了它是什么，我们才能做出我们的决定。可见这个问题的重要性，它决定了很多读者是否会继续看下去！非常紧张。
Erlang最初是爱立信为开发电信相关产品而产生。
Erlang是一种面向并发 (Concurrency Oriented)，面向消息（ Message Oriented）的函数式 (Functional)编程语言。
面向并发说明 Erlang支持大规模的并发应用，我们可以在应用中处理成千上万的并发，而不相互影响。面向消息，其实是为并发服务！我们应该都熟悉多线程，熟悉加锁解锁操作，熟悉可能出现的资源竞争与死锁。在 Erlang的世界里，我们可以将轻轻的抹去这些令人苦恼的词汇。 Erlang的世界，每个处理都是独立的个体，他们之间的交互仅仅靠消息！因此不会有死锁，不会有那种痛苦的编程经历。
Erlang中一个非常重要的名词： Process，也就是我们前面提到的“个体”。它不是我们操作系统中的进程，也不是线程。它是 Erlang提供给我们的超级轻量的进程。为了适应大规模并发的特性， Process需要能够快速创建，快速销毁。之间通信的唯一方法就是消息，我们只要知道一个 Process的名字即 pid，就可以向其发送消息。 Process也可以在任何时候，接收消息。我们这样做只有一个目的：让我们的系统更加简单，用一种朴素的做法，实现一个高效的语言。 Process
Erlang是种函数式编程语言，对此我没有很深刻的理解，最明显的特征就是， Erlang中到处都是函数，函数构成了我们的产品的主体，把这些函数放到一个个的 Process中去，让他们运行起来，那么就组成了我们朝气蓬勃的产品。
Erlang支持对数据的位操作，拥有丰富的数据持久化机制。
同时需要说明的是 Erlang内建垃圾回收机制（ GC）。
2、 Erlang的语言特性
1.简单小巧
Erlang中只有 8种基本的数据类型：
integer、 float、 atom、 reference、 fun、 port、 pid、 bitstring
同时提供 2种复合结构： tuple， list，这就是 Erlang的所有数据类型。
2.模式匹配
在 Erlang的函数中，某些语法中，我们可以使用 Pattern匹配，这是一个非常好的特性，我们可以让代码自己去决定如何执行 ：
比如，我们定义一个函数，其告诉我们某种水果的价格 :
price(apple) -&#62; 2.0;
price(banana) -&#62; 1.2.
我们随后调用 price(Fruit)，会根据 Fruit变量的内容返回具体的价格。这样做的好处就是节省了我们的代码量，我们不用 if&#8230;else…或者 switch…case的来伺候了。也便于代码的扩展：加一个新的水果品种，我们只需要加一行就可以了。
学习 Erlang一个非常重要的内容就是模式匹配，但是请不要混淆，这个匹配和正则表达式没有任何干系。
3.变量单次赋值
这个是一个匪夷所思的特性，变量竟然只能单次赋值！是的 Erlang中变量一旦绑定某个数值以后，就不能再次绑定，这样做的好处是便于调试出错（更深层次的原因是 Erlang为并发设计，如果变量可以修改，那么就涉及到资源的加锁解锁等问题），当发生错误时，某个变量是什么就永远是什么，不用顺藤摸瓜的查找谁修改过它，省了好多事情。唯一的麻烦就是需要一个信的变量时，你必须再为它想一个名字。
4.丰富的 libs
Erlang中提供丰富的 libs
stdlib中包含大量的数据结构如 lists， array， dict， gb_sets， gb_trees， [...]]]></description>
		<wfw:commentRss>http://blog.thinklet.net/mantian/2008/12/19/%e8%bf%8e%e6%8e%a5-erlang%e7%9b%9b%e5%ae%b4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<a style="display: none;" href="http://mcinside.com/">MC Inside</a>