写点什么

SCNA 2011 的主题——软件匠艺

  • 2012-01-10
  • 本文字数:2795 字

    阅读完需:约 9 分钟

多位知名专家在北美软件匠艺大会(Software Craftsmanship North America,SCNA) 2011 上做了演讲,其中包括 Corey Haines、Chad Fowlers、Bob 大叔、Michael Feathers 等等。我们对会议上提出的观点以及参与者分享的内容做了简要的总结。

SCNA 是由 8th Light Optiva 组织召开的,InfoQ 是此次会议的媒体赞助商,会议专注于提升软件匠艺在开发者之中的价值。以下是一些参会者博文的摘要,其中分享了 SCNA 上提出的观点,从而让本想参会却未能成行的人从中受益。

Zachary Spencer 为多场演讲绘制了详细的思维导图,其中包含了知名演讲者的主要观点。以下是对其内容的摘录:

Corey Haines 的主题演讲

可能在 24 小时内学会 C++ 吗? 可能会吧。那么能在 24 小时内学会软件开发吗? 不可能。

具备编写代码技能的人会被放到或邀请到创业公司中,期望他们能够做出高质量的程序。

软件开发很难。我已经做了很多年,但还是会犯大量错误。

TDD: 如果仅仅重写应用程序会更快,你还需要做 TDD 吗? TDD 是个好伙伴,它会帮助我编写出优质代码。

我很喜欢编写精良的软件,因为它会给业务带来价值。它达到了业务的目的。它没有过度设计。它还会存在很长时间。

业务之所以雇用我们,是因为我们可以为其提供帮助。我们期望成为他们的搭档, 而不仅仅是承包商。我们期望可以理解业务。

Chad Fowlers 的主题演讲:

对于最新的软件开发来说,哪些实践是必须的呢?

  1. 编写垃圾代码
  2. 真正编写出垃圾代码
  3. 了解与编码相关的第一件事
  4. 参见第一条

你会做出东西,你会编写软件。事实上你是在为别人服务。我们从事的都是服务性工作。世界上的每个人都一样。我们提供的是体验。

要谦逊。要透明。要一致。要感恩。

Spencer 还为 Michael Feather 的演讲绘制了思维导图。

Eric Meyer 把整个大会总结为一句话——“好好干活”:

"玩世不恭就是懒惰的表现。“——Chad Fowler

简而言之: 要积极主动! 不仅仅玩世不恭是懒惰,破坏关系也同样。你永远都不应该说客户的坏话。越来越多的坏话就是无礼。不管你有多聪明,都是可以替代的。总有人和你一样聪明,甚至比你还聪明。如果人们不喜欢和你一起工作,那么就会找人来取代你。

“你的用户界面就是你的应用程序。”——Billy Whited

你需要对工作给予全面的关注。你要编写可维护的代码。你应该对代码进行测试。这种关注应该是全方位的,你需要注意用户是如何与应用程序交互的。如果你的应用程序外观很差,不管它的功能如何,用户就会认为应用程序很差。

“如果有人请求帮助,你应该总是说好。”——Bob 大叔

最重要的是,你应该关注客户的问题。本质上,你的工作就是要持续地交付能够工作的软件。

“每行代码都是债务。” ——Corey Haines

代码只是达到某种目的的方式。系统的用户不会直接关心代码。他们只关心应用程序是否能工作。你写的大多数代码都会被删除,特别是你花些时间重构代码的时候。另一个你不要过分关注代码的原因在于它会发生变化。当有人修改你的代码时,不要感到不安,而应该试着从中学习。

Bobby Johnson 报道了 Corey Haines 的主题演讲,其中讲述了对当今编写的代码质量的担心。

Corey Haines 在会议开始就表示了担心。我们是否正在重复上世纪九十年代的错误? 在创业公司中满是未准备好的开发者,认为可以在“24 小时内学习编码”吗?而他们会编写遗留到将来的代码。他建议应该阅读在十年内学会编程。业务迫切需要能够编码的人。如果他们迫切需要能够盖房子的人,那么两年后我们会看到到处都是倒塌的房屋吗? 然后他指出 GirlDevelopIt 匠艺学院(Craftsmanship Academy)还有一线希望;这些专业社区和初学者接触,有助于指导他们避免过去犯过的错误。我们为公司带来了价值,价值的一部分就是可持续性。

Johnson 还提到了 Michael Feathers 关于功能性概念(functional concepts)的演讲:

Michael Feathers 是一位个人英雄,他对我们提出挑战,看我们是否能够付出精力学习功能性概念。他把功能性技术描述为针对广泛领域的 DSL,现在是时候把这些技术整合到对编程语言的理解中,从而和大家分享。传统的 OOP(面向对象编程)开发者最初对于功能性技术会有“什么是 WTF?”之类的反应,认为那不够清晰。但是 Feathers 先生指出,尽管阿拉伯语对于他来说根本就是胡言乱语,但是每天都有上百万人使用它进行有效地沟通。这让我们想到了今年 Rich Hickey 在 Strange Loop 大会上的简单让你轻松(Simple Made Easy)的主题演讲。有些东西你不熟悉,但并不意味着它很复杂。它可能非常简单,只是在你当前的情况下不简单。可读和“聪明”之间的界限和共享词汇表相关。请看关于 Chris Powers 演讲非常好的思维导图

Dave Mosher 参加了 Gary Bernhardt 名为“扩张和收缩(Expansion & Contraction)”的主题演讲:

我认为他应该把标题改为“适用性 vs 功能(Suitability vs Capability)”,但是这个演讲非常棒,我认为是本次会议中最棒的一个。在此我尽可能来转述一下:

