写点什么

成为软件工匠

  • 2014-11-23
  • 本文字数:1840 字

    阅读完需:约 6 分钟

软件工艺活动探讨了把实践作为开发编程技能以成为软件工匠的一种方式。大家都认为技术实践非常重要,它值得花时间去学习,以成为更好的程序员。

软件工艺宣言是这样说的:

作为有追求的软件工匠,我们正在通过实践不断地提升专业软件开发水平,并帮助其他人学习这门工艺。在工作过程中我们总结了以下的价值观:

不仅要让软件工作,更要精益求精。

不仅可以响应变化,更要稳步增加价值。

不仅要有个体与交互,更要形成专业人员的社区。

不仅要与客户合作,更要建立卓有成效的伙伴关系。

也就是说,左项固然值得追求,右项同样不可或缺。

Chris ODell 在博客上发表了一篇名为 the codesmith (代码匠)的文章,分享了他对工匠定义的看法:

“按照我的理解,工匠不仅仅是拿选定的材料从无到有地创造出一些什么东西,而是通常会把属于他们自己的一些什么东西融入进去。一名好的工匠会花时间和精力去做些优秀的东西,它们值得我们这样去做,在精心打造出来产品之后有些方法仍然可以传承下去。优良的工艺就是高质量产品的代名词。”

仿照金匠和铁匠,Chris 杜撰了一个名词叫作代码匠,他说“这代表工艺达到了一定的水准,代表着从学徒走向大师之旅中的一种进展。”他后续又在博客中发表了一篇名为任何人都可以成为代码匠的文章,他说明了代码匠可以如何自我提升以成为代码巨匠:

“成为代码匠的门槛应该要低一些。这也就是为什么我说无论以什么形式写代码的人都可以称之为代码匠的原因。我们应该追求工艺的理想,并具有适度的实用主义,花时间去学习技能并且进行实操练习以成为好的编码者。”

今年早些时候,InfoQ 就《敏捷技术实践的重要性》发表了一篇新闻,在这篇新闻中参与工艺运动的几个人强调了技术实践的重要性:

Matt Badgley:“我们需要重申敏捷工程良好实践的重要性,并且拥抱工艺的理念——没有这个,就不可能实现敏捷。”

Robert Martin:“如果你们不使用极限编程的 13 个初中,那么你们最好使用一些别的好实践甚至是更好的实践。你们使用的实践定义了你们的文化,表现了你们的价值。”

Ruud Wijnands:“很多公司应用敏捷时采用了所有有价值的、已实现的技术实践,我看到了他们在这一方面取得的成功。不这么做的公司很少有成功的。”

程序员如何开发他们的技能以成为一个软件工匠呢? John Sonmez 写了一篇名为为什么我不使用编码招式的博客,在这篇文章中,他说程序员重复做同样的事情无法提升他们的技能。你要去学些什么,水平必须要持续地提升:

反复不断地重复写代码去解决同样的编程问题,这就是在做完全相同的事,除非新的约束和变化给你带来了新的挑战,你只能从第一次的经验中有所收获,而从第二次开始基本就是简单地重复了。

(……)如果你想要做得更优秀,重复实践是远远不够的。你必须在实践中增加更多的难度和挑战。

按照 John 的说法,实操是提升技能的好方法。程序员必须去写程序才能成为软件工匠:

我收到了很多邮件,他们咨询我学习编程的最佳方式是什么,或者如何提升他们的技能。最近,我收到很多邮件询问我如何学习安卓开发。你知道我是如何回复这些好奇的心灵的吗?

去做安卓应用。

但是,嗯,我应该去看什么书呢?

不需要看什么书,只需要迸发一个想法然后去尝试实现它。一步步实践,解决过程中遇到的问题。当你卡壳时,就去找找答案或者寻求帮助。

Steve Ropa 写了一篇关于培养软件工匠的文章。大学传授了软件开发的理论。为成为程序员工匠需要增加“现实世界的经验和知识的应用实践”,Steve 说。学徒工计划能够为此做出准备:

