编程的快感之「易于驾驭的介质」
编程快乐是一种创建事物的纯粹快乐,这种快乐的来源之一来自于在易于驾驭的介质上工作
《人月神话》
《人月神话》是几乎每个程序员都或多或少了解过的一本书,著名的「没有银弹(No Silver Bullet)」的软件工程理论就被其作者Fred Brooks收录在这本书中。
这本书的第一章「焦油坑」就讨论了「编程的快感是什么?」这样一个对大多数程序员来说不言而喻,但如果要具体说说或许又难以准确表达出来的一个问题。简要归纳一下,原书提供了这样几个答案:
- 一种创建事物的纯粹快乐
- 开发对他人有用的东西
- 开发过程的强大魅力——将相互啮合的零部件组装在一起
- 持续学习的快乐以及非重复性
- 在易于驾驭的介质上工作
我对「在易于驾驭的介质上工作」这个原因尤其认同,结合当下的现实,谈谈我的体会和想法。
什么是「易于驾驭的介质」?
要说这个世界上最易于驾驭的介质是什么,我目前能想到的就是人的大脑(思维)。没有具体的形态,无需任何实体的操作,你想到了什么思维就已经被你操纵到了哪里(我不大确定到底是你在操作大脑还是大脑在操纵你)。你可以在大脑里创造出各种各样没有实体的东西。程序员或者文艺工作者往往有这样的体验,当你才思泉涌时,往往觉得双手都跟不上大脑运转的速度,就好像高速运转的 CPU 无法容忍相对而言低速的 I/O 操作一样。
我无法给「易于驾驭的介质」下一个明确的定义,不过如果假设大脑(思维)就是这个世界上最易于驾驭的介质的话,那我可以自然地说能被操纵(manipulate)的速度越接近大脑的速度,这种介质就是越容易被驾驭的。
为什么代码是易于驾驭的介质?
我的个人经历就可以告诉我,代码绝对是工程领域最易于驾驭的介质。不同于传统的工科领域总是有具体的实体操纵对象或者危险难以控制的操纵对象,编程所操纵的对象——代码——算是太容易操纵的了,这是软件与硬件天然的区别。你无法说你磁盘上的那一串串 0 和 1 是实体的或者是危险的。即使不知名的宇宙射线打过来反转了你电脑内存中的某一个比特位,相信我,也不会有什么东西会爆炸的(或者极小概率)。
基于此,编程工作的易于操作性在于,你只消用你的个人电脑,按照一定的规则在键盘上对代码做出任何你想要的更改,你的程序就可以按照你的预期做出你想要的行为,尽管它没有实体无法给你端茶倒水,但在今天这个互联网时代,却已经创造出了前所未有的价值。
代码之于电脑,就像大脑之于人体一样。
这种易于驾驭的介质带来了什么?
- 低廉的操作成本:与世俗的观念还是倾向于不想为看不见的东西的付费有关,操作代码的成本是低廉的,你只需要一台可计算设备即可。
- 容易传播和产生影响:下载和使用一个软件现在已经是秒秒钟的事情,好的软件已经非常容易传播和拥有庞大的用户,这同时意味着代码中的任何问题也可能会造成巨大的破坏。
- 低廉的试错成本:每一个产品迭代可能需要很多次才能达到用户满意的标准,一个不关键的 bug 可能需要很多次更新才能彻底解决,然而一个医生却无法把病人当成「小白鼠」来多次试验,一个建筑师却难以修补已建成建筑的设计缺陷。(此点灵感来自于:程序员混日子不完全手册)
把任何实体产业尽量转化为电脑中的 0 和 1,再利用其转化后的优势产生价值,这便是互联网+的本质。