我岁数已经很大了。
但是认真来说,那个时候最大的技术就是创造、创新、想象力,不管你怎样叫它。不像现在,那时候没有Google,没有StackOverflow,开源项目也不那么容易获得,甚至几乎没有可以发邮件求助的人。你仅仅是一个人在孤岛上编程,任何你需要弄懂或解决的东西,都得自己亲自去做。有时候你会取图书馆搜索书籍或期刊,或者在用户小组或会议上问问别人,如果你足够幸运的话,你可能认识一个程序员。不管你想做什么事,你都得靠自己取完成它。即使世界上其它地方有人在解决同样得问题,你可能也不知道。
现在你要做得就是搜索、理解、评估。你可接触到世界上最聪明的人(有时候是最傻的)。你所需要的东西别人还没有做过的概率是很小的,真正的技能就是找到它,把它和你的需求联系起来,决定它是不是有用的或者可以调整的,它的质量是否过关。
跨越了这两个世界,我怀念那些年不得不苦思解决方法却又进展甚微的日子,然后我也对一个人能如此轻易找到自己想要的东西的方面感到惬意。很难准确地说出来我们不得不亲自解决多少问题,并且我们也不知道有没有其它的替代方案,这真是一种负担。当然现在看来八十年代就像中世纪一样。我们没有现在我们所拥有的,但是我们仍然解决问题,完成复杂的软件(in boxes on floppies!)担心质量和完工问题,以及要添加哪些功能。
我们那个年代物质匮乏,不像现在有那么多可以免费使用的东西。现在的问题是有太多的质量不一信息,经常是过时的,错误的,或者是文档不清晰的。首先你必须要直到如何提问,通常你google搜到的结果是通过包含的关键字间接描述你的问题的,经常会导致正确的关键字没有被包含从而使搜索结果不准确。然后你得到了500000条结果。现在你必须从这些搜索结果中找出你想要的,尽力回答你所提的问题,或者找到一个算法或想法,然后就要开始愉快的评估旅程了。这是我需要的吗?这是不是已经落伍了?这对我来说有意义吗,我理解它吗?这有可能整合到我已有的东西中去吗?这个库值得信任吗,是否还在维护呢?
这对80年代的程序员来说是一个不同的技能。他们习惯了那种信息匮乏的状态下必须想到解决办法或者通过某些方法创造出来的状态。当然那个时候程序员很少(大概是现在数量的1%或0.1%),除非你很擅长自己解决问题,否则你是可能在一些大公司之外的公司里当程序员的。现在似乎一个不怎么拥有想象力的人也能成为一个不错的贡献者,你可以在网上学习,可以在开源上面做一些事,你可以看看别人的想法然后跟着做。并不是那个时代的程序员比现在的更聪明,只是所需要的技能不同。
我不得不成为那个时候的编程比现在更有乐趣。那时候程序员的职位没有像现在分的这么细,正是这种细致的分工消耗了程序员大部分时间,那时候我们能把一天大部分的时间用在实际的编程,思考解决方法,试错并且寻找更聪明(无贬义)的方法做事。没有故事点,用户故事,scrum(一种迭代式增量软件开发过程),grooming(不知为何意),没完没了的电汇和视频会议,上千封的邮件和无用短信息要去回复,当然还包括在类似HackerNews这样的网站上看新闻。去上班并且真正知道我将要做的所有事对编程来说应该是一个有趣的经历,但是这种现象现在我见不到了。有时候在工作时间由于我几乎没有写代码(虽然敲代码是我应该做的事因为我们人力不足)因为我和我的同时真的怀念那原始的时光。
有时候你在看起来没有生产量的阶段花费了很多时间(有时候虽然没有编程却仍很有用),通常你通过查找并调整解决方案解决了你们的问题虽然有时候这看起来像是作弊。当然这是好事,现在的开源世界允许我们站在巨人的肩膀上建造自己的工程,我不信有谁会不喜欢StackOverflow上的一个好的解决方案。现在的世界需要一些我当时不具备的一些知识:服务器,网络,云,安全,互联网,移动设备以及奇妙的用户界面和用户体验。现在的情况比预想的还要复杂,虽然有如此多的轮子可以使用。在80年代所有的东西都是新的,通常你会发现自己是世界上唯一一个处理这种问题的人(至少是你所知道的),这种现象仍然在发生在对我们大多数人中间并不存在。尽管如此,现在的新项目仍然是建立在其他人已经做过的基础上因为你可以知道它,阅读它的源代码,从中学习。
我们那时候几乎没有选择,现在看来很奇怪。我们用C语言在MacOS上编写我们的APP。我们开发Trapeze,Persuasion,Deltagraph的9年里我们使用唯一一个模糊的开源工具是一个被破解的lex和yacc,我们用来构建Trapeze公式解析器,我在Trapeze使用一个名叫MacExpress的商业UI库。Deltagraph是一个全部由我们自己编写的大规模应用程序。甚至3D引擎和Postscript驱动都是基于basic(我通过使用Illustrator来处理Postscript,因为它的文件格式是Postscript,也就是PDF的前身)。现在开发一个APP不使用开源软件或商业框架的很少见。
这并不是说那个时候的程序员比现在好,只是拥有不一样的技能,编写不同类型的程序罢了,绝不是说我们怀念那个时代的所有东西。我总是感到好奇朝鲜人是如何编程的——他们知道自己与外面世界的联系是受限的吗?知道已经有答案在那里放着了你却不能得到它们,这很让人沮丧。
那个时候我绝对想象不到现在世界的样子,整个世界都是可搜索、可获得、甚至有时候是有用的。我经历过两种时代,当世界变化的时候我在不知不觉中设法调整自己的必要技能,想起来真的是很不可思议。现在就是现在,不是过去,未来也不会像现在这样。从长远眼光来看,我不知道未来会是什么样,或许有一天再也不需要现在的程序员了,那时候人们会回顾现在并且对我们如何完成编程任务感到惊奇。
很多日子当我希望自己所有的工作就是想象之前从来没有被做过的事,解决一道不可能的问题,加速进入未知的未来。但是发现那种工作是我现在所不具备的一个技能。可能我会去google上搜一下。
** 全文完(2017.3.22) **
不完善之处日后抽空修改,翻译不得当的地方请指正并多多海涵