软件匠艺 Software Craftsmanship
前言
Martin大叔的新书《敏捷整洁之道》(Clean Agile)出版了,赶紧入手了一本,一口气读完,感慨良多。
在该书中,Martin大叔作为《敏捷宣言》发起人之一,结合自己50年软件从业经验,历数了敏捷20年之怪状。一言概括,缺乏技术实践。
敏捷形式化,DevOps工具化,唯独缺少了极限编程实践。
在2008年,开发者们在《敏捷宣言》的基础上发起了软件匠艺(Software Craftsmanship)活动,并发布了《软件匠艺宣言》。
非常可惜,直到今天(2020年)我才知道软件匠艺(Software Craftsmanship)。我想还有非常多的人不了解它,因为它是开发人员发起的另一项运动。但是与敏捷不同,这里没有Scrum,没有看板,没有迭代,没有计划会议,没有评审会议和回顾会议,没有敏捷教练和项目管理人员“听得懂”的词,也没有认证机构和培训机构可以牟利的空间,所以它没有火起来。但是,对开发人员来说,《软件匠艺宣言》是对自己的修行,激励自己作为软件开发的专业人士来工作,与客户紧密合作并为客户提供优质服务,其它专业人士合作,打造专业人士社区,不断提升专业技能,不断追求卓越。
软件匠艺宣言
作为有理想的软件工匠,我们一直身体力行,提升专业软件开发的标准,并帮助他人学习此工艺。通过这些工作,我们建立了如下价值观:
不仅要让软件工作,更要 精益求精
不仅要响应变化,更要 稳步增加价值
不仅要有个体与交互,更要 形成专业人员的社区
不仅要与客户合作,更要 建立卓有成效的伙伴关系
也就是说,左项固然值得追求,右项同样不可或缺。
参见:
软件匠艺倡导的实践
软件匠艺社区以极限编程实践作为最佳实践,鼓励:
- 测试驱动开发(TDD)
- 重构(Refactoring)
- 简单设计(Simple Design)
- 持续集成(Continuous Integration)
- 结对编程(Pair Programming)
- 整洁代码(Clean Code)
- SLOID原则
更多极限编程实践参见:
还鼓励学习和实践:
- 微服务架构设计
- 搭建CI/CD持续部署流水线
- 把系统迁移上云
- 使用容器和容器云
- 学习多种编程语言和编程范式
- 自动化测试
- 自动化系统运维
- 新技术和新方法
相关书籍
- 《解析极限编程:拥抱变化》
- 《敏捷整洁之道:回归本源》
- 《重构:改善既有代码的设计》
- 《代码整洁之道》
- 《持续交付:发布可靠软件的系统方法》
- 《DevOps实践指南》
Code Kata
如何避免“眼会手不会”,或者“字幕人均XX大师”,最好的做法就是重复练习一些简单的动作(日语:kata),来自日本空手道的套路练习。
编程是一门”眼脑手“的匠艺。
- 只靠看秘籍,而不去练习功夫,不可能成为一名高手。
- 只靠看琴谱,而不去练习指工,不可能成为一名音乐家
- 只靠看菜谱,而不去练习刀工火候,不可能成为一名大厨。
如果能坚持每天1小时的Code Kata (编程练习),练到炉火纯青,融会贯通,就能不断提升升自己的实战水平。
Code Kata收集:
与Leetcode刷题不同,Kata练习得不是死记硬背几个算法,而是探索更好的方法来解决现实世界的问题,虽然简单,但是如果练习到炉火纯青,融会贯通,则威力无穷。
另外一篇关于更好地做Code Kata(或更好地提升编程技能)的文章: