免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

成为软件工匠

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

评论

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

简历上的项目,需要这样描述才有亮点!

小傅哥

Java 面试 项目 简历 校招

Dubbo + ZooKeeper|如何解决线上故障排查链路长的难题

云布道师

dubbo

大语言模型(LLMs)和新兴机器学习技术栈

Baihai IDP

人工智能 自然语言处理 NLP 大模型 大模型 白海科技

专场直播预约 | 邀您探讨KaiwuDB 离散制造业场景解决方案

墨天轮

数据库 解决方案 制造业 国产数据库 KaiwuDB

AntDB-M数据库锁分析,不要错过!

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

全球掀起AI热,天翼云智算能力已就绪!

天翼云开发者社区

Tars-Java网络编程源码分析

vivo互联网技术

网络编程 nio TARS

Parallels Desktop虚拟机问题汇总

理理

常见问题 parallels desktop18 pd虚拟机 PD密钥

Final Cut Pro资源库占用内存太大如何释放磁盘空间?

理理

FCPX下载 fcpx Final Cut Pro空间不足 fcpx中文版

优秀的录屏软件:Record It Pro 直装激活版

真大的脸盆

Mac Mac 软件 录屏 屏幕录制 录屏软件

共铸国云智领未来| 以数字林草之“笔” 绘就塞上江南新图景

天翼云开发者社区

云计算搭上“双碳”,天翼云在绿色算力赛道加速跑

天翼云开发者社区

学完阿里P8面试官推荐的Java高并发核心编程文档后终拿蚂蚁offer

程序知音

Java 并发编程 编程语言 高并发 java架构

大语言模型必将取代一切?暂时不会!

深数

人工智能 科技 AGI GPT LLM

AAA级认证!索信达综合信用水平获高度认可

索信达控股

移动云发布操作系统迁移工具,助力全场景业务一站式迁移

openEuler

Linux centos 操作系统 虚拟化 openEuler

使用K8S进行蓝绿部署的简明实操指南

SEAL安全

k8s 企业号 3 月 PK 榜 蓝绿部署

使用 Pixelmator Pro,打印出最完美的照片效果

理理

Mac修图软件 Pixelmator Pro破解 Pixelmator Pro中文 Pixelmator Pro下载

ChatGPT4 高分通过数据库系统工程师(DBA)认证

NineData

数据库 dba GPT ChatGPT4 数据库系统工程师

Stepn跑鞋GMT系统开发(NFT链游)

薇電13242772558

NFT链游

追踪 Kubernetes 中的数据包

张晓辉

Kubernetes 网络

解决苹果无线鼠标、键盘或触控板无法被 Mac 识别的方法

理理

mac系统 苹果无线鼠标 触控板 无法被mac识别

Ascend CL两种数据预处理的方式:AIPP和DVPP

华为云开发者联盟

人工智能 华为云 昇腾CANN 华为云开发者联盟 企业号 3 月 PK 榜

线段树模板与练习

timerring

线段树

稳定高效数据库管理:Valentina Studio Pro激活版

真大的脸盆

数据库 Mac 数据库管理工具 Mac 软件 管理数据库

SwitchResX for mac自定义分辨率时遇到的问题汇总

理理

Mac软件 电脑分辨率 SwitchResX下载 SwitchResX常见问题

第四朵“云”!全托管的时序数据云平台 TDengine Cloud 正式支持阿里云

TDengine

大数据 tdengine 阿里云 时序数据库 云服务

PostgreSQL:psql 介绍

天翼云开发者社区

盘活存储资源,天翼云HBlock助力企业绿色高效发展!

天翼云开发者社区

HTML5智慧农业大棚Web3D可视化系统

2D3D前端可视化开发

智慧大棚 智慧农业 数字农业 大棚三维可视化 数字孪生智慧大棚

通通透透看无服务器计算:由来、场景和问题

天翼云开发者社区

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