Alt.NET 大会

2007 年 10 月 9 日

上周末我参加了 Alt.NET 大会。这是我长期关注的博客圈中一群人的首次正式聚会。他们是一群长期使用微软技术的开发者,他们认为自己的开发理念与微软的正统观念越来越脱节。虽然有些人考虑离开,但这个群体热衷于留下来,并试图影响微软的世界。

术语 alt.net 是由 大卫·拉里比在他的博客中创造的。这次会议是使用 开放空间 组织的,我认为这种风格特别适合这个社区的性质。我并不声称代表这个社区,或者定义它;这些话是我从我所看到和听到的内容中得出的解释。

替代

一个出现的问题是“替代”这个名字。这使得一些人感到不舒服,因为它暗示他们这是一个反对微软的群体。“替代”的另一种观点是它是一种拥抱选择的东西。许多社区认为,拥有许多替代方案会使它们更强大(Unix 社区跃入脑海)。在软件开发中,很少有一种解决方案适合所有可能的情况。拥有替代方案确实意味着你必须考虑哪种解决方案适合你的情况,但我更喜欢它,而不是试图用锤子来拧螺母。是的,这意味着个人经验和偏好会导致不同的选择。我们可能是程序员,但我们仍然是人,而不是具象化的算法。

alt.net 的思维方式对我来说非常熟悉。它融合了敏捷 + 面向对象 + 模式 + TDD + DDD,这正是我所青睐的软件开发学派。(由于缺乏一个合适的名称,我倾向于称之为 OOPSLA 软件开发学派。)当然,人们认为目前存在着一种主流的微软正统观念,它不符合 OOSPLA 学派。对此,有些人感到沮丧。但重点是,alt.net 社区并不认为应该抹杀这种被认为是主流的微软路线,而是认为微软的世界足够大,可以容纳不同的方法。

除了关于“替代”是否是一个好名字的讨论之外,还有关于是否需要一个名字的讨论。作为一个 新词 的狂热制造者,你不应该感到惊讶的是,我认为一个名字是有用的。这里显然形成了一种常见的软件开发风格,给它一个名字可以更容易地谈论它。不可避免地,有些人会对创造术语感到厌烦,但我认为它的用处超过了这种反对意见。

参与式社区

alt.net 的一个重要特征是它是一个参与式社区。传统上,当用户大会聚在一起时,供应商负责议程。大多数会议都是关于供应商向社区展示如何使用它提供的工具。好的供应商会倾听他们的客户社区,通过开发满足社区愿望的新产品来做出反应。

参与式社区则不同,他们不仅希望供应商倾听并提供合适的产品,他们还希望参与新产品的开发。正是这种参与式社区在 Java 世界中率先采取了行动。JUnit、IBatis、Spring、Hibernate 等并不是来自供应商,而是由“客户”开发的。软件行业的一个特点是,许多客户与供应商公司一样有能力生产重要的产品,尤其是在结合了开源的社区和精神的情况下。

微软面临的巨大挑战是如何与这样一个参与式和有主见性的社区互动。将这样一个群体视为对手会导致失去宝贵的产品,更重要的是,会失去与他们相关的有能力的人才。与这样一个社区互动带来了巨大的机会。我认为,围绕企业 Java 的参与式社区拯救了企业 Java 平台。微软在这方面面临的一个重大挑战是,这意味着要找到一种方法来适应开源开发。最近的迹象,特别是围绕 Iron Ruby 的迹象,表明至少微软的一些部门正在朝着正确的方向前进。

斯科特·古思里的演示表明了正确的方向 ASP.NET MVC 框架(另请参阅 斯科特·汉塞尔曼的视频)。这对我来说非常有趣,不是因为产品本身,它似乎没有特别创新的东西(这并不是抱怨),而是因为它周围的哲学意义。

首先,斯科特·古思里承诺来到这样一个小型会议上发布这款产品。其次是围绕可测试性的明确设计目标。添加丰富的酱汁,以清晰地理解和学习该领域的其他工作。添加可插拔性的装饰,允许框架与非微软工具一起工作,并鼓励扩展。许多在场的人说,自从 .NET 以来,他们还没有对产品发布感到如此兴奋。

这也是“替代”的一个很好的例子。MVC 框架并不打算取代 Web 窗体,程序员可以选择使用 Web 窗体或 MVC。

在这样一个社区中,另一个问题是,它是一个不将批评等同于敌意的社区。许多供应商受制于一种信念,即任何批评他们的人都是他们的敌人。事实上,你的朋友在批评你的时候往往是最有价值的。像任何大型公司一样,微软可能会表现出矛盾的反应。组织中肯定有一些部门认为朋友不应该批评。与参与式社区合作的一部分是学会重视友好的批评。同样,社区中的人需要学会如何批评而不变得刻薄——这在我们这个行业中是一种特别罕见的品质。

排他性社区

关于 alt.net 社区是否是一个排他性社区(以一种不好的方式)存在一些争论(特别是在博客圈中)。我发现一个有用的思考方式是会议期间出现过几次的问题。人们应该组建独立的 alt.net 用户组,还是应该尝试影响和改变当前的用户组?我对这个问题的答案是“两者都有”。一个专注的 alt.net 用户组会对讨论的材料以及构成该组的价值观和原则设定预期。从事这种开发风格的人需要与其他人进行交流,以便他们可以互相学习。我已经从事这种风格的开发十多年了,但我仍然有很多东西要学习。专注聚会的优势在于我可以专注于这种类型的内容。

一个专门的 alt.net 用户组只有在试图排斥其他人时才是排他性的。alt.net 大会并不排他,因为至少在大会满员之前,任何人都可以参加。只要 alt.net 用户组对接受任何人持开放态度,它就是一件好事。

与此同时,alt.net 人员参与更广泛的 .NET 社区也很重要。我鼓励这种软件开发风格,因为我真诚地认为它很有效。因此,我认为我必须努力向尽可能多的受众传达如何以及为什么这样做。这样,其他人就可以接触到这些想法,并有机会理解这些技术,以便他们可以选择是否尝试。我预计会看到许多 alt.net 人员在各种面向微软的会议上讨论这些技术及其经验。


我对 alt.net 社区抱有很高的期望。我相信这种类型的社区对微软生态系统的可持续未来至关重要,我想要一个健康的微软世界。我希望微软参与这个社区,这样许多领先的微软人就可以高兴地说他们是 alt.net 人员。我希望 alt.net 人员能够在维持自身和对进入社区的人持开放态度之间取得微妙的平衡。我希望我能在这方面发挥作用。这次首届大会上有一种极好的精神,为未来提供了大量的动力。