qcon_从QCon伦敦2010中学到的重点知识和教训

qcon

在本文中,我们介绍了许多博客上有关 QCon的博客的观点和观点,以便您可以体会QCon London的印象和经历。 从最初的教程到最后的会议,人们在他们的博客中讨论了QCon的许多方面。 您还可以在Flickr上看到众多与会者拍摄的QCon照片。

这次QCon是InfoQ的第九届会议,也是伦敦的第四届年会。 该活动是与在丹麦举办JAOO会议的公司Trifork合作制作的。 这个QCon是有史以来最大的一次,共有700多名注册参加者,其中56%来自英国,超过30%来自欧洲大陆,其余来自世界各地。 在QCon伦敦会议上有100多位演讲者 ,包括Dan Ingalls , Ralph Johnson , Robert C. Martin(“叔叔Bob”) , Martin Fowler和Rod Johnson 。 QCon将继续在每年的3月在英国运行, QCon San Francisco将在2010年11月再次运行, QCon Beijing和QCon Tokyo将在4月底运行。 我们的第一个QConSãoPaulo也计划在今年9月举行。

目录

讲解

  • DCI /精益架构,作者:Jim O. Coplien
  • UService Dahan的NServiceBus开发企业
  • Francesco Cesarini的实用Erlang编程
  • 面向资源的体系结构:信息优先作者:Brian Sletten
  • REST实践-Ian Robinson和Jim Webber的基于Web的分布式系统教程
  • 开发人员的软件体系结构,Simon Brown和Kevin Seal

主题演讲

  • Robert C. Martin的错误代码,Craft.io,工程和认证
  • Dan Ingalls玩电脑四十年
  • Ralph Johnson的老化软件的生活和工作

2015年软件开发

  • DCI体系结构:Jim O. Coplien的代码级精益和敏捷

敏捷进化

  • Eric Evans将设计折叠到敏捷过程中
  • 看板-越界,超越极限或重新发现敏捷愿景? 杰斯珀·博格(Jesper Boeg)

NET上的AlphaGeeks

  • 美丽的团队和领导者Roy Osherove
  • 扩展应用程序:复杂性,性能,可维护性Oren Eini
  • .NET的发展水平-Josh Graham和Amanda Laucher学习12个月的知识

您一直想知道的架构

  • 建筑Skype。 Skyres架构师AndresKütt五年的学习
  • Facebook:Aditya Agarwal的建筑与设计

浏览器平台

  • Web应用程序中的数据表示:Simon Oxley的创业之旅
  • Bespin简介-Joe Walker的Mozilla基于Web的代码编辑器
  • 怎么办? 戴伦·席曼(Dylan Schiemann)
  • Torrey Rice的Web App设计的现状与未来

Java的酷东西

  • Stefan Norberg的事件驱动架构
  • Rod Roo和Spring 3.0带来了极高的Java生产率
  • 用Java中的Actor建模并发-Kresten Krab Thorup从Erjang中学到的教训

开发与运营:一个团队

  • 开发人员来自火星,SET也来自Simon Stewart
  • 从开发到生产:通过构建管道和团队合作实现更好的生活Sam Newman
  • Siloes适合农民:使用Julian Simpson的所有团队进行生产部署

功能编程

  • 阿曼达·劳彻(Amanda Laucher)揭秘单子
  • Don Syme的并行和并发功能方法
  • Aino Vonge Corry编写的函数式编程模式
  • 约翰·休斯的测试之乐

您如何测试?

  • 机器中的齿轮:Roy Osherove测试嵌入在不可渗透的框架中的代码
  • Alois Reitbauer在边缘进行性能测试
  • Nat Pryce的异步系统的测试驱动开发
  • 移动测试挑战:Doron Reuveni为何移动应用需要真实的测试范围以及众包如何提供帮助

不负责任的架构和不寻常的建筑师

  • 乌迪·达汉(Udi Dahan)的命令查询责任分工
  • LMAX-Dave Farley和Martin Thompson如何以小于1ms的延迟每秒完成超过10万个竞争的复杂业务交易
  • 简单-Dan North的非凡建筑师之路
  • Ian Robinson的违反直觉的网络

IT-不仅仅是工具和技术

  • 我们打算做什么? 马丁·福勒(Martin Fowler)

非关系数据库和面向Web的数据

  • Enda Farrell的沙发上的阿姨
  • MongoDB:SourceForge上的huMONGOus数据,Mark Ramm撰写
  • 不仅是SQL:EmilEifrém的替代数据持久性和Neo4J
  • Gilt Groupe的Voldemort项目:Geir Magnusson认为失败不是一种选择
  • 社交网络和数据的丰富性:Lars George&Fabrizio Schmidt用Nosql完成分布式Web服务

务实云计算

  • 云的开发模型:范式转变还是旧的旧的? 作者ÜmitYalcinalp
  • 正常情况,一切都必须改变西蒙·沃德利
  • Cloud Silver Bullet:哪种口径适合我? 克里斯·里德(Chris Read)

SOA 2010

  • REST是否需要中间件? 比尔·伯克(Bill Burke)
  • Cesare Pautasso的RESTful业务流程管理

软件Craft.io

  • 超越学徒和学徒:Jason Gorman的可扩展的,由同行主导的模型,用于在大型多样的开发团队中建立良好的习惯
  • 危险:David Harvey的软件工匠在工作
  • 锐化工具Dan Dan North
  • 软件技巧,超越炒作

并发挑战

  • Justin Sheehy大规模拥抱并发
  • Erlang中的消息传递并发。 Joe Armstrong的可扩展容错系统的体系结构基础

社会事件
关于QCon的观点
外卖
结论

讲解

DCI /精益架构 ,作者: Jim O. Coplien

Twitter在本次会议上的反馈包括:

mouneer :重新发现OO编程AKA DCI数据上下文交互#qcon教程Jim Coplien

alblue :“建筑是结构的本质:形式。结构混淆了形式。” - #qcon的 Jim Coplien

UService Dahan的 NServiceBus开发企业

Twitter在本次会议上的反馈包括:

sumek :NServiceBus预先制定了许多明智的配置决策。 好东西!

martinnjensen :在#qcon与@udidahan一起享受一整天的NHibernate会议

marcjohnson :就像@UdiDahan对NServiceBus的描述一样,它是一组非常敏锐的特定工具-正确使用时应该感觉不错

Francesco Cesarini的 实用Erlang编程

Twitter在本次会议上的反馈包括:

alexmarie84 :享受二郎介绍教程, @FrancescoC并期待着进一步挖掘到明天Erlang和OTP!

面向资源的体系结构:信息优先作者: Brian Sletten

Glen Ford也参加了本教程 :

第2天,我参加了Brian Sletten主持的面向资源的体系结构教程。 在开始之前,我想知道选择两个REST教程是否犯了一个错误-但事实证明这是一个不错的选择,它是前一天的补充。

本教程最令人难忘的部分之一是“音乐插曲”,其中Brian出色地解释了衍生作品,以及公共数据如何打开了无限可能。

Twitter在本次会议上的反馈包括:

rferraz :第二天在#qcon开始。 另一次休息讲座,但旋律不同。 好东西了。

der_miggel :今天@bsletten在#QCon上参加http://bit.ly/c9qrqk ( 展开 )-到目前为止非常有趣,很多有趣的概念

REST实践 -Ian Robinson和Jim Webber 的基于Web的分布式系统教程

Glen Ford在第一天参加了本教程 :

该教程基于他们即将出版的Savas Parastatidis的书,该书现在可以精简了 。

该教程涵盖了很多基础,并且介绍得很好。 通过使用Hypermedia,您可以创建非常丰富的服务,本教程对如何以及为什么应该这样做提供了很好的见解。 它很好地概述了REST实际使用的是Leonard Richardson成熟度模型,以及大多数宣称为RESTful的服务实际上不是完全RESTful的(尽管它们确实仍然有价值)。

Twitter在本次会议上的反馈包括:

