写点什么

成为软件工匠

  • 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:063847

评论

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

华为Mate 70的麒麟9020芯片是谁生产的?

博文视点Broadview

Three-Body Technology Lost Soul for mac(三体洞箫软件音源) 激活版

Rose

未来技术路线选择:低代码开发还是传统开发?

秃头小帅oi

AI驱动软件研发:从辅助到深度协同

思码逸研发效能

人工智能 研发效能 AIGC 思码逸

提示词工程的十大认知误区

阿里技术

提示词

音视频互动APP的技术难点

北京木奇移动技术有限公司

音视频开发 软件外包公司 音视频APP

阿里云 EMR Serverless Spark 在微财机器学习场景下的应用

阿里云大数据AI技术

大数据 数据采集 分布式训练 EMR

火山引擎数据飞轮2.0助力中信银行,用“AI”开启新年新气象

字节跳动数据平台

PlistEdit Pro for Mac(Plist编辑器)v1.9.7直装版

Rose

2024年最受欢迎的5个Go框架

王中阳Go

后端 go框架

Type Fu for Mac(打字练习)v4.8.0激活版

Rose

交互式产品原型设计工具 Axure RP 9 mac中文破解版 含永久密钥

Rose

探索生成式AI与低代码结合的无限可能

天津汇柏科技有限公司

低代码 生成式AI

综合治理系统(源码+文档+部署+讲解)

深圳亥时科技

Numa初识

天翼云开发者社区

服务器 构架 NUMA

Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践

阿里云大数据AI技术

大数据 阿里云 数据集成 Dataworks FFA

DeepSeek 爆火全球,昇腾让DeepSeek上线加速

极客天地

人工智能丨DeepSeek-V3:推理速度飙升,开源模型新王者诞生!

测试人

人工智能 软件测试

Volcano v1.11 重磅发布!开启AI与大数据的云原生调度新纪元

华为云原生团队

云计算 开源 容器 云原生

技术干货|Altair HyperWorks 二次开发与 Python 重构仿真新体验

Altair RapidMiner

Python 重构 开发语言 前处理软件

音视频互动APP的成本

北京木奇移动技术有限公司

音视频开发 软件外包公司 音视频APP

谷歌访问助手(谷歌浏览器插件)Mac版

Rose

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