你是“职业”软件开发吗?——书评《浮现式设计-专业软件开发的演进本质》

原文首发于图灵社区。http://www.ituring.com.cn/article/196

很多软件开发人员很困惑,自身的职业发展是怎样的?靠谱的公司怎么那么少?很多软件公司很困惑,软件开发人员怎么招聘,怎么培养,怎么用?为什么靠谱的软件开发人员那么少?

如果你有上述疑惑,在思考职业的软件开发人员应该是什么样,这本书可以给个参考。

1. “码农,请不要侮辱农民这个职业!”

“码农,请不要侮辱农民这个职业!”——原话出自@孟晓林Ralph。读完《浮现式设计-专业软件开发的演进本质》,这句话一直回响在我的耳边。

做软件就是写代码,这是一种典型观点。软件行业有个提法,要想成为高手,至少先要有十万行代码经验。于是很多软件开发人员的第一目标就是朝着十万行代码努力,这是千千万万“码农”的追求。因为做软件就是写代码,所以这是量产的软件开发人员们唯一值得骄傲的技能。但他们并不喜欢这唯一的技能,对他们来说,重复写代码成就感很低,并且收入不够高,所以很多5-10年工作经验,甚至2-3年工作经验的软件开发人员转岗成为了管理者或不写代码的架构师。与之相对的另一个现象则是他们生产出来的代码质量之低劣,让软件公司和客户饱受软件质量的困扰。他们被尊称为“码农”。

 “码农,请不要侮辱农民这个职业!”虽然在大多数人的印象中,农民就是头朝黄土背朝天。然而农民是个值得让人尊敬的职业。在农业社会中,衡量一个农民的标准并不是他会不会摆弄农业用具,也不是他有力气耕多少田。衡量一个农民的标准是他耕的田的产出,这些产出能不能养活他自己和他的家。只会摆弄农业用具的那是业余农民,职业农民需要应对天气变化、观察农作物长势、采取对应的措施以保证收成。

然而当前在软件行业不是这样的。软件行业确实和农业有所不同,但道理是相通的。衡量一个软件开发人员只有两个标准,一是他摆弄各种工具的能力(语言、工具的掌握程度),二是他的工作经历。在我的职业生涯中,看到过好几位祸害了一个公司,然而换个公司继续祸害的软件牛人。

2. 什么是软件?

软件行业是个神奇的行业,这个行业基本不讨论软件是什么,却有信心把软件做好。软件行业是个神奇的行业,这个行业什么人都可以说自己是职业的软件开发人员。问问自己,我们真的知道什么是软件吗?真的知道什么是职业软件开发人员吗?

有人认为软件是代码。在《浮现式设计》这本书中,作者认为软件是演进的。我很赞同作者的观点。软件从出生那一天起,就是活的。业务是它的外形和行为,架构是它的骨架,代码是它的血肉,它需要呼吸和饮食从外界吸取营养,需要排泄,需要神经系统,而软件开发人员则为身体的各个部分如手、脚提供营养并影响局部的生长。

在这里YY一下。外形、行为、骨架、血肉、神经、消化排泄系统的发展需要均衡。过于为局部提供营养,野蛮生长的结果就是癌症。大规模的架构重设计显得很可笑。如果想用一套钢骨架替换原来的石灰骨架,就需要剥开血肉,换掉骨架,与此同时血肉在生长,新骨架和新血肉能否配合,神经系统怎么衔接,能否维持整体的外形还是未知数。

3. 你是“职业”软件开发吗?

如果软件是活的,是演进的,那么职业的软件开发会做什么?我们也需要像职业农民学习,应对天气变化、观察农作物长势、采取对应的措施以保证收成。《浮现式设计》的作者认为,即使我们不能保证软件在进化,至少也要保证软件不退化。首先,要有不伤害的意愿,每次修改软件的时候都加倍小心,不让它变得更糟;然后与用户一起验证软件;最后采用能做到不伤害的工作方式。因此业余的软件开发写代码,职业的软件开发不让软件变得更糟,专家级的软件开发让软件健康成长。

怎样才能做到这一点呢?如下图,这是作者的建议。作者更偏向于技术角度,讲述了职业软件开发人员所需要具备的一些技术能力。

 

你所在的软件公司为软件质量困扰吗?你所在的公司为软件开发人员的质量困扰吗?强烈向如下人员推荐本书:

1)希望了解什么是职业软件开发的人

2)希望成为职业软件开发的人

3)希望培养职业软件开发的个人或者公司

4. 背后的故事

4.1 缘起

在很久很久以前(此处采用微博纪年法),新浪微博上有一个争论。话题是Emergent Design到底翻译成什么比较好?译法那是五花八门,紧急设计、涌现式设计、演进式设计、演化式设计、浮现式设计、涌现式设计,啥都有。见他们讨论的热烈,又不想跳进他们的坑中。于是新开几篇微博描述了我对涌现的理解,也表达了想读一读这本书的愿望。

在《敏捷中国2011大会》上终于拿到了书。书入手让人感觉很舒服,封面也很简洁。自认为对涌现式设计还是有一定的了解,本以为不会有什么惊喜,结果在一个小时左右的快速阅读后,冷汗泠泠。

4.2 不足

1)译法

整本书的翻译读起来比较流畅,译者还是用了心。然而几个关键点的翻译却让人感觉美中不足。Emergent Design建议译成涌现式设计,专业建议译成职业,演进建议译成进化。这样的翻译和我这篇读后感就扣上了,呵呵,开个玩笑。只有这样的翻译才能经得起反复推敲,才能激发人们更多的思考。

2)书名

很多IT好书都栽在了悲催的书名上,但愿这本好书不会这样让大家错过。本书的书名说来也苦了出版社。翻译成《浮现式设计》,那就变成了一本设计书,小众,卖点不够;翻译成《专业软件开发的演进本质》,那就变成了一本哲学书,卖点也不够。

posted on   大卫张  阅读(1990)  评论(4编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
< 2011年11月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

导航

统计

点击右上角即可分享
微信分享提示