周六散分:程序员不是打字员,不是打字快程序就写的好
不 同的程序设计师,写程序的速度差异可能天差地远。有的程序师写得非常快,有的则是龟速。Jeffrey Ventrella是一个龟速派的代表,他最近在一篇文章中探讨了这种程式设计速度的差异,并且从龟速派的观点出发,来说明为什么在这个求快的时代,他认 为程式还是该慢慢写比较好
以下是Jeffrey Ventrella的自述
我爸常跟我说的一句话是,慢一点写程序,才能快点把程序写完。
我在旧金山很多网络公司工作过,现在已经52岁了,对于程序设计师这个职业来说,我的年龄算偏大的。我写程序的速度近乎龟速,事实上,我更像是一个会写程序的艺术家。
以前有一次,我和一些比较年轻的程序设计师一起工作,他们信奉的程序设计宗旨是「速度快、更改少」。我们在同一个codebase里合作,就像在共同煮一大锅汤一样。如果我们每个人都持续不间断的贡献程序码的话,未来这个工程应该就会很美很壮观的呈现出来。
但是并没有。
问题在于,这些年轻的程序员在心里其实有这么一种思想,他们觉得:1、每个人都是可替代的;2、没人应该对某一部分的具体程序码负责;3、所有人应该都可以任意修改整个工程的程序码。
他们觉得,现在已经有了github这种工具用来管理非同步时间内的程序码贡献,只要每个人都持之以恒的贡献程序码,工程和产品就会顺理成章的出炉了。
事实不是这样的。程序设计从来就不应该是拿工具来减少软件发展的时间的。
程序设计应该是一项有节奏感有韵律的运动。 我倾向于把工程依照不同的规模和时间度量分成不同的阶段,每一个阶段再从探索、实验、error、临时变数这些细小的东西开始做起。有时候当这栋建筑完成 之后,我还会推倒重来一遍,因为我觉得我有更好的建筑方法。这种新的方法有时候是对的,有时候是错的,事实上除非真正去再做一遍,不然你永远无法知道究竟 哪一种方法更好。
在软件发展生态圈里,关于对整个设计流程产生推动与支持的混合思考是很重要的,没有这一部分的工作,再快的程序设计师,又能做出多好的设计?
很多神经系统科学家相信神经元资讯的流动在大脑的传导过程中会有一个短暂的堵塞和混响,这对思维和感知会有很重要的作用。程序设计的设计也应该是这样,需要时间。
慢速程序设计运动
人 们对科技越来越诡异的迷恋,以及开发人员对工具异常的狂热。大家总在说,为什么有的软件和应用做得这么烂?没错,确实很烂。烂的原因在于,太多一味求快的 程序师在忙着建设工具,然后用这个工具去支持另一个他们建好的工具,然后再用这个工具去支持另一个他们建好的工具,然后再用这个工具帮他们写出更快的程序 码。
这就是我为什么觉得软件发展需要更多的「人」,而不是「工具」的原因。并且,这些人不仅仅只是帮忙做做外面的UI艺术之类的而已,应该要有更多的人深入软件发展的内部——确保软件更多的与人文产生共鸣和回响。
当我们谈论程序设计时,我们在谈论什么?
程序设计不是打字。
所有的程序设计师都明白这一点,但是大部分人都容易忘记这一点。
在电脑前劈里啪啦、弹指挥间的感觉确实很爽,这种键盘上啪啪啪的快感却很容易让人忘记程序设计是一项脑力活动,而不是体力劳动。程序设计的真正奥义在于,把人类的思维、设计、语言、逻辑和精神创造以一种电脑可以识别和储存的方式记录下来。
我妻子有时会跑到院子里问我,你在程序设计吗?我说,对,我在程序设计。事实上我可能正拿着钳子修剪花盆里的花草,或者做做施化肥之类的事情。
植物、土壤、钳子,这些都是程序设计的好工具,正如键盘、鼠标和双屏幕一样。
目前,我们正在经历一个经济产业的转型期,从新兴到可持续发展之间的一次过渡。新的软件产品和商业模式是需要发展,但为了网络发展的可持续性,这种速度应该降下来一些了。写程序不该仅是在写客户当下的需求,应该是为未来某种行业领域的基础进行架构。
程序码应该在程序师的关爱下慢慢的、茁壮的成长。Like good wine。Like a baby。