编程的乐趣与苦恼

曾经对编程很着迷。高中的时候对着某机器的BIOS basic语言都兴奋不已;考大学报的志愿里面所有的第一志愿都是计算机。只是命运弄人,居然上了志愿里唯一一个不是计算机类的专业。

今天跟一个同事聊天,问起来是否觉得这个工作有意思的时候,他说,觉得就是一个工作,别人让做什么就做什么。再问,那么有什么你感到有成就感的东西么?答案是,在完成一个工作的时候会短暂的感到满足感,大概是“这个东西终于做完了”。我感到有些失望。如果一个工作变成真的只是工作的话,人的状态会很不好的。如墨墨所说,成功最需要的,是passion。

晚上回来翻《人月神话》。这应该是比较经典的一本书,我在03年的时候见到有人看过,看的人是一个我很不喜欢的人,当时正处于自我膨胀的很厉害的阶段,觉得坚决不能与他同流合污。只是最近在dangdang看见,觉得还是应该买一本来看一看。

书的第一章真好就讲了编程这个职业的乐趣与烦恼,深有共鸣。

首先,这种快乐是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到快乐一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。

说的太好了。大概小时候玩具玩的不够多,长大了对于这种能够创建新鲜事物的事情总是乐此不疲。对很多的新技术也很有兴趣。

其次,这种快乐来自于开发对他人有用的东西。内心深处,我们期望我们的劳动成果能够被他人使用,并能对他们有所帮助。

呃,深有感触。我们组一直以来不是很爽的事情就是我们的product没有办法直接到最终用户的手上,让我们觉得我们做的东西的意义很大折扣。如果能看到自己做出来的东西跟别人compete,并且战胜他们,是多有意思的一件事情。

第三,快乐来自于整个过程体现出的一股强大的魅力—— 将相互啮合的零部件组装在一起,看到它们以精妙的方式运行着,并收到了预先所希望的效果。比起弹球游戏机或自动电唱机所具有的迷人魅力,程序化的计算机毫不逊色。

用我老婆的话说,这注定是一个工程师,不能够发大财的。不过,人生苦短,能做一些有意思的事情,不是很好么?

第四,这种快乐是持续学习的快乐,它来自于这项工作的非重复特性。人们所面临的问题总有这样那样的不同,因而解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。

学习的过程也是很有意思的过程,特别是有时候对某些东西突然醍醐灌顶,发现以前自己那么傻,那么容易理解的东西都不明白。另外,软件的确是一个很难重复的过程,几乎很难有机会对同一个东西做两边。

最后,这种快乐还来自于在易于驾驭的介质上工作。程序员,就像诗人一样,几乎是仅仅工作在单纯的思考中。程序员凭空地运用自己的想像,来建造自己的“城堡”。很少有创造介质如此灵活,如此易于精炼和重建,如此容易实现概念上的设想。

EXACTLY.

“编程的快乐在于它不仅满足了我们内心深处进行创造的渴望,而且还唤醒了每个人内心的情感。”

当然,作者所提到的苦恼也是我们所经历的:

首先,苦恼来自追求完美。因为计算机是以这样的方式来变戏法的:如果咒语中的一个字符、一个停顿,没有与正确的形式一致,魔术就不会出现。

我在编程上的确是一个完美主义者。对于同事代码中出现的tab键,关键字或者括号后面缺少空格都深恶痛绝。最好是这程序是100%的优美,并且工作的很好,而不像我带头做的某个feature,最后测试中发现了上百个bug。

其次,苦恼来自由他人来设定目标、供给资源和提供信息。编程人员很少能控制工作环境和工作目标。……对于系统编程人员而言,对其他人的依赖是一件非常痛苦的事情。他依靠其他人的程序,而往往这些程序设计得并不合理、实现拙劣、发布不完整(没有源代码或测试用例)、或者文档记录得很糟。

呵呵,估计每个在公司里工作的人士都有吧。我们的产品,由于有很多leagacy的东西,还必须保证几乎100%的向后兼容性,所以大家都感到束手束脚,无法施展。

下一个苦恼—— 概念性设计是有趣的,但寻找琐碎的bug却只是一项重复性的活动。伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。程序编制工作也不例外。

当然,bug多讨厌那……不过,有时候debug也是很有意思的一件事情,特别是你最终找到了一个很难重现的bug的时候。

最后一个苦恼,有时也是一种无奈—— 当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时。

这个还好了,不过我还是觉得我们的产品推出的不够快,很多业界的新技术都不能体现,而这些新技术我认为都是很重要的,举例来说,微软的card space。可能也是不够被重视吧!

我开始喜欢这本书了,打算研读一下。另外一个发现就是这书其实是30年前写的,30年前就已经有人对软件业有这样的真知灼见,赞。

发表评论

电子邮件地址不会被公开。 必填项已用*标注