期间:2009
技术债务象限
过去几个月里有几个帖子是关于TechnicalDebt这就提出了一个问题:什么样的设计缺陷应该或不应该被归类为技术债务。
数码单反相机
像许多极客一样,我喜欢摄影。我们这些极客喜欢摄影,因为它提供了一种艺术努力的表象,同时允许我们沉迷于大量的技术细节和花钱买昂贵的玩具。一个朋友最近问我买相机的决定,这个问题促使我把它们写了下来。
自动初始化假
使用a的经典案例之一TestDouble就是调用远程服务时。远程服务通常很慢,而且常常不可靠,因此使用double是使测试更快、更稳定的好方法。
软件和奥巴马的胜利
巴拉克·奥巴马在2008年总统竞选中的胜利包括了软件的重要贡献——特别是使用互联网。但也许最有趣的方面是软件的进步和人类组织的发展之间的相互作用。
由正则表达式
在编写可维护代码时,最强大的工具之一是将大方法分解为命名良好的小方法——Kent Beck将这种技术称为组合方法模式。
两个硬的东西
在计算机科学中只有两件难事:缓存失效和命名。
——菲尔Karlton
Mercurial南瓜提交
我最近在使用Mercurial压缩一些提交时遇到了一些麻烦,所以认为有必要发表一篇文章,以防其他人也想这么做。我不知道这是不是最好的方法,但它似乎对我很有效。
安卓
上个月在谷歌IO大会上发言的附带好处之一是我得到了一部新手机——iphoneHTC魔法谷歌给所有与会者的安卓手机。实际上,我正打算把我的手机换成这样的东西,所以它来的正是时候。以下是我带着它一个月左右后的感想。
请求流映射
和我在Thoughtworks的同事们呆在一起,你很快就会得到这样的印象:唯一好的企业服务总线(ESB)是一个已死的ESB。吉姆·韦伯将其称为“错误的意大利面盒子”。因此,试图将他们从不需要他们的系统中赶出去的故事并不少见。
说明性的编程
世界上最常见的编程语言是什么?
振兴企业软件
澳大利亚金融服务公司AMP举办了一个名为Amplify的内部会议。他们请我谈谈敏捷软件开发。华体会登录网址我考虑了如何使它最好地适应会议的整体流程,特别是因为我预计有很大一部分观众不是IT的一部分。我开始讨论IT项目如何成为基础设施或战略项目。这种分类改变了您处理项目的方式,特别是IT人员和业务人员应该协作的方式。
Ruby在Thoughtworks
Thoughtworks从2006年开始在产品项目中使用Ruby,从那时到2008年底,我们已经完成了41个Ruby项目。在为QCon的演讲做准备时,我调查了这些项目,看看我们能从这些经验中吸取什么教训。到目前为止,我描述了关于Ruby的生产力、速度和可维护性的常见问题。到目前为止,我们的结论是Ruby是一个可行的平台,应该认真考虑许多形式的应用程序-特别是使用Ruby on Rails的web应用程序。我还上了一些技术课,包括一些关于使用Active Record进行测试的想法。
比较值
最引人注目的是敏捷软件开发宣言华体会登录网址它的值的格式是“我们喜欢的”吗x在y”。我不记得是谁想出这个主意的,也不记得它是怎么产生的。它可能只是在我们讨论想法时冒出来的。但它独特的格式让一些人再次尝试使用这种格式。
动态类型检查
最近,我们的一些开发人员遇到了这样的指责:在ruby这样的动态语言中,您使用了如此多的动态类型检查,以至于您最终有效地编写了自己的类型系统。所以他们想,既然我们已经写了很多真正的ruby代码——我们多久做一次动态类型检查?迈克尔·舒伯特收集了数据。
谷歌云端I/O会话
Rebecca Parsons和我谈论谷歌App Engine和云的一般世界。在第一部分中,我将讨论各种ThoughtWorkers从使用App Engine中学到的东西,强调测试、持久性和并发性的问题。在第二部分中,Rebecca谈到了企业迁移到云将面临的更广泛的问题。
煤尘On Rails
几周前在旧金山有一个叫做GoGaRuCo(金门Ruby会议)的Ruby会议。这次会议之所以受到关注,是因为在一次演讲中,演讲者用女性的性暗示图片来说明CouchDB的讨论。不出所料,结果是相当激烈的辩论,有时还带有攻击性。
有意的软件
几年前,我当时的同事Matt Foemmel对我们用来构建软件的工具不满意,他设法与Charles Simonyi取得联系,以了解更多关于阴影的信息有意的软件.他所看到的给他留下了深刻的印象,他说服我和其他思想工作者也参与进来。我们看到的是一个具有惊人潜力的工具,但我们仍然对它的保密和缺乏发布的紧迫性感到沮丧。这种挫败感在上周结束了。
外行程序员
我使用术语“业余程序员”是指那些在编程时并不认为自己是程序员的人。每天花大量时间在电子表格上的人就是在编程,通常是非常紧张的编程。然而,通常她不会称自己为程序员,也不会花很多时间学习如何更好地编程。
Chris sellers对dsl的看法
当我参加DSL DevCon时,微软的第9频道拉着我去接受Chris sellers的采访。
领域特定语言的元介绍
这是我通常的DSL介绍演讲,但我做了一些改变,因为我在向一群比平时更了解DSL的人演讲。因此,从本质上讲,我把它变成了我如何向人们介绍dsl的演讲。
矛盾的观察
许多计算机系统都是用来储存数据并将其转化为对人类有用的信息。当我们这样做的时候,我们有一种自然的欲望,希望使信息保持一致。毕竟,一个对事情有两种想法的计算机系统有什么用呢?
民主政治技术革命
我和同事扎克·埃克斯利谈到了2008年奥巴马总统竞选中使用的软件。我发现特别有趣的一个方面是,该软件支持并与活动的组织方法相互作用的方式。
三年真实世界的Ruby
在2009年伦敦QCon的一次演讲中,我调查了Thoughtworks从2006年到2008年对Ruby的使用情况,期间我们做了41个项目。我的演讲涵盖了我们对Ruby的生产力、速度和可维护性的看法。我的结论是,应该把Ruby作为一种开发环境来认真对待。我还有一个文章如果你更喜欢阅读而不是观看,那就涵盖了同样的内容。
纳什维尔项目
最近我花了一些时间在我最喜欢的Thoughtworks项目上。这是一个始于1998年的项目,使用当时新的J2EE技术。多年来,它有着令人着迷的历史:从ejb开始,将其拆除,转移到离岸的班加罗尔,再回到芝加哥。许多人在这个项目中进进出出,项目的总人数在6到60人之间变化。总的来说,该项目已经花费了超过300年的工作时间,总重量约为100 KLOC。
Dsl迁移
DSL倡导者需要防范的一个危险是,首先你设计了一个DSL,然后人们才使用它。就像任何其他的软件设备一样,一个成功的DSL也会不断发展。这意味着用DSL的较早版本编写的脚本在用较晚版本运行时可能会失败。
Scrum弛缓性
我听说最近好几个项目都一团糟。结果是这样的:
- 他们想要使用敏捷过程,并选择Scrum
- 他们采用Scrum实践,甚至可能采用Scrum原则
- 过了一段时间,由于代码库是一团糟,进度缓慢
规则引擎
我应该使用规则引擎吗?