doxla : @nfma星期一早上您要谈什么? #RESTInPractice今天很好。 期待#qcon的其余部分

alexip : @jimwebber非常感谢您关于Rest的教程。 开辟了许多可能性。 我现在完全拥抱宁静的方式!

开发人员的软件体系结构, Simon Brown和Kevin Seal

Twitter在本次会议上的反馈包括:

tolukemi :开发人员教程的软件工程师拱门@ #qcon非常有见地,提供了很多值得深思的地方。 希望有机会将想法付诸实践。

主题演讲

Pinar Yanardag 发现了激发灵感的主题演讲 :

丹·英加尔斯(Dan Ingalls ,计算机娱乐四十年 ),拉尔夫·约翰逊(Ralph Johnson, 生活和使用老化软件 )和罗伯特·马丁(Robert Martin)又名鲍勃叔叔(Bob叔叔, 不好的代码,Craft.io,工程学和认证 )的主题演讲都鼓舞人心。

Robert C. Martin的 错误代码,Craft.io,工程和认证

乔基姆·霍尔姆(Joakim Holm)谈到演讲者 :

在大礼堂第二排观看鲍勃叔叔的演讲,有点像被火车碾过。 那里有700多个人,而鲍勃可能不需要麦克风。 他当然是令人信服的发言人。

他在谈话中的结论是:

请记住,工匠的一个特定属性是他们从不编写不良代码。 即使在压力下。 如果您想不起来,请从Clean Code Project中订购绿色的腕带。 他们唯一要问的是您要捐款。

蒂姆·安德森(Tim Anderson) 总结了关键点 :

Martin的观点之一就是拥有有效的代码还不够。 他用机器比喻。 你的车还不够用。 当您打开引擎盖时,您希望看到的是良好的工程设计,而不是缠结在一起的管子,金属丝和皮带缠结在一起。

[…]

马丁的演讲原来是实用的。 真的没有什么新鲜的; 但是有很多要考虑的。 以下是他的一些提示:

  • 使函数和方法简短。 多短? 他的原则是使用提取方法重构,直到没有更多要提取的内容为止。 我感觉到他会考虑任何超过20行的怀疑。
  • 具有仅带有少量参数(最好不超过两个)的函数,并且不要使用布尔型参数,因为它们会引起混淆。
  • 同样,一个类应该是一小批代码,只有几个变量,几十个方法。
  • 消除代码中的重复; 使用抽象。
  • 给公共方法起短的名称,但对私有方法使用长的描述性名称。 该代码是文档。
  • 每次触摸都会稍微改善代码。 有时情况恰恰相反。 代码随着修补程序的添加而衰减。 如果您改进它,那么您的项目就会随着时间的推移而改进。
  • 您需要进行全面的测试,否则,您将不敢进行更改以防万一。 测试代码应与生产代码具有相同的质量; 如果测试缓慢且有错误,您将不会使用或信任它们。
  • 简短迭代。 一个月可能太长了。 两周好。 他建议,一个星期可能很理想。 在某些情况下甚至更少。

Pinar Yanardag 总结了这个演讲 :

  • 遵循童子军规则:总是把事情比发现的要好。
  • 方法应少于20行。
  • 没有一个需要布尔值的函数。 显然,它有两件事: 一个为假,另一个为真。
  • 剪切/粘贴是错误复制
  • 提取直到滴下! 继续提取,直到所有功能都只做一件事情
  • 源代码代表设计而非UML工具。

Dan Ingalls玩 电脑四十年

Joakim Holm在Ingalls的主题演讲中 :

Dan向我们展示并执行了他用Fortran编写的第一个程序,以自发地鼓掌。 他描述并说明了他为职业生涯选择的道路,曾与施乐PARC的Alan Kay等照明专家一起工作。 他描述了Smalltalk的发展,以及Squeak (本身编写的Smalltalk实现!),以及今天在Lively Kernel上的工作。 作为标准Web浏览器中的交互式编程环境,这最后一件事情真是太奇妙了。

在丹讲话期间,令我印象深刻的是,他似乎总是去他认为自己会最开心的地方。 在当今通常非常严肃的软件世界中,这是一种非常罕见的态度。 但是,可以认为这种态度实际上是成功的秘诀,这并非没有道理。 如果您喜欢自己的工作,那么您可能会做得很好。

Pinar Yanardag认为Ingalls的主题演讲很有趣:

Dan Ingalls的主题演讲非常有趣。 他展示了自己的早期代码,并在Squeak进行了所有演示,还分享了生动内核的演示。 英格尔斯(Ingalls)的一句名言:

我们不善于吸取过去的教训,因为:

  • 我们没有足够的讲故事的人,
  • 我们这一代人听的不太好。

Twitter在本次会议上的反馈包括:

patkua :从明智的话@daningalls ,“如果事情可以计算,他们应连续计算”桌面早期的演示发布@ #qcon

erik_van_oosten :在#qcon上研究Squeak,灵感来自Dan Ingalls的惊人演讲,完全来自Squeak内部

Ralph Johnson的 老化软件的生活和工作

Twitter在本次会议上的反馈包括:

alblue :“工具很重要;但设计专业更重要”- #qcon的 Ralph Johnson

georgemcintosh :RT @marknijhof :当管理人员开始谈论重构时,这是一个不好的信号,这意味着您做得不好,Ralph Johnson(GOV) #QCon

kiltec :RT @tastapod :Ralph Johnson #QCon主题演讲:将来,大多数人将使用比他们更旧的代码

jlindstorff :RT @jcoplien :上大学时间过长,您将获得类似于GOF书中的模式[解释] -Ralph Johnson #qcon

2015年软件开发

DCI体系结构: Jim O. Coplien 的代码级精益和敏捷

Twitter在本次会议上的反馈包括:

alblue :“ Java是一种玩具脚本语言;您无法使用Java编写面向对象的代码”- #qcon的 Jim Coplien

敏捷进化

凯文·海尔(Kevin Seal)批准了对敏捷的新的更务实的观点 :

敏捷运动在敏捷进化的轨道上也受到了严格的审查。 (最终!)有人对它提出了一个务实的看法,因为它似乎是在一些好意建议的支持下兴起的。 在某种程度上具有讽刺意味的回顾中,我们看到了敏捷是如何导致我们抛弃了自此以后被重新发明的东西,而坚持了仪式而不管其实际价值如何。 “我们患有多动症,逆行性健忘症和强迫症,”基思·布雷思韦特说。 “敏捷教练”的作者雷切尔·戴维斯(Rachel Davies)提到“ w-agile”:每天站立的小型瀑布,在这一点上许多尝试采用敏捷的尝试都陷入了僵局。 但是,令人耳目一新的是,这被视为一个良好的开端,并提醒人们,这不是目标的特定过程,而是不断的改进。

Eric Evans将 设计折叠到敏捷过程中

马特·齐默尔曼(Matt Zimmerman) 在本届会议上作了详尽的笔记 ,包括:

埃里克(Eric)解决了如何在敏捷框架内解决设计问题的问题。 […]

他强调了建模的重要性,“当项目的关键复杂性在于理解和交流领域时”。 建模的“预期”方法是合并前期分析阶段 ,但是Eric认为这是错误的。 因为“模型是提炼出来的知识”,并且团队在项目开始时相对无知,所以以这种方式进行建模可以捕获这种无知并使它持续存在

他说,取而代之的是,我们应该采用“拉”方法 ( 精益意义),并决定在以下情况下进行建模:

  • 与利益相关者的沟通恶化
  • 当解决方案比问题更复杂时
  • 当速度变慢时(因为完成的工作成为负担)

[…]

这是一个非常引人入胜的演讲,其概念显然适用于敏捷开发的特定问题领域。

Joakim Holm注意到了这个话题 :

埃里克(Eric)谈论了他是如何故意将过程东西排除在DDD书之外 。 但是,这意味着有些人实际上以为他主张BDUF设计风格。 没有东西会离事实很远。 埃里克(Eric)解释了他如何思考寻找驾驶用户故事,探索不同的设计以及使用简单的故事测试评估设计的过程。

