做程序员有自己的职业乐趣,首先是一种创建事物的纯粹快乐,其次,快乐来自于开发对其他人有用的东西,第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果,第四是学习的乐趣。最后,乐趣还来自于工作在如此易于驾驭的介质上。程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空地运用自己的想象,来建造自己的“城堡”。编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感。
职业的苦恼首先,必须追求完美。因为计算机也是以这样的方式来变戏法:如果咒语中的一个字 符、一个停顿,没有与正确的形式一致,魔术就不会出现。实际上,我认为学习编程的最困难部分,是将做事的方式往追求完美的方向调整。 其次,是由他人来设定目标,供给资源,提供信息。编程人员很少能控制工作环境和工作目标。用管理的术语来说,个人的权威和他所承担的责任是不相配的。不过,似乎在所有的领域中,对要完成的工作,很少能提供与责任相一致的正式权威。而现实情况中,实际(相对于正式)的权威来自于每次任务的完成。 对于系统编程人员而言,对其他人的依赖是一件非常痛苦的事情。他依靠其他人的程序,而往往这些程序设计得并不合理,实现拙劣,发布不完整(没有源代码或测试用例),或者文档记录得很糟。所以,系统编程人员不得不花费时间去研究和修改,而它们在理想情 况下本应该是可靠完整的。 下一个烦恼——概念性设计是有趣的,但寻找琐碎的 bug 却只是一项重复性的活动。 伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。程序编制工作也不例外。另外,人们发现调试和查错往往是线性收敛的,或者更糟糕的是,具有二次方的复杂 度。结果,测试一拖再拖,寻找最后一个错误比第一个错误将花费更多的时间。 最后一个苦恼,有时也是一种无奈——当投入了大量辛苦的劳动,产品在即将完成或 者终于完成的时候,却已显得陈旧过时。可能是同事和竞争对手已在追逐新的、更好的构思; 也许替代方案不仅仅是在构思,而且已经在安排了。 现实情况比上面所说的通常要好一些。当产品开发完成时,更优秀的新产品通常还不 能投入使用,而仅仅是为大家谈论而已。另外,它同样需要数月的开发时间。事实上,只有实际需要时,才会用到最新的设想,因为所实现的系统已经能满足要求,体现了回报。 我们所面临的挑战和任务是在现有的时间和有效的资源范围内,寻找解决实际问题的切实可行方案。
编程是一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。 正如幸福的人都是相同的,不幸的人各有各的不幸,身为程序员有属于自己的乐趣与苦恼,古而有之,不是只有你编程是苦的,也不是每个人生下来编程就特别厉害,大神们只是花费时间比你更多,比你更加努力而已。端正态度,之后就是努力坚持了。