我的建议是让时间倒流,我们穿越回一百年前,把你们的工作间变成一个车间。我们需要把工匠安置到车间中。开始的时候我们可是没有这么多工匠,所以我们需要培训和锻炼他们。应用学徒工计划并且使用针对未来职业生涯的工匠模型就可以做到这一点。

如何从软件开发学徒成为工匠呢,Steve 在他的博客中谈了五个方面:

  • 代码工艺——使用一个或多个程序设计语言的艺术去创建清晰的、构造良好的代码。(……)
  • 实用的原则——(……)一个学徒需要理解类似于 SOLID 这样的原则,并且知道如何去应用它们。
  • 技术和工具——虽然程序员需要有能力去实践像手工重构这样的做法,但是他们也需要了解如何使用专门的工具,如何针对特定的任务去选择适当的工具。
  • 工作习惯——(……)我们需要围绕某些活动培养肌肉记忆,比如 TDD、持续集成等等。
  • 软技能——(……)软件学徒需要学习如何在团队中开展工作,如何与其他人进行交流,以及一些其他的软技能,在传统学习环境中这些软技能渐渐地都被忽略掉了。

查看英文原文: Becoming Software Craftsmen

2014-11-23 07:064196

评论

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

Graph + LLM|图数据库技术如何助力行业大语言模型应用落地

悦数图数据库

数据库 图数据库

生成式AI:重新定义生产力与创造力

百度开发者中心

人工智能 ChatGPT 生成式AI 文心一言

Graph + LLM 实践指南|如何使用自然语言进行知识图谱构建和查询

悦数图数据库

数据库 图数据库

TDD、BDD、ATDD都是什么、有什么区别?(上)

禅道项目管理

GaussDB技术解读:应用无损透明(ALT)

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

生成式AI领先,实现客服机器人真智能

百度开发者中心

人工智能 机器人 生成式AI 文心一言

如何使用io_uring构建快速响应的I/O密集型应用?

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

没有永远的王者…Zig替代C,将成定局!

互联网工科生

C语言 C++ Zig语言

万界星空科技|免费开源MES系统|自动排产管理

万界星空科技

开源 MES系统

MegEngine 使用小技巧:Profiler使用手册

MegEngineBot

开源 性能优化

用友Fast by BIP领先实践全景图公布!

用友BIP

Fast by BIP 2023全球商业创新大会

2023开源和信息消费大赛新闻发布会在京召开

开放原子开源基金会

生成式AI助力文学艺术创作

百度开发者中心

人工智能 艺术 文心一言

生成式AI:业务流程的变革与机遇

百度开发者中心

人工智能 生成式AI 文心一言

Clang编译数据库信息扩展

maijun

Clang 编译数据库

软硬件双向驱动 英特尔加速AI on PC落地

E科讯

业务需要咨询?开发遇到bug想反馈?开发者在线提单功能上线!

荣耀开发者服务平台

开发者 在线客服 工单 技术支持

生成式AI:助力网络安全,挑战与机遇并存

百度开发者中心

人工智能 网络安全、 生成式AI 文心一言

Presto 设计与实现(十二):SQL 逻辑计划

冰心的小屋

数据湖 presto 设计与实现 SQL Plan

打造千亿文件量级的大规模分布式文件系统

Baidu AICLOUD

文件系统 分布式文件存储 元数据

2023年广州国际大健康产品及健康食品展会

秋硕展览

2023健博会 保健用品展 护理用品

大数据平台与数据仓库的五大区别

行云管家

大数据 数据仓库 数据安全 大数据平台

大数据平台三大优势详解-行云管家

行云管家

数据库 大数据 数据安全 大数据平台

程序员常逛的17 个杀手级网站

专注前端开发

前端 大前端 网站

​iOS上架审核宝典:如何避免被拒一次提交成功

ios

面试了38位Java候选人之后,我总结出了他们关于面试中的16条通病

程序员小毕

Java 程序员 面试 简历 八股文

成为软件工匠_研发效能_Ben Linders_InfoQ精选文章