站立会议变形记

站立会议对于Scrum的意义,就像我们每天早上起来总是希望看看报纸,听听新闻,了解每日时事,关心国计民生。站立会议有助于Scrum Master以及整个团队了解项目进展情况,以便于控制项目进度,掌握团队成员的开发效率,促进成员之间的交流与沟通,并使所有成员对整个项目能有一个全面的认识。

站立会议的重要性不言而喻。如何遵循Scrum的原则开展好每天的站立会议呢?我在推行的Scrum实践中,发现站立会议总是会随着项目的进展,慢慢地发生变形,最后甚至会变得物事人非。幸运的是,每日的会议却没有理由地达成了Scrum的目的。那么,在Scrum开展站立会议是否一定要极为死板地遵循Scrum的原则?我认为未必。以下是我在推行Scrum过程中的一些粗浅认识。

More...

标签:

善变者常新

罗素说:“参差多态是幸福的本源”。我们的生活若能丰富多彩,每天都是新鲜的,就会觉得生活有滋有味,生命是有价值的,而我们的存在则是幸福而有意义的。如果每天的生活都是在重复,人就容易过得浑浑噩噩,茫然不知生活的乐趣,最后得过且过,浪费了自己的生命。我常常觉得,作为一名软件开发人员,或许是幸福的,因为在这个行业中,每天都有新鲜的技术与技能产生,每天都有许多未知的东西等待我们去探索,去学习,去分析。但这种幸福也许从本质上讲,是“痛并快乐着”。新鲜的技术让我们兴趣盎然,但这种快如流星的技术更新速度,又有些让我们应接不暇。

More...

标签:

Strategy模式与Delegate委托

Strategy模式是对算法的封装。即使是一个计算行为,如果其实现有其多样性,为达到易扩展的目的,我们也有必要将其抽象出来,以接口的形式来定义。由于充分利用了面向 对象的多态性,在调用该行为时,其具体的实现是在运行期决定的。以税收计算为例,假定税收策略分为个人所得税,和企业所得税。根据策略模式,将税收策略抽象为接口ITaxStrategy

public interface ITaxStrategy
{
     double Calculate(double income);
}

More...

标签:

面向对象思想

面向对象思想为软件设计与开发赋予了哲学的意义。在哲学的世界里,小至沙粒微尘,大至日月星辰乃至宇宙,均可视为单独的个体对象而存在。如果以哲学的目光 凝视程序的世界,又何尝不是如此?一个用户,一种销售策略,一条消息,或是某种算法,一个Web的网页,面向对象思想均将其看作为一种对象。而每一种对 象,都有其单独的生命周期,谁来创建它,谁来销毁它,它的内在属性,表现行为,以及它与外界之间的关系和集合,无不具有某种哲学的意味。我们在定义对象 时,就好比是在描述一个活生生的事物,需要定义该对象的自然属性和社会属性,限定它的内涵与外延,勾勒出该对象的社会关系。而对于抽象、多态与封装,则是 一种形而上学的概念,它将面向对象技术推向为思想的境界。
...

More...

标签:

软件隐喻的本质与模式

 1.引言

  隐喻思维具有普遍性,是人类认知得以深化的前提之一,隐喻是丰富人类语言的有效手段。

  然而,一直以来,对于隐喻的讨论主要限于语言学和修辞学,从而将隐喻狭隘化,局限化,使得隐喻在其他领域中的作用未能得到彰显。美国语言学家莱考夫认为,隐喻不是语言的表面现象,而是一种深层的认知机制,它组建了我们的思维,形成了我们对世界的判断,使语言结构化、系统化,从而具有巨大的生产力。
...

More...

标签:

QCon日记

6日晚,参会的InfoQ编辑和国际讲师们一起在恭王府边的四川饭店**了一次。**的地方选得很好,居然就在清朝第一贪官和绅府的旁边。这是我第一次参加InfoQ的线下活动,也是与中文站编辑的初次谋面。有了网络就是神奇,虽然素昧平生,却已是多年好友。国际讲师也是济济一堂,包括Thoughtworks首席科学家Martin Fowler,Spring之父Rod Johnson,eBay架构师Randy Shoup,《硝烟中的Scurm和Xp》作者、敏捷教练Henrik Kniberg,Dojo Toolkit的联合创始人Dylan Schiemann,当然还有我们InfoQ的老大、C4Media的总裁Floyd Marinescu。为了便于编辑与这些讲师之间的交流,组织人特定将我们这些编辑与讲师们交叉坐在一起。我正好就坐在Martin Fowler和Randy Shoup中间。Martin Fowler的大胡子看来有些威严,我只向他表达了几分仰慕之情,什么敬仰如滔滔流水之类的,就没有多言语了。反而是Randy长得比较慈眉善目,和他相谈甚欢。谈了架构,SOA以及云计算,谈到Java平台与.NET的整合,也谈到了eBay的架构设计。除了技术,自然还要谈点轻松的内容。例如川菜、中国文化,以及他对北京的感受,甚至谈到了旧金山的天气。抓住这个机会,我还给他宣传了我所在的城市——重庆,欢迎他到重庆去品尝品尝重庆火锅。这是Randy第一次到北京,所以多向他灌输一点中国的悠久文化,也可以培养培养他对中国传统文化的敬仰之情。我教他说中文,听他大着舌头痛苦地讲着“你好”,颇感到Randy的几分可爱之处。没想到Randy还知道中文“花椒”,一问之下,原来他妹妹的什么亲戚曾经在香港呆过一段时间,还曾向他们邮寄过“花椒”。原来如此。

More...

标签:

使用扩展方法对调用进行验证

利用C# 3.0提供的扩展方法技术,可以为已经编译好的程序集类型增加新的方法,从而应对新的扩展。除了在可扩展性方面所具有的优势之外,如果能够合理地结合泛型与类型推断,扩展方法还可以有效降低代码的重复,提高程序的可重用性。例如,这样的方法实现:

public class CustomerDAL

{

    public IEnumerable<Customer> FindCustomers(string roleName)

    {

        return from customer

            in context.Customer

               where customer.RoleName.Equals(roleName)

               select customer;

    }

}

More...

标签:

.Net编码技巧与资源

说明:本文收录.NET编码的诸多有用技巧和资源,以备项目开发中查询所用。本文内容部分来源于网络,且内容将不断更新。

1、如何获得国家名

2、读写INI配置文件

3、将字符串转换为长整型

4、获得机器的IP地址

5、Url重写

More...

标签:

开发WCF/Silverlight须知

ByteBlocks的博客文章中总结了开发WCF/Silverlight的注意事项,这样的经验之谈字字千钧,可以让后来的开发者少走许多弯路。

绑定的选择

毫无疑问,我们应该选择BasicHttpBinding,这也是Silverlight仅仅支持的一种绑定。

More...

标签:

基于消息与.Net Remoting的分布式处理架构

      分布式处理在大型企业应用系统中,最大的优势是将负载分布。通过多台服务器处理多个任务,以优化整个系统的处理能力和运行效率。分布式处理的技术核心是完 成服务与服务之间、服务端与客户端之间的通信。在.Net 1.1中,可以利用Web Service或者.Net Remoting来实现服务进程之间的通信。本文将介绍一种基于消息的分布式处理架构,利用了.Net Remoting技术,并参考了CORBA Naming Service的处理方式,且定义了一套消息体制,来实现分布式处理。

More...

标签: