一些早期的程序员名字是熟悉的甚至是软件开发人员是新手。你可能从来没有见过一行比尔·盖茨写的代码或者用BASIC编写任何应用程序(对于Altair更不用说了)。但是你知道盖茨的名字,还有其他一些人的名字。
这是一个该死的耻辱,因为早期的微机时代(我们没有统一称之为“个人电脑”还)有许多辉煌的软件开发者。他们中有些人接着更大的名利;其他消失在历史的迷雾。
1986年,苏珊·拉默斯(Susan Lammers)在微软出版的一本新书中对19位著名程序员进行了一系列采访,工作中的程序员。这些访谈 - 其中许多作者对转录自己的网站几年前 - 提供一个独特的视角为多才多艺的程序员......是谁发明你今天使用的工具的人的共同看法。
Lammers的书就其本身的优点而言仍然是令人愉快的,这仅仅是因为它是一群非常聪明的开发人员在相对很少的时候谈论他们的工艺。在重读我复制,我被生科技产业是如何提醒,有多少竞争标准我们不得不杂草通过(我看到已经年了- 1980年代后期的数据库列表:R:基地,悖论,标枪,ANZA)——然而,很快我们将如何实现人工智能。
我选择了这本书的程序员五个这段时间机器,留下其余的命运主要是为勇敢的读者的练习。
[ 也可以看看:无价的!25个最有趣的古董科技广告]
在这里你会学到当时的电流编程意见达恩·布里克林(VisiCalc的),乔纳森·萨克斯(Lotus 1-2-3),罗伯特·卡尔(阿什顿泰特框架),比尔盖茨(基本的微型计算机),和查尔斯·西蒙尼(Multiplan)。
Dan Bricklin: VisiCalc
然后:的VisiCalc电子表格是原来的“杀手级应用”,由我们用来表示:“这个应用程序是你的原因有买电脑。”我知道的机械工程师谁悄悄他的苹果IIe上到办公室,以便他能在业务问题上运行软件VisiCalc,当控制数据主机的等候名单是个长。VisiCalc的,通过创建达恩·布里克林和鲍勃Frankston到了1983年销量超过一百万半份;出现在市场公司,软件艺术,由于崩盘,以法律战。
创新:“我(带着VisiCalc原型)去见我的金融学教授,他很沮丧。他从打印出来的数据中抬起头,说:“嗯,金融预测系统已经有了,但是人们不会购买微型计算机,比如,用于房地产。”“…当然,现在哈佛要求你在进入商学院之前先买一台电脑。”
关于方案编制的演变:“人们正在编写自己的程序。任何使用电子表格的人都是在写自己的程序;只是现在的语言不同了……我们只是让用户自己做越来越多的编程,但他们并不知道。在Microsoft Word中使用不同的样式表是在编程;使用电子表格就是编程。”
关于软件开发业务:“编程有一个固有的家庭手工业的组成部分……任何大公司都可能有上百万的程序员在为某个想法工作,以产生一个更好的想法,但他们没有这样做,因为事情不是这样的。没有经济效益。有时候,一个程序背后的想法只是一个小小的创造性的努力。就市场营销而言,你需要一个大型的市场营销组织。但要做到这一点,有很多种方法,就像[出版]书一样……如果你看看软件业中那些最畅销的软件,你就会发现它们基本上都是由很少几个人写的。”
在未来的计算:“现在各种产品都在开发中。人们会说,‘那网络呢,为什么我们不能把这些东西连接起来呢?那么出版系统呢?比如Mac上那些便宜的出版系统?那些在更大的机器上,如阿波罗和太阳上,可以找到的真正伟大的东西呢?几年前,没人会想到内部出版会成为电脑的主要用途。”
关于计算机硬件的未来:“未来的个人电脑应该更像笔记本。我带着我的笔记本到处跑,为什么它不应该是一台电脑呢?嗯,这和我们所知道的PC是不同的。计算机技术将被用于诸如此类的各种新领域。让电脑跟踪你的一种方法是使它小型化。如果我们能把它缩小到可以随身携带的程度,为什么还要费那么大的劲把腿装上去呢?我们很快就能在一个非常小的空间获得巨大的计算能力。”
今天:布里克林经营着一家小公司软件的花园谁的产品包括记笔记的iPad和视频,开发者对版权和开放源码的介绍他还做咨询和演讲。
Bricklin和我讨论了软件方法论、编程职业选择和其他问题。
Lammers问过许多程序员,“什么样的培训或思维方式能在计算机领域产生最大的生产力?”但出于某种原因,他没有问Bricklin这个问题。我纠正了这个疏忽。
他说,在很多方面,他们的需求是不同的。然后,你需要在不同领域的经验,这些在今天可能不太有用。拥有不同的背景当然是好事;正如布里克林解释的那样,“对我来说,拥有多种语言的背景非常有帮助,”因为他可以为目前的申请选择合适的语言,而不是“我知道的语言”。他说,有一个范围可以防止你陷入一个系统中;当新事物出现时,你就不会那么迷茫了。
但有一件事是必须的,也是必须的:产品发布经验。你应该知道,他说,“什么是真正完成一件事并把它推出门外。”这是一件非常重要的事情。”没有什么能比得上交付软件的体验,从开始到结束。您可以从用户那里获得反馈,并找出您所做的对与错。他说,与其他人一起做这件事会更好,你可以从他们那里学到“把项目的各个部分都做好,足以让你把它推出公司意味着什么”。
布里克林计划多,他在上世纪80年代做了同样的方式。“有一件事我一直在做的,很多年 - 我知道鲍勃·弗兰克斯顿做了,太 - 你通过整个事情要搞清楚的路径和实施,首先,”他说。然后你回去添加更多。“获取路径是通过像建筑脚手架,很多更是穿上[应用]这是一个真正的产品之前,”但你必须到位的关键路径。“它总是建立关的东西的工作。”
什么关于他的前提下,在1986年,软件开发本质上是一个“山寨产业?”这仍然如此,布里克林说。“仍然有小公司。而目前仍有小公司与领先的公司在几个[产品]的地区。”这样做的最好的机会可能是“应用程序商店”市场,开源。布里克林有一些成功的开源项目,他现在是在应用程序世界。“一些我在做什么是像20年前,我在做什么,”他补充道。
他说,一些产品更加复杂,因此,“大公司做的事情只能由大公司的许多人来做。”“一直都是这样,而且看起来还会继续下去。”
但个人仍然可以做的事情是值得的,他们可以赚钱。“如果我们忘记了,我们会失去很多创意,”布里克林说。
乔纳森·萨克斯的Lotus 1-2-3
然后:1981年,乔纳森·萨克斯与米奇•卡普尔开发和推广的Lotus 1-2-3,这带来了IBM PC到这么多企业的办公室软件。
在编程的方法:“我们用于开发1-2-3的方法有很多做的产品的成功。例如,1-2-3开始与工作程序,它仍然是整个发展过程中一个工作计划。......这是开发一个大项目,你花了大量的时间和工作了功能规范,做到了模块化分解的标准方法正好相反,给每一块一堆人,并整合件当他们全部完成。与该方法的问题是你没有得到一个工作程序,直到最后一刻。”这适用于三个以上的人罚款;他们使用与Lotus爵士队的办法。
在未来的计算:“创新的速度相当缓慢。每十年只有几个真正的新想法。事实上,人们抱怨纸带和类似东西的美好往昔,但有些旧技术真的很好。我不确定随着时间的推移会取得多大进展。我们看到了所有这些新的处理器,但由于每个人都想要所有的功能,很多功能都被丢失了,而这减慢了一切的速度。”
今天:萨克斯现在“基本上已经退休了”,尽管他在一家叫做“高盛”的公司工作数字光色,其中,自1992年以来,已经取得了摄影师的软件。他最近一直“玩弄”与Android手机软件,但仍然不知道他会用它做什么。
高盛还跟与我谈论关于他的节目当前和过去的观点。
我给他报价上述关于发展“的工作方案”,这听起来很像是我们会打电话敏捷今天。难道他还编写软件以同样的方式?
“对我来说就是这样,”萨克斯说。然而,人们有自己的工作方式,每个人都有自己自然的风格。“后来我在莲花莲花遇到了一个家伙,他花了很长时间考虑这个项目。他会把整个程序的最终形式输入进去,然后对整个程序进行调试。这样做有一些优点。你预见到了困难,你就不会陷入死胡同。”但是,他说,开发需要更长的时间,有些事情直到你开始工作时才会意识到。
已经从“边疆日”改变的一件事是,今天通常是开发人员处理的只有一点点的小片。“有一天,当你会知道一切有了解给定的计算机,”他说。在他之前的位置预莲花,“我得写电脑程序语言,数据库和科学的软件,到时候我来写,我知道所有的作品的电子表格。”
阅读他人的代码仍然是一种重要的学习方式,因为“当程序员阅读彼此的代码时,你可以看到一个人是否真的优秀,”他说。
高盛同意马尔科姆·格拉德威尔的离群值理论上说,你必须花一万个小时去做一件事,才能真正做好它。“这对编程来说是真的,我已经做了很长时间了,”萨克斯说。但他指出,这一代的程序员起步要早得多,整代的孩子都将更早地获得10,000小时的经验,这或许会让他们更早地在职业生涯中取得成功。
罗伯特·卡尔框架
然后:在80年代中期,计算世界是一个综合的软件套件的向往,或者至少所有的杂志告诉我们这样。两个主要的选择是阿什顿大老骨架和Lotus Symphony的。Robert Carr联合创立了Forefront并开发了Framework,它有一个电子表格,文字处理,数据库,电信和大纲,所有的都在软盘上。1985年,阿什顿-泰特收购了前沿科技公司,卡尔成为首席科学家——这是他接受《时代》杂志采访时的角色工作中的程序员书。Borland公司收购了阿什顿 - 泰特在1991年。
在团队编程:“我试着自己周围的人谁是比我好,很多我已经聘请了前沿的人都更好的程序员比我,我也从他们身上学到了很多东西。[富士施乐] ASD还向我展示了伟大的软件开发主要是由良好的初始设计,此后,很多非常坚实的工程“。
软件设计:“我得到的一条建议是,尽可能多地推迟编程。一旦建立了代码库,就很难改变方向。它像混凝土一样凝固。所以我尽可能地拖延时间,但我不能永远把这个设计留在脑海里。”
管理开发人员:“我的角色是一个推动者,提出设计想法,并帮助团队得出结论。这不是我的结论,而是这群人的结论。偶尔会出现我们无法达成共识的情况,所以我们退后一步,检查时间、资金或空间的限制,然后从那里做出决定。最初的框架过程是一个非常迭代和进化的过程。”
用户界面:“用户应该能够忘记他们和他们的信息之间有一个程序。事实上,当他们习惯了这个软件后,他们的大脑应该只充满手头的任务;他们不应该停下来思考他们需要什么样的命令。”
在未来的计算:“我希望我们能够朝着组件软件移动。然后,用户将能够与插件模块从软件公司,它知道如何做浮点运算或文字处理好更换一块的方案。这将是在未来十年的趋势。但是,这是一个艰难的目标,因为我们正在谈论的独立软件模块,在软件设计了解最少的地区之一之间的接口。”