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

原文首发于图灵社区。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 2011-11-15 21:22  大卫张  阅读(1987)  评论(4编辑  收藏  举报

导航