看板-越界,超越极限或重新发现敏捷愿景? 杰斯珀·博格(Jesper Boeg)

马特·齐默曼(Matt Zimmerman)在这一点上指出 :

Jesper与看板分享了经验和教训,以及它解决的其他方法中存在的一些问题。 他的资料很平衡且很有见地,我想回去看完整的视频。

这里再次明确而务实地致力于将工具和流程与团队,业务和情况的特定需求相匹配。

NET上的AlphaGeeks

美丽的团队和领导者Roy Osherove

Adrian Hills选择了.NET跟踪,此会话是他认为最好的会话之一 :

整个会议中最有趣的话题是去Roy Osherove( twitter )。 精彩的单曲吉他演奏结束了关于“美丽的团队和领导者”的激烈讨论。 辉煌。

扩展应用程序:复杂性,性能,可维护性 Oren Eini

Adrian Hills也参加了此.NET会议:

Ayende Rahien(Oren Eini)[…]讨论了如何通过“分而治之”的方法扩展应用程序。 我特别喜欢他的会议,是他通过一个真实的例子进行了工作,并提供了一些有关性能改进的实时指标。 这次演讲是提及CAP定理的众多例子之一 ,其中分布式只能满足以下3个中的2个,但不能满足所有3个:

  • 一致性
  • 可用性
  • 分区容限

雨果·罗杰·布朗 ( Hugo Rodger-Brown )对此讲话发表了评论:

来自Ayende的精彩演讲–包括一些代码演示,该演示总是在人群中流行。 要点与其他所有人的观点相同-仅在将系统分为功能组件并分别进行攻击时才可以进行横向扩展-例如,用户登录与用户注册有不同的要求,因此请不要将其全部粘贴在RDBMS的单个表中。 使用服务总线进行异步通信,数据总是很脏等,等等。在他的新(json)文档数据库-CouchDB的.net复制品上,做了一些不必要的演示,带有一些Mongo功能(围绕查询)。 看起来不错,很值得一看,尽管它显然处于alpha阶段。

.NET的发展 水平-Josh Graham和Amanda Laucher 学习12个月的 知识

蒂姆·安德森(Tim Anderson)指出,格雷厄姆(Graham)和劳彻(Laucher)建议学习以下工具,语言和技术 :

  1. F#(再次)
  2. M –建模/ DSL语言
  3. Boo-.NET的静态Python
  4. NUnit –单元测试。 很少考虑Microsoft在Team System中的测试框架,这被认为是浪费和次等的努力。
  5. RhinoMocks –模拟库
  6. Moq –另一个模拟库
  7. NHibernate –对象关系映射
  8. 温莎 –依赖注入,是Castle项目的一部分。 有争议 一些与会者认为这太复杂了。
  9. NVelocity – .NET模板引擎
  10. 游击队SOA –见上文
  11. 有人告诉我们,Azure –微软的云平台–非常好,这要归功于David Cutler的参与
  12. MEF –在Visual Studio 2010中找到的Managed Extensibility Framework,在尝试过它的人中得到了高度评​​价。

阿德里安·希尔斯(Adrian Hills)完成了他的“学习内容”清单:

当天结束时,Josh Graham和Amanda Laucher进行了有关.NET中“需要学习的12个月”的演讲。 我发现我的待办事项列表Swift增长。 F#,M,Guerilla SOA,MEF ....另一个非常好的话题,有些开玩笑。

您一直想知道的架构

道格·温特(Doug Winter)在整个赛道上 :

在2010年,这意味着规模,规模,规模–您如何为庞大的人们服务。 总之,没有人真正有线索。 有来自Facebook,Skype,BBC,Sky等公司的演示文稿,介绍了它们如何扩展,以及有关各种可扩展自己的建筑模式的演示文稿。

每个人都使用针对其特定问题空间的解决方案来做不同的事情,几乎所有解决方案都使用开源技术,但通常在内部进行构建以帮助他们管理规模。 不幸的是,拥有解决规模问题的灵丹妙药真是太好了。

建筑Skype。 Skyres 架构师 AndresKütt 五年的学习

蒂姆·安德森(Tim Anderson) 总结了演讲内容 :

在架构轨道上,安德烈斯·库特(AndresKütt)担任Skype架构师的五年代表。 他的主题是:软件架构师的大部分工作是交流,而不是研究图表和设计代码结构。 这在QCon和敏捷运动中都是一致的主题; 得到正确的沟通,接下来的一切。 我也对技术方面感兴趣。 Skype从SOAP开始,但切换到用于Web服务的REST模型。 库特还向我们介绍了Skype使用的语言:用于网站PHP,用于繁重的工作和对等网络的C或C ++; Windows界面的Delphi; 数据库的PostgreSQL 。

Matt Zimmerman在本次会议上的一些笔记是:

他的[安德烈斯·库特(Andres Kutt)]的第一堂课是, 经验法则可能使我们误入歧途 。 在不同的项目,团队或公司中,使用以前曾为我们使用过的模式总是很诱人,但它们可能不适用于其他情况。 它们可以并且应该被用作讨论的起点,但不能被认为是解决方案。 […]

其次,他强调了关注功能架构的重要性,而不仅仅是技术架构 。 […]

保持简单 :最小化功能并最小化复杂性。 他举了一个例子,说明如何通过删除功能(保证一次准确地传递消息)来大大增强其排队系统的性能和可伸缩性,从而简化了系统。

Pinar Yanardag写下了库特提出的一些观点 :

  • 经验法则不适用 :总是很想使用以前有效的模式,但应将其用作讨论的起点,而不是作为解决方案。
  • 功能架构很重要 。 您忽略了系统功能的组织方式,后果自负。
  • 简单地工作就可以了。 越简单的事物越聪明。
  • 流行语很危险 :它们既是毫无意义的机会的载体,又是破坏人际关系的催化剂,因此是危险的。
  • 体系结构需要适合您的组织 。 没有精美的系统设计之类的东西。 该设计要么适合您组织的需求,要么不适合您的组织。

Facebook: Aditya Agarwal的 建筑与设计

Pinar Yanardag 在本次会议上表示 :

  • 服务理念:为正确的任务选择工具。 他们使用Thrift (轻量级的软件框架)进行跨语言开发(C ++,PHP,Python,Ruby,Erlang,Haskell等)。
  • 他们的工程团队中最重要的事情是: 您能移动多快? […]
  • 永远不要将非静态数据存储在中央数据库中
  • 数据驱动的模式使程序员高兴且操作困难。
  • 数据的逻辑迁移非常困难。 创建大量的逻辑数据库,在不同数量的物理节点上进行负载平衡。 […]

他们与记忆快取有着爱恨交织的关系; 它很容易损坏,并且数据模型有限。 但这是至关重要的, 它确实可以做到,确实很好

Hugo Rodger-Brown赞了这次演讲 :

精彩的演讲,令人jaw目结舌的统计数据(每天在全球Facebook上花费80亿分钟)和对Facebook运作方式的深入了解。 关键点似乎是雇用优秀的工程师并赋予他们权力。 关键技术(HipHop,Haystack等)是由非常小的团队(<5个)开发的,并且没有专门的产品所有者-自上而下的战略目标和自下而上的创新的混合体。 想在那里工作。

浏览器平台

Web应用程序中的数据表示: Simon Oxley 的创业之旅

Twitter在本次会议上的反馈包括:

DrNBruce : 欣赏@soxley在#QCon上的演讲 , @ awaremonitoring使用浏览器的基本工具交付功能丰富的WebApp

Bespin简介-Joe Walker的 Mozilla基于Web的代码编辑器

雨果·罗杰·布朗出席了本次会议并指出 :

非常低调的演示,它克服了当前命令行环境的某些不足,并演示了它可以做的更好(并且将与Bespin一起使用)。 另一个非常优雅的例子,即很小的变化会产生多大的差异,以及关注细节的价值。 演示+1。