编程语言和技术总是一直随着时间有时扩张,有时收缩。在扩展的时候,这些解决方案是“功能(Capability)”解决方案,也就是说,它们能够解决问题,但并不是最合适的。最终就会发生收缩的情况,合并成为“合适”的解决方案。

在后 C/C++ 时代,Java 先是在扩张期成为一种功能解决方案。时过境迁,到了收缩期,Java 逐渐成熟,成为开发软件合适的解决方案。

Gary 在演讲中提到,JavaScript 和 NodeJS 当前正处于“功能解决方案”的阶段。起初我误会了他的意思,但是我想那是因为没有真正 _ 客观地 _ 聆听他的观点。NodeJS 现在肯定是处于“功能”阶段而不是“适用性”阶段,但那并不意味着你无法使用它来创建有用的内容。

Mosher 还记录了 Zed Shaw 的演讲中最有趣的想法:

可能从事软件匠艺运动的人们对于邀请 Zed Shaw 发表演讲比较奇怪,但是他关于“宣传,灌输,盲从和教育(Propaganda, Indoctrination, Fanbois, and Education)”的演讲是 SCNA 2011 上最引人深思的演讲。以下是我的转述:

如果有人告诉你他们找到构建软件的一种“真正的方式”,实际上他是要向你兜售东西。

如果你不编写代码,那么就不是程序员。程序员构建软件,其它都是市场行为。

当你确信思考是唯一的方式,那么就是在灌输。教育会告诉你各种方案,让你从中选择。不要接受灌输,而应该接受教育。

会上有人问他:

“那么你对单元测试、持续集成之类的东西怎么看?”

他的回答非常实际:

我在过去曾经在大型咨询公司中工作过,做过各种各样的事情。我编写过测试,做过 TDD,使用过 pivotal tracker 或者诸如此类的工具。这些东西都不错,但是所有人都在试图告诉你,这是构建软件的“正确方式”,他们实际在向你兜售工具。如果你相信他们,你的头脑就中毒了。你肯定不希望那样。

考虑到 Shaw 的“反敏捷”立场,可能是说没有一种所有软件开发者都需要遵循以产出高质量软件的“真正方式”,肯定还有比那更好的方式。

查看英文原文: Software Craftsmanship Was Once Again the Main Topic at SCNA 2011

2012-01-10 21:241716
用户头像

发布了 340 篇内容, 共 130.2 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

昆仑万维颜水成受邀出任2024北京智源大会程序主席及视觉大模型论坛主席

新消费日报

XMind for mac (XMind思维导图) v24.01中文版

Mac相关知识分享

思维导图 办公软件 Mac软件 软件下载 mac下载

大家来决定:python-office运行时的提示信息,要不要删除?

程序员晚枫

Python 开源 自动化办公

三菱课堂笔记 编程应用(梯形图语言 MELSEC iQ-R系列篇)

万里无云万里天

自动化 三菱

Mac苹果3D摄影棚布光软件:Set A Light 3D Studio 汉化版

你的猪会飞吗

Mac 软件 苹果电脑软件下载

win版Aiseesoft FoneTrans(ios设备管理软件) v9.3.58激活版

iMac小白

win版EaseUS Todo PCTrans(数据迁移软件) v13.15 中文特别版

iMac小白

30 天 52% 回报:GPT-4o 量化交易机器人

俞凡

人工智能 交易

学习笔记:快速成长的几点方法

老张

成长 学习笔记 成长路线

科技手段助力服务升级,新加坡旅游局成为马蜂窝首个境外目的地AI伙伴

技术研究院

win版MediaMonkey Gold(媒体管理工具) v2024.0.0.3031 中文注册版

iMac小白

mac电脑pdf增强插件:Enfocus PitStop Pro 2022激活版

你的猪会飞吗

Mac软件 苹果软件资源 Mac软件推荐

三菱课堂笔记 编程基础

万里无云万里天

自动化 三菱

蓝易云 - Redisson集成SpringBoot详解

百度搜索:蓝易云

redis spring 运维 服务器 redisson

蓝易云 - 关于openfeign的http和rpc详解

百度搜索:蓝易云

Linux 运维 Web HTTP openfeign

win版Perfectly Clear Workbench(图片编辑软件) v4.6.1.2668 特别版

iMac小白

win版Gihosoft TubeGet Pro(YouTube 视频下载工具) v9.3.88 专业激活版

iMac小白

码住!详解时序数据库不同分类与性能对比

Apache IoTDB

三菱课堂笔记 编程基础(ST语言篇)

万里无云万里天

自动化 三菱

SoftReference 到底在什么时候被回收 ? 如何量化内存不足 ?

bin的技术小屋

ZGC JVM java

spring boot优雅下线

智慧源点

微服务的优雅上下线

蓝易云 - Ubuntu22.04交叉编译gcc9.5 for arm

百度搜索:蓝易云

Linux ubuntu 云服务器 arm GCC

win版中望3D 2025(ZW3D2025CAD/CAM软件) v2025中文版

iMac小白

win版威力导演 2024 (CyberLink PowerDirector Ultimate) v22.5.3003.0 特别版

iMac小白

码住!详解时序数据库不同分类与性能对比

Apache IoTDB

I/O虚拟化之软件模拟

Linux内核拾遗

Linux qemu kvm 软件模拟 IO虚拟化

win版IDimager Photo Supreme 2024(图片管理软件) v2024.2.0激活版

iMac小白

三菱课堂笔记 变频器节能

万里无云万里天

自动化 三菱

win版Icecream PDF Editor Pro(pdf编辑器) v3.24 激活版

iMac小白

win版Nitro PDF Pro(全面的PDF工具) v14.26.0.17便携版

iMac小白

ERC404开发:探索代币化资产的新维度

dappweb

区块链开发 ERC404

SCNA 2011的主题——软件匠艺_研发效能_Abel Avram_InfoQ精选文章