软件工程笔记之 - 焦油坑
虽然这只是笔记,但我仍然忍不住放上来和大家分享软件给我们带来的苦与乐。
很多大型软件的开发如同一个焦油坑,很多大型强壮的动物在其中挣扎,他们大多数开发出了可运行的系统,不过只有极少数项目满足了目标,进度和预算要求。对问题的麻烦程度每个人都会感到惊讶,并且很难看清问题的本质。
单单一个程序有可能一两个紧密能干的人不用花多少时间就能搞定,不过程序要转变成编程产品可以被任何人运行、测试、修复和扩展的程序,成本至少是经过测试程序的3倍。然而程序转变成编程系统中的一个构建单元。需要满足复杂的编程接口,符合预先定义的资源限制,以及测试等等,这些成本至少是独立程序的3倍。
职业乐趣(很有道理,这也是我乐此不疲的动力):
- 这种快乐是一种创建事物的纯粹快乐。如同小孩玩泥巴感受到的快乐一样(感同身受,小时候玩小制作,大了就玩代码,都是玩,带来的快乐也是一样)。
- 这种快乐来自于开发对他人有用的东西(帮助他人就是最大的快乐)。
- 快乐来自于整个过程体现出来的一股强大的魅力――将相互啮合的零部件组装在一起,看到它们以精妙的方式运作(这就是为什么我当初选择机械专业的原因)。
- 这种快乐是持续学习的快乐,它来自于这项工作的非重复特征(以前不想当教师就是由于这个行业太多重复的工作了)。
- 这种快乐还来自于在易于驾驭的介质上工作。程序员的创造介质如此灵活,如此方便,创造的速度和代价如此的小(这就是当初我从机械专业转行的动力了)。
编程的快乐不仅满足了我们内心深处进行创造的渴望,而且唤醒了每个人内心的情感。
职业的苦恼(面对这些的确很无赖):
- 苦恼来自追求完美(不过我还好,我有一点强迫症,很适合这样需要追求完美的行业)。
- 苦恼来自他人来设定目标、供给资源、提供信心(这莫过于最痛苦的事情,往往我们的项目是别人说了算,所以我很怀念在大学自主开发项目的时候,没人给我设定界限,自己说了算,唉!!)。
- 寻找琐碎的Bug是一项重复性的活动(我最怕重复性的劳动)。
- 当投入大量工作,产品即将完成的时候却显得过时了(IT行业更新速度快得让人喘不过气来)。
这就是编程,让许多人痛苦挣扎的焦油坑以及一种快乐和痛苦并存的创造性活动。