怎么办? 戴伦·席曼 ( Dylan Schiemann)

马特·齐默曼(Matt Zimmerman) 在本次会议上做了详细的笔记 ,包括:

Dylan根据过去15年的趋势,为推断Web开发的未来做了出色的工作。 他首先回顾了网络技术的起源,重点是表示和布局方面的问题,然后是JavaScript,CSS和DHTML。 在这一点上, 丰富的应用程序具有明显的潜力 […]

随着越来越多的浏览器出现,并且CSS,DOM,XML,DHTML等实现得更好,事情变得更好了。 但是,我们仍然支持IE中的古老实现。 […]

接下来,围绕Ajax和相关工具包,更快的javascript实现,基础架构即服务以及富Web应用程序(例如GMail,Google Maps,Facebook等)的创新激增。

Dylan认为Web应用程序是用户和开发人员真正想要的 ,而台式机和移动应用程序将被淘汰。 […]

Dylan为开发人员总结了关键平台注意事项:

  • 选择与控制
  • 品味(例如语言偏好,什么使他们最有生产力)
  • 性能和可扩展性
  • 安全

并且推测提供这些内容的最佳方法是通过开放式Web技术 ,例如HTML 5,该技术现在提供了包括音频,视频,矢量图形和动画的富媒体功能。 他以HTML 5应用程序的一些华丽演示作为结尾,展示了可以完成的工作。

Torrey Rice 的Web App设计的现状与未来

雨果·罗杰·布朗( Hugo Rodger-Brown )对此讲话发表了评论 :

在用户界面的过去,现在和将来都非常有趣。 没有突破性的内容,但是没有角度的精彩演讲。 移动(以各种形式)是赢家,以及3-D,GPS和AR等所有东西将带来的好处。 少数派报告,我们来了。

Twitter在本次会议上的反馈包括:

corinthino :今天去过#qcon 。 亮点= @sitepen的 Torrey Rice, 主题为“ Web应用程序设计的现在和未来”。 出色的用户数据所有权

Java的酷东西

Stefan Norberg的 事件驱动架构

Joakim Holm注意到了这个话题 :

瑞典对会议的另一贡献是瑞典游戏公司Unibet的企业架构师Stefan Norberg。 他很好地解释了如何使用域EDA而不是简单地在ESB中复制意大利面条体系结构。 域EDA是仅使用异步域事件和事件总线松散耦合子系统或SOA服务的体系结构。 服务在总线上产生和消费域事件,事件规范成为生产者和消费者之间的契约。 这样做的一个非常积极的结果就是来自松耦合的自由。 例如,要添加新服务,不需要对现有结构进行任何更改。 不利的一面是,所有事件都必须视为公共API。 例如,移出田地很困难,几乎是不可能的。

Twitter在本次会议上的反馈包括:

jockeholm : #qcon S Norberg:在同步系统中,_peak_吞吐量由最弱的链接确定。 在异步中,它是_sustained_吞吐量

Rod Roo和Spring 3.0带来了极高的Java生产率

Joakim Holm在Roo上发表了评论 :

Spring Roo是SpringSource的Rails启发式代码生成工具。 主要是,它是一种从域模型生成应用程序,测试及其“管道”的方法。 生成的代码在各个方面都很繁琐,但是全都是Java,您可以编辑自己不想让Roo管理的内容,而将其保留下来。 这是一个双向生成模型,Roo会将其内部模型与您编写的内容保持同步。 使用Roo Shell在上下文相关的强大辅助下完成从模型生成的操作。 我确实找到了相当长的命令。 由于SpringSource现在也可以控制Grails,因此他们现在拥有一些受Rails启发的工具,可用于Java Web开发。

用Java中的Actor建模并发 -Kresten Krab Thorup 从Erjang中学到的教训

大卫·阿诺( David Arno )在本次会议上写道 :

Kresten使用术语“面向演员”(AO?)编程来描述未来的前景。 在90年代,Java通过为错误处理和内存管理提供内置解决方案,极大地改变了C程序员的生活。 这使得Java代码比等效的C代码简单得多。 现在,在20世纪10年代,Erlang的参与者模型可以通过提供一种实现并发解决方案的简单方法来类似地改变开发实践。 但是,Erlang不是唯一向演员提供的语言,例如Scala也是。 Kresten指出Scala actor模型中存在缺陷,例如,它使您违反了actor状态封装。

这次演讲很好地结束了,呼吁社区发展“ AO”的想法,并开发以AO为中心的模式,以帮助推动这一想法。 总而言之,一个很好的谈话。

Twitter在本次会议上的反馈包括:

jtdavies : #QCon :JVM(Erjang)上的Erlang很酷,不确定我还可以想到一种用法,但是它仍然很酷,我想知道#RabbitMQ是否可以使用它?

szegedi :在#qcon上Kresten ( @drkrab )在Erjang上的演讲确实很棒-我是一名JVM语言迷,对此我有偏见,但是到目前为止,这是一次真正的怪胎。

FrancescoC :查看@drkrab在JVM上运行Erlang程序。 “如果你认为你需要线程和锁,再想想” #qcon

开发与运营:一个团队

凯文·海尔(Kevin Seal)在整个赛道上指出以下几点:

在Craft.io和Craft.io方面,开发和运营也得到了补充。 这将开发,部署和生产支持学科视为一种伙伴关系,理想情况下,它们是同一过程的一部分。 […]

DevOps运动试图使开发和运营团队更轻松地紧密合作。 对于在这个行业工作过的人来说,这将是一个熟悉的问题–开发和运营对成功有不同的定义,对客户的期望也不同。 当这些冲突时,每个人都会受伤。

开发人员来自火星,SET也来自Simon Stewart

Kevin Seal 在此特定会议上添加 :

来自webdriver的Simon Stewart做了一个很棒的演讲,介绍了他在Google测试中担任系统工程师的角色,在那里他们大约有一个SET到7或8个开发人员来帮助生产软件,提供适当的测试计划并总体上提高生产率通过将操作和自动测试原理应用于开发来提高代码质量。

从开发到生产:通过构建管道和团队合作实现更好的生活 Sam Newman

雨果·罗杰·布朗在演讲中表示 :

好的介绍,很好的介绍,但是没有深刻的见识; 基本上对行动团队很好 不过,有一点很不错-尝试构建一次并将相同的二进制文件部署到每个环境中-不要运行单独的环境构建,而仅使用外部配置来区分部署。

Siloes适合农民:使用 Julian Simpson的 所有团队进行生产部署

马特·齐默曼(Matt Zimmerman) 在本次会议上做了详细的笔记 ,包括:

他开始与人的问题,提醒我们温伯格第二定律,这就是“不管他们告诉你,它始终是人的问题”的。

他的人民提示:

  • 为了跟上最近的趋势,他批评电子邮件是一种有严重缺陷的通信媒介,最好避免使用。
  • 尊重大家
  • 在墙的另一侧与人共进午餐
  • 与其他小组讨论您的问题(不仅要寻求特定的解决方案)
  • 邀请大家站起来和回顾
  • 将系统管理员和开发人员共同安置(托马斯·艾伦)

接下来,一些过程建议:

  • 通常避免代码所有权(或者,提倡联合所有权/集体所有权)
  • 将开发人员与系统管理员配对
  • 它在代码投入生产时就完成了(我要改写为: 直到代码投入生产时才完成

功能编程

道格·温特(Doug Winter)也对整个函数式编程轨道进行了评论 :

学者们一致认为功能语言是前进的方向,许多人拥护Erlang。 我本人是Erlang的忠实拥护者,在Isotoma,我们这里有一些Erlang编码员。

在Haskell中,也有一些关于通用的其他功能性方法的有趣文章。 函数式语言的最大优点之一是它们可以通过延迟评估来推迟执行,与传统的数据同步方法相比,它具有显着的性能优势。

阿曼达·劳彻 ( Amanda Laucher) 揭秘单子

大卫·阿诺( David Arno )在他对单子的理解中写道 :

本质上,monad是抽象类型(冒犯FP异端的风险,请考虑“对象”),它封装了两个值:一组数据和一个函数。 然后,monad可以将该函数应用于数据集并在流程中生成新的数据集。 关于monad的行为有各种各样的规则,但本质上就是这些monad的全部。

Monad的功能在Haskell之类的语言中发挥作用。 由于monad提供的外观可以从主要语言中推断出功能,因此它可以执行所有可能破坏语言纯净度的事情。 因此,IO,错误和异常处理等都由Nomad者处理。

不过,我在此要大加警告:我可能只是误解了有关单子的所有内容

Twitter在本次会议上的反馈包括:

alblue :“如果在State monad中使用Thread monad,可能会惹上很多麻烦”-Monads在#qcon上神秘

Don Syme的 并行和并发功能方法

蒂姆·安德森(Tim Anderson)确信, 每个.NET开发人员都应注意F# :

微软研究院首席研究员,F#的共同发明者Don Syme生动地介绍了并行和并发的功能方法。 他逐个屏幕显示等效的F#和C#代码,说明F#如何更简洁和更具表现力,以及更适合于并发开发。 […]

我问锡姆,什么样的问题不太适合F#。 在他的答复中,他描述了Visual Studio 2010的运行状态,您可以在其中轻松创建F#库,但是没有设计人员支持用户界面代码,例如Windows Forms或Windows Presentation Foundation。 但是,那仅仅是一个工具问题。

Syme的观点是,函数式编程(尤其是F#)非常适合当今的编程挑战,包括并发和异步代码。

如果没有别的,他说服了我,每个.NET程序员至少应该研究F#并学习它可以做什么。

Aino Vonge Corry 编写的函数式编程模式

大卫·阿诺( David Arno )在这次谈话中写道 :

她谈到了以下事实: 23种GoF模式是Java语言的产物,其他语言如何消除了用户对这些模式的实现的需要,因为这些语言直接支持它们。 例如,使用支持功能作为一等对象的语言的任何开发人员都不需要Observer模式的复杂性。 C#开发人员无需实现装饰器模式,因为扩展方法提供了一种实现同一功能的内置方法。 但是,这并不意味着这些模式没有超出Java的范围。 知道扩展方法是C#修饰器模式的实现,有助于开发人员之间的通信。

接下来,她研究了一些特定于FP的模式,由于我对它们的理解还不够深入,因此我将不介绍它们。 我可能会再回到他们那里。

约翰·休斯 的测试之乐

Joakim Holm 谈到了基于属性的测试 :

他介绍了一种使用称为QuickCheck的工具测试系统的方法,该方法称为基于属性的测试(PBT)。 (Erlang有一个商业版本,称为Quviq 。)

据我了解,PBT意味着您无需编写测试用例,而是可以描述系统的属性。 之后,像QuickCheck这样的工具可以接管它并生成大量的随机测试。 如果发现错误,它将尝试将失败的测试用例减少到也会产生错误的最小用例。 这用于改善对开发人员的反馈。

John还演示了QuickSpec,它是一种用于从示例中推导和生成属性的工具。

您如何测试?

机器中的齿轮: Roy Osherove 测试嵌入在不可渗透的框架中的代码

大卫·阿诺( David Arno )在本次会议上写道 :

标题有点误导,因为它不是关于不可渗透的系统,而是不能被嘲笑的核心系统。 Roy以Silverlight框架的示例为例,并证明了如果尝试足够的努力,它是可渗透的。

针对此类框架进行测试的一种方法是在框架周围开发一个“包装器”,从而在您的代码和该框架之间增加外观。 这样一来,测试时就可以用模拟代替框架。 尽管有两个警告:

  • 这可能是一项艰巨的任务,需要花费很长时间来编写。
  • 如果框架是核心系统的一部分,则无法替换。

Alois Reitbauer 在边缘进行性能测试

Twitter在本次会议上的反馈包括:

patkua :关于Alois Reitbauer的性能测试的精彩演讲。 完成#qcon的好方法

apcj :Alois Reitbauer关于编写性能测试的动机的重要观点

Nat Pryce 的异步系统的测试驱动开发

Joakim Holm撰写了有关异步测试的文章 :

集成测试异步系统的问题是您的测试实际上变得缓慢而脆弱。 在异步测试中,控制权在返回结果之前返回测试。 我们应该如何找到结果? 我们应该等多久? 您可能会遇到的一些问题是闪烁的测试,误报,缓慢的测试和混乱的测试。 Nat的聪明解决方案是使用他所谓的探针来查询测试与被测系统之间的公共状态。 探针将查找正确的状态(无论是哪种状态)。 如果不满足成功条件,我们将再次轮询。 最后,超时失败。

我认为Nate展示的例子很棒。 它确实证明了您可以测试几乎所有类型的系统。 您只需要稍微考虑一下即可。 但是,请记住,这种(集成)测试存在问题。 首先,它们仍然很慢。 我认为探测的想法是正确的,但是测试仍将运行十分之几秒,对于单元测试来说太长了。 其次,在所有相关情况下,使测试正常工作所需要做的工作量很大。 第三,保持测试运行是一项艰巨的任务。 它们必须非常孤立,除非它们变脆。 我认为这类技术集成测试很有用,但我不会过度使用它们。 试驾工作的大部分仍应由单元测试承担。

移动测试挑战: Doron Reuveni 为何移动应用需要真实的测试范围以及众包如何提供帮助

马特·齐默尔曼(Matt Zimmerman) 对Reuveni的演讲表示 :

Doron解释了手机应用程序独特的测试要求如何很好地适合于众包方法。 作为uTest的创始人,他解释了他们通过各种移动设备将客户(应用程序供应商)与全球测试人员社区联系起来的方法。 客户评估测试人员的工作质量 ,并使用此数据对他们进行评级,并选择测试人员以在类似领域进行未来的测试工作。 测试人员根据测试案例的覆盖范围(每个起价约20美元),错误报告(每个起价约5美元)等为自己的工作赚钱 。 他们表现最好的人每月赚几千。

不负责任的架构和不寻常的建筑师

雨果·罗杰·布朗(Hugo Rodger-Brown) 谈到了这首歌的简介 :

关于REST的使用以及Internet作为应用程序平台的作用的精彩演讲。 出于我的喜好,我太过理智了-一些非常简单的概念似乎变得非常复杂-但我喜欢这个信息。 我完全同意,每个人都应该了解HTTP的核心基础知识-请求/响应模式,HTTP动词,状态代码,标头值-规范在那里,请使用它。

乌迪·达汉 ( Udi Dahan)的 命令查询责任 分工

道格·温特(Doug Winter) 感谢这次演讲 :

这非常好,并且很高兴发现我们已经从第一原理(我现在还不能谈论)中衍生出来的架构具有实际名称和所有内容! 特别是,他专注于划分用户意图,而不是投入用于构建UI的常规GUI工具包–他将数据网格分解成碎片,并倡导使用异​​步通知。 通知流作为呼叫中心自动化系统的一部分的想法,而不是反复按F5进行重新加载的想法,特别好说。

LMAX- Dave Farley和Martin Thompson 如何以小于1ms的延迟每秒完成超过10万个竞争的复杂业务交易

Hugo Rodger-Brown赞了这个环节:

LMAX团队的精彩演讲,介绍了如何在保证1ms的延迟时达到100k tx / sec。 事实证明,这是将一些非常聪明的人聚集在一起,让他们解决一些简单的问题。 听到游戏中最顶尖的人如何做的感觉真是令人印象深刻。 比华夫饼所带来的华夫饼令人印象深刻(他在写博客时说)。 鼓舞人心。

格伦·福特 :

好吧,我唯一能说的是-这伤害了我的大脑。 他们的解决方案是计算机工程学的优雅,在链条的每个环节都达到了最佳效果-确实迫使我思考如何解决问题,并让我想起了PC早期的每个性能都在系统中发挥着作用。

简单 -Dan North 的非凡建筑师之路

蒂姆·安德森在博客上这样介绍等等提的是:

诺斯讨论了横向思考的技术,通过分块来寻找解决方案,这些思想使我们在思维上陷入困境,这意味着将细节合并为更大的构想,最后得到“反正这是什么?”; 然后分解为逆过程,将问题分解为足够小的块以至于无法理解。 另一个想法是向同事阐明问题,该同事锻炼大脑的不同部位并经常刺激解决方案,这是配对编程有效的原因之一。

他说,一个常见的错误是继续使用相同的旧产品,系统或体系结构,因为我们总是这样做,或者因为组织已经对其进行了大量投资,这意味着没有考虑更好的替代方案。 他还谈到了简单的工具:例如白板而不是CASE工具。

Glen Ford 在这次谈话中指出 :

丹是一位出色的演讲者,寓教于乐。 演讲以一个滑稽的圣经风格的故事开始,我最喜欢的台词之一是:“而Maven带来了Apache Commons的瘟疫,互联网上所有的图书馆泛滥成灾。

演讲的主题是我们如何使事情复杂化,随着时间的推移,我们逐渐引入了越来越多的复杂性。 Dan介绍了一些技巧来尝试解决这些趋势。

Ian Robinson 的违反直觉的网络

Glen Ford在这次谈话中表示 :

作为QCon最好的演讲之一,Ian深入研究了以操作和资源为中心的体系结构之间的差异-与星期一的教程有些重叠,但是在许多方面都是互补的。

他谈到了如何将域映射到资源,以及如何将HTTP适当地用作应用程序传输协议,而不仅仅是将其视为传输协议。 演讲的最佳口号之一是“意图应该写在电线上”。 可以简单地通过链接关系,媒体类型,HTTP习惯用语和入口点URI的组合来表达合同的想法。

IT-不仅仅是工具和技术

我们打算做什么? 马丁·福勒(Martin Fowler)

Joakim Holm喜欢这个演讲 :

马丁的演讲是没有幻灯片的,大部分似乎是发自内心的。 基本上,这是职业道德在我们的职业中发挥作用的一种情况。 他的主要信息是,许多软件开发人员似乎将自己视为“雇佣的枪支”,只要您给他们一个规格,雇佣兵就会做任何事情。 诸如“将出于什么目的使用该软件?”之类的问题。 和“我是否要继续支持此雇主/客户?” 似乎从未进入他们的头脑。 好吧,也许是时候他们做了? 想一想你自己的生活。 究竟什么是你放弃自己的才华? […]

我喜欢这个演讲,人群也是如此。 马丁得到了非常热烈的掌声。 我来自Adaptiv自己,这是一家致力于履行企业社会责任的公司,我很高兴在极客会议上看到这些话题。

蒂姆·安德森(Tim Anderson)在福勒(Fowler)关于编程伦理的演讲中发表了一些评论 ,包括:

主题本身有很多方面,也许很尴尬。 如果您的客户或雇主要求您编码错误的内容,您应该走开吗–可能是实施不良做法,还是创建算法来欺骗客户的客户? 如何对具有可疑业务实践的供应商拥有的专有平台进行编码? Fowler提到,大约50%的ThoughtWorks解决方案都建立在Microsoft .NET上。 比尔·盖茨为抗击疟疾所做的努力使他理解了这种关系。 […]

最后,他谈到了软件开发中的男性/女性不平衡,拒绝了认为这是由于能力或倾向的自然差异而导致的。 他说,相反,我们不能假装在失衡持续的时候拥有最优秀的人才。 我还要补充一点,由于沟通是敏捷方法论的主要主题,而且女性似乎具有男性所缺乏的沟通技巧,因此解决不平衡现象可以通过其他方式改善开发过程。

非关系数据库和面向Web的数据

Enda Farrell 的沙发上的阿姨

雨果·罗杰·布朗(Hugo Rodger-Brown)指出 :

BBC上有关CouchDB的一些有趣信息,主要是在ops端使用的(重启时间太短(<1s),它们可以在实时生产服务器上回收进程,而不会触发警报)。 总之,它可以大规模运行,并且易于管理-试试吧。 (它为用户的首页偏好提供了强大的支持)。

MongoDB:SourceForge上的huMONGOus数据, Mark Ramm 撰写

Twitter在本次会议上的反馈包括:

kirkwy :在MongoDB #qcon演讲中:“弄清楚您的应用程序需要什么;不要痴迷于您永远不需要/不需要的规模”

kirkwy :MongoDB讨论:几乎与Tokyo Cabinet一样快,比CouchDB快,并且内置简单的查询语言

不仅是SQL:EmilEifrém的替代数据持久性和 Neo4J

HenrikEngström在此会议上写了许多笔记 ,包括:

术语NOSQL的含义是:

  • 不是“从不SQL”

  • 不是“ No To SQL”

  • 是“不仅SQL”

NOSQL的4个新兴类别

  • 键值存储(基于Amazon的Dynamo Paper)。 示例程序:Dynomyte,Voldemort

  • 大表克隆(基于Google的大表论文)。 示例程序:HBase,Hypertable,Cassandra(例如,Twitter使用的)

  • 文档数据库(键值对的集合,受Lotus Notes启发!)。 示例程序:CouchDB,MongoDB

  • 图形数据库(节点,关系,键值对)。 示例程序:Sones,Neo4J,AllegroGraph

Gilt Groupe的Voldemort项目: Geir Magnusson认为 失败不是一种选择

蒂姆·安德森(Tim Anderson)出席了此次演讲,并指出 :

来自Gilt Groupe的 Geir Magnusson谈到了运行一个流量高峰的网站所面临的挑战,而且每个用户都需要动态数据和事务支持,因此简单的缓存不起作用。 他们无法获取其关系数据库存储以进行扩展以每秒处理数千个事务。 他们使用内存中的非关系数据库解决了该问题。

雨果·罗杰·布朗(Hugo Rodger-Brown)总结了他在本届会议上的印象 :

很喜欢这一点-从电子商务的角度对使用NoSQL有一些深刻的见解(如果您有兴趣,可用于库存/购物车。)

社交网络和数据的丰富性: Lars George和Fabrizio Schmidt 用Nosql完成分布式Web服务

马特·齐默尔曼(Matt Zimmerman) 在这次演讲中也有很多笔记 ,其中一些是:

Lars和Fabrizio描述了一般的“社交网络问题”,以及他们如何解决该问题。 这个问题空间涉及大量事件的通知的处理,汇总和分发,这在诸如Facebook和Twitter之类的社交网站中通常很明显,这些社交网站将人们彼此连接以共享更新。 显然,简单的功能(例如显示一个人的“朋友”的最新更新)Swift变得复杂。 […]

[重新架构其系统的需求]导致他们建立了基于以下内容的架构

  • Nginx +看门人
  • 嵌入式Jetty + RESTeasy
  • NoSQL存储后端(不少于三个:Redis,Voldemort和Hazelcast)

[…]

他们的经验教训清单:

  • 尽早开始对应用进行基准测试和性能分析
  • 快速,轻松的部署可保持较高的动力
  • 仔细配置Voldemort(尤其是在大型堆计算机上)
  • 阅读您使用的NoSQL系统的邮件列表
  • 文档中没有解决方案? –阅读资料
  • 在某个时候停止讨论,然后去做

务实云计算

云的开发模型:范式转变还是旧的旧的? 作者ÜmitYalcinalp

马特·齐默曼(Matt Zimmerman)指出 :

Ümit专注于PaaS(平台即服务)层,以及为为这些平台构建应用程序的开发人员提供的经验。 她是Salesforce.com的布道者,将讨论的框架定为force.com,Google App Engine和Microsoft Azure之间的比较。

正常情况,一切都必须改变 西蒙·沃德利

蒂姆·安德森对此讲话发表了评论 :

沃德利最引人注目的要点(也许重复了太多次)是,我们对是否采用云计算没有选择,因为如果我们拒绝它,我们将处于不利地位。 他说,现在的问题更多是管理问题,而不是技术问题。

乔基姆·霍尔姆(Joakim Holm)发表了这篇演讲 :

在云解决方案方面, Canonical (Ubuntu声望)的西蒙·沃德利(Simon Wardley)就不祥的“云”做了很好的演讲。 他解释了商品化的过程,它是由供应商竞争和客户竞争共同驱动的(比竞争对手更便宜,更好的交易)。 从冰箱到电力再到计算资源,许多产品和服务都受此过程约束。 个人说明:这并不意味着所有事物都将逐渐商品化。 例如,创造性的,人力密集型的服务就不是。 […]

西蒙说,围绕云计算的最大神话是:公司实际上相信他们有选择。

Cloud Silver Bullet:哪种口径适合我? 克里斯·里德(Chris Read)

Matt Zimmerman 对本次会议进行了简要总结 :

克里斯针对云技术提出了一些熟悉的警告:它们无法解决所有问题,必须投入精力以获取收益,并且没有一个工具或提供商可以满足所有需求。 然后,他根据适用于长或短处理周期以及高或低“数据敏感性”的各种工具和服务进行分类。

SOA 2010

REST是否需要中间件? 比尔·伯克 ( Bill Burke)

雨果·罗杰·布朗在这次谈话中写道 :

对于整个会议来说,这是一个很好的总结–如何使用现有的,简单的,易于理解的协议(HTTP)来满足一些相当复杂的要求– SOA,可靠的消息传递,交易等。真正优雅的解决方案(REST- *),绝对值得一看。 结束的好方法。

Cesare Pautasso的 RESTful业务流程管理

雨果·罗杰·布朗(Hugo Rodger-Brown)也参加了这次演讲,并评论说 :

枯燥的学术演讲很好地证明了,从文化的角度来看,诸如“ REST”和“ Mashup”之类的术语不会与诸如“ BPM”,“ SOA”等之类的术语混合使用,即使没有别的选择。 是的,您可以使用REST服务来构建SOA,您就不会称其为SOA,也不会使用可视化工具来为您做这件事。 企业和社区都不高兴。

我非常喜欢做的一件事是使用HTML“嵌入式资源模式”来构建复合服务。 将另一个服务的URI嵌入服务响应中,并将负担转移给客户端-就像HTML对网页所做的一样,浏览器负责从所有嵌入式URI构建复合视图。

软件Craft.io

超越学徒和学徒: Jason Gorman的 可扩展的,由同行主导的模型,用于在大型多样的开发团队中建立良好的习惯

马特·齐默曼(Matt Zimmerman) 对这次演讲进行了详细的描述 ,包括:

Jason解释了他用来指导软件开发人员的方法。 […]他首先概述了一些主要因素,这些因素使软件随着时间的推移难以更改:

  • 可读性 :开发人员花费大量时间试图理解他们(或其他人)编写的代码
  • 复杂性复杂性不仅使代码更难以理解,还增加了出错的机会。 更复杂的代码可能以更多方式失败。
  • 复制 :当代码被复制时,更改变得更加困难,因为我们需要跟踪副本并经常更改所有副本
  • 依赖性和“涟漪效应” :高度相互依赖的代码更难更改,因为一个地方的更改需要在其他地方进行相应的更改
  • 回归测试保证 :说实话,我并没有完全了解它如何适合列表。 回归测试应该可以更轻松地更改代码,因为可以更轻松地捕获错误。

然后,他概述了他的方法的基本原理:

  • 专注于学习而非教学 –有动力的学习者会找到自己的方式,因此要专注于使他们能够汲取教训而不是向他们推销(“知道如何做和能够做到之间有很大的区别” )
  • 关注于知识之上的能力 –边做边学,并通过实践来评估进步(“您怎么知道杂耍者何时可以杂耍?”)

道格·温特(Doug Winter) 希望运用本届会议的经验教训 :

最后,我认为这是这次会议上最有趣的演讲,并且是与我当前工作直接相关的一次演讲 ,Jason Gorman做了精彩的演讲,讲述了他与BBC一起运行的一种培训计划,目的是通过同行评审提高软件的Craft.io水平。 我将在Isotoma上进行尝试,并且还将在博客上进行介绍!

危险: David Harvey的 软件工匠在工作

大卫·阿诺( David Arno )在这次谈话中表示 :

我今天最喜欢的话题,但最难总结的话题。 大卫·哈维 ( David Harvey)辩称,应该谨慎对待软件Craft.io运动。 大卫·丹·诺斯(Dan North)提出了关于软件不像骑自行车的评论,他强调我们希望借用其他人类努力中的隐喻来尝试和描述软件。 计算机科学,软件工程,软件体系结构,软件Craft.io等每个词:科学,工程体系结构和Craft.io对软件行业构成不利影响,充其量是不合适的。 因此,虽然软件Craft.io是一个好主意,但也许我们应该将其称为“最佳实践和专业精神”。

锐化工具 Dan Dan North

乔基姆·霍尔姆( Joakim Holm )关于演讲者的内容作了简短总结 :

丹是个演讲者,很高兴听; 很有幽默感 有时我觉得他有那么纯正的英国魅力,实际上他并不需要太多的内容。

Dan在这次演讲中的主要信息是,作为开发人员,从初学者到熟练者,我们永远都不能停止改进,即完善我们的工具。 显然,换工作是一种卑鄙的经历。 Dan所用的“工具”含义很笼统,可以是技术,方法论,个人,团队或领导力领域的任何东西。

大卫·阿诺 ( David Arno) :

首先是Dan North ,他谈到了软件Craft.io。 我从Dan的谈话中删除的关键之处是,软件并不像骑自行车那样令人眼花obvious乱,但却很容易被忽略。 解释一下:一个人可以学会骑自行车,在15年内不去骑自行车,然后重新骑上自行车,继续骑车,好像从未发生过15年的差距。 我从个人经验中知道这一点。

软件不像骑自行车。 休假15年,一经返回,您就无法识别主流软件行业。 所有软件开发人员都需要努力以不断学习新的框架,语言,工具,模式等,以便保持静止。 停止学习新知识,您的开发人员技能将Swift萎缩。

软件工匠,除了炒作的科里海恩斯

Joakim Holm 总结了演讲 :

科里就软件Craft.io运动进行了启发性的演讲。 我真的很喜欢他在那伞下发生的实际举措和活动的败笔; 否则就不会发生的事情,例如,公司之间的Kata视频演员或Craftsman交换。

科里说了另一件有趣的事情:考虑一下在理想情况下您真正想成为的领域,无论是能力还是职业。 这是您当前追求卓越的目标。 然后,考虑如何在压力下开发软件。 那是当您恢复真正掌握的实践时,而不是尝试采用的实践时。 现在,从第一个减去最后一个-这就是您当前吸收的金额!

并发挑战

Justin Sheehy 大规模拥抱并发

阿德里安·希尔斯(Adrian Hills)分享了他对这次演讲的看法 :

贾斯汀·谢伊(Justin Sheehy)[…]谈到“大规模并发”-最终一致性这个词在我的脑海中越来越重要,正如ACID不适用于分布式,规模化系统一样。 相反,您需要与BASE进行权衡:

  • 基本上
  • 可用的
  • 软状态
  • 最终一致
这导致可用性和分区容限(根据CAP定理)。

Erlang中的消息传递并发。 Joe Armstrong的 可扩展容错系统的体系结构基础

Twitter在本次会议上的反馈包括:

div_ :到目前为止最好的#qcon报价? 乔·阿姆斯特朗(Joe Armstrong)引用马克·威廉姆斯(Mark Williams)的话; “他们将在我们的东西上投炸弹,但我认为它会起作用”

社会事件

阿德里安·希尔斯(Adrian Hills)享受了第二天的社交活动 :

第2天以许多用户组事件结束,然后我在Soho的一家酒吧参加了NNUG (挪威.NET用户组)/ alt.net啤酒事件。 对于我来说,这有点超现实,我只能努力成为(非常怪异的英雄)这类专家,一边喝酒一边聊天:Ayende Rahien(Oren Eini),Jon Skeet,Roy Osherove,Udi Dahan仅举几例很少。 看到很多其他.NET开发人员没有参加QCon并与他们聊天很高兴,这真是太好了。 这是我的第一个用户组活动-确实,我确实应该参加过。 将其作为我列表中的另一个TODO。

Twitter在本次会议上的反馈包括:

flurdy :享受由Atlassian的免费啤酒和小吃#qcon 。 这里星期四的人不多,我们的利特尔帮派是这里50%的人! :)

chrismdp :出色的#qcon之后回家 。 非常高兴见到你们所有的好人。 突出? 昨天晚上NNUG酒吧。

关于QCon的观点

Tim Anderson喜欢QCon,因为它不是特定于供应商的 :

我刚从伦敦QCon回来,这是我喜欢敏捷风格的软件开发会议,因为它不是特定于供应商的。 这样的会议充满活力; 它们使您重新检查自己在做什么,并可能将您踢到更好的地方。

Doug Winter 描述了QCon :

上周,我们中的一些人去了QCon伦敦 ,那里像往常一样有一些出色的演讲者和一些前沿的东西。 QCon自称为“专为团队负责人,架构师和项目管理而设计的企业软件开发会议”,但它以比这有趣得多而著称。 特别是,它涵盖了建筑领域的许多前沿工作。

Adrian Hills总结了他在QCon中学到的知识 :

我从会议中获得的一些重点:

  • 保持简单 -复杂不起作用。 如果您发现设计很复杂,那么很可能您在做错什么!
  • 专注于针对单个任务进行优化,而不是一刀切
  • ACID不能很好地进行缩放
  • 最终的一致性-您的数据是否立即永久保留是否重要? 可能不是。 只要系统最终保持一致,通常这就是所需要的,并使您可以更好地扩展
  • 异步消息传递
  • 经验法则不适用-使用现有模式作为讨论的起点-仅仅因为您以前做过某种方式,并不意味着以后您应该自动以相同方式进行操作

雨果·罗杰·布朗(Hugo Rodger-Brown) :

因此,QCon今年结束了,这是一个很棒的会议(IMO)。 我不确定我是否学到了全新的东西-只是对我曾经想/听到/读过的东西的肯定-还是有机会在野外看到其中的一些东西。 演讲者从大型会议的名称到一些前线专家的学术交流,范围非常广泛。 我不认为我参加过一个销售活动,尽管一些命名产品漏网了,但它们都是OSS项目,而不是商业产品。 总而言之,这似乎完全符合“程序员的程序员”承诺。

HenrikEngström :

我还想指出,如果您有机会参加任何QCon会议,那么应该! 他们是最棒的。

罗斯·梅森 :

我上周在Qcon伦敦度过了愉快的时光,这确实是针对企业的更具前瞻性的会议之一。

在QCon期间,Twitter充满了数千条评论,包括:

kiltec :严重的是,我会在#qcon中遇到麻烦,我非常有兴趣同时进行很多对话...:D http://bit.ly/aQSRee

马克·约翰逊(Marcjohnson) :在#qcon的第一天,酒吧里与@ jimwebber , @ iansrobinson , @ martinfowler , @KevlinHenney , @olabini等人进行了良好的交谈

div_ : #qcon结束了,非常有趣。

joshdevins :好的会议#QCon ,伦敦眼和大笨钟的美景! http://twitpic.com/184613

shs96c :非常喜欢#qcon 。 现在,通过书呆子讨论和编码来结束整个晚上。

fedespagno : #qcon很棒的经验,很棒的演讲者,很棒的人。 非常感谢#qcon团队

stiiifff : #qcon 2010已经结束。 很棒的会议。 我计划每年回来! 我现在需要整理成千上万的想法。

stilkov :和往常一样,从#QCon很棒的会议回家。 期待下一年!

zukunftsalick :在伦敦的#qcon度过了很棒的一周, 可悲的是,现在回到马德里...

timrgoodwin :在#qcon 度过愉快的一周。 赶上这么多伟大的人真是太好了。 这么久,感谢品脱。

jacekskrzypiec :我第一次#qcon之后回到家 。 关于如何创建更好的应用程序的大量新想法。

rossmason :后仍有嗡嗡#qcon做得好弗洛伊德和他的团队和三叉。 你们钉了!

mtnygard :本周在#qcon上,我的身体有些疲惫,但精神上却很稳定

m_st : really sad that #qcon is already over

marcjohnson : Had an awesome #QCon and then TW pub, met loads of new people from all over the world, some of which are heroes of mine, some new friends

martinnjensen : back from #qcon , what a trip! my head is still spinning

kiltec : And I definitely will come back to the #qcon next year, even if I had to pay everything on my own.

doxla : Back at home with a nice bottle of 2004 Rioja. Great week at #qcon some of it turned my ideas inside out.

外卖

Kevin Seal considered there are so many things going on that one cannot follow all of them:

QCon felt quite diverse this year, running tracks on Agile, Java, .NET, architecture, craftsmanship, design, web and mobile development, testing, and more. As such, it's quite hard to come away with some sort of over-arching feel for what's driving the industry at the moment. Perhaps that's really the take-away message this year: that there are numerous movements bubbling under, but a growing sense of pragmatism over technology choice and process adoption. […]

There was a huge amount in addition to this at the conference -- certainly a couple of consistent technical themes that are worth tracking down on the QCon site. In particular, Dan Ingalls provided a reminder of the enjoyment we can get from developing software and that we shouldn't lose sight of this in our work.

Adrian Hills had the same impression :

So many inspiring speakers, a packed schedule of talks over 3 days on a number of tracks and a great bunch of people. This was my first QCon, and cannot recommend the experience enough. The only thing I didn't enjoy, was having to decide between which talks to attend. But that's the true sign of a good conference.

Some of Hugo Rodger-Brown's impressions :

The overall theme seemed to be that you can achieve pretty much whatever you want using bits and pieces that are already out there and tailoring them for your particular problem domain. There is no one-size-fits-all solution, and very little reason to pitch up to a big COTS vendor and buy their product suite (beyond internal accountability and CYA.) The real key is getting the right people and empowering them to solve the problem for you. Small teams, with the tools they need, no more, no less, will get you there. The same solution applies whether you're tackling problems of scale of planetary proportions (Facebook), or focussing on extreme performance at the chip level (LMAX). […]

Highlights were LMAX and Facebook – amazing teams breaking new ground – inspiring stuff from both, and a big thank you to the speakers, Aditya Agarwal from Facebook, and Dave Farley & Martin Thompson from LMAX.

On a technology front, the web is ubiquitous, as is mobile, though what that means is still a problem (what makes something “mobile” if my netbook runs the same software as my desktop – is it GPS, AR?) If you're working client-side then it's HTML/CSS/JS and HTTP; if you're working server-side it's offline, async, and message-based. Nothing new, although you might want to think about storing your data in somewhere other than an RDBMS. Just make sure you know why you're doing what you're doing, and can defend your choice if necessary.

Twitter在本次会议上的反馈包括:

natpryce : Take-away thought from #qcon : we need an alt.java movement that champions simplicity over complicated but standard APIs.

结论

QCon London was a great success and we are very proud to have been able to offer such a conference. It will continue to be an annual event in both London and San Francisco, with the next QCon being around the same time next year in each location. We also look forward to continuing to run QCon in other regions which InfoQ serves, such as China and Japan, and introducing it to Brazil for the first time this year. Thanks everyone for coming and we'll see you next year!

翻译自: https://www.infoq.com/articles/qconlondon-2010-summary/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

qcon

你可能感兴趣的:(360,cocoa,微软,编程语言,bluetooth)