一些早期程序员的名字即使是软件开发新手也很熟悉。你可能从来没有见过一行比尔·盖茨写的代码或者用BASIC编写任何应用程序(更不用说Altair了)。但是你知道盖茨的名字,还有其他一些人的名字。
这真是一种莫大的耻辱,因为早期的微机时代(那时我们还没有统一称它们为“个人电脑”)已经有了许多出色的软件开发人员。他们中的一些人后来名利双收;其他人消失在历史的迷雾中。
1986年,苏珊·拉默斯做了一系列19个突出的程序员面试的微软出版社的书籍,程序员在工作。这些采访——很多都是作者抄录的她自己的网站几年前——给出了一个独特的观点来理解那些有成就的程序员的共同看法……发明了你今天使用的工具的人。
拉默斯的书仍然对自己的优点愉快,只是因为这是一群非常聪明的开发商在当时有几个相对宽肩站立很久以前说起自己的手艺。在重新阅读我的副本,我被提醒技术行业如何原料是,我们有多少竞争的标准通过了杂草(它已经多年,因为我看到了80年代末的数据库列表:R:基地,悖论,标枪,ANZA) - 然而,我们预期如何尽快实现人工智能。
我从这本书的五个程序员中挑选了五个来制作这台时间机器,剩下的人的命运主要留给勇敢的读者来练习。
(参见:无价!25个最有趣的复古高科技广告]
在这里,您将了解当时的程序设计从意见Dan Bricklin(VisiCalc),乔纳森·萨克斯(Lotus 1-2-3)中,罗伯特·卡尔(Ashton-Tate框架),比尔盖茨(BASIC上微型计算机),和查尔斯·西蒙尼(多平面)。
达恩·布里克林:软件VisiCalc
然后:该VisiCalc的电子表格是最初的“杀手级应用程序”,我们过去的意思是:“这个应用程序是你的原因。有买一台电脑。”I knew a mechanical engineer who snuck his Apple IIe into the office so he could run VisiCalc on business problems, when the waiting list for the Control Data mainframe was months long. VisiCalc, created byDan Bricklin和鲍勃Frankston到1983年,销量超过50万册;销售这款软件的公司“软件艺术”(Software Arts)由于法律纠纷而倒闭。
创新:“我去看看我的金融学教授[与VisiCalc的原型],谁是阻止他从打印抬头一看,他说:“好了,目前已经有财务预测制度和人民不会买万分之一,例如,做房地产“。......当然,现在哈佛需要你购买电脑之前,你可以去他们的商学院。”
在项目的发展:“人们正在编写自己的程序。任何使用电子表格的人都是在写自己的程序;只是现在的语言不同了……我们只是让用户自己做越来越多的编程,但他们并不知道。在Microsoft Word中使用不同的样式表是在编程;使用电子表格就是编程。”
关于软件开发业务:“编程有一个固有的家庭手工业的组成部分……任何大公司都可能有上百万的程序员在为某个想法工作,以产生一个更好的想法,但他们没有这样做,因为事情不是这样的。没有经济效益。有时候,一个程序背后的想法只是一个小小的创造性的努力。就市场营销而言,你需要一个大型的市场营销组织。但要做到这一点,有很多种方法,就像[出版]书一样……如果你看看软件业中那些最畅销的软件,你就会发现它们基本上都是由很少几个人写的。”
关于未来的计算:“产品的种种正在开发。人们都在说,‘关于网络,我们为什么不能连接在一起,这个东西是什么?’怎么样的出版系统,比如Mac上可用的便宜的吗?而真正伟大的那些都可以在更大的机器,像阿波罗和Sun?几年前,没有人想到,在内部出版将是一个主要使用电脑“。
关于计算机硬件的未来:“未来的个人电脑应该更像笔记本。我带着我的笔记本到处跑,为什么它不应该是一台电脑呢?嗯,这和我们所知道的PC是不同的。计算机技术将被用于诸如此类的各种新领域。让电脑跟踪你的一种方法是把它缩小。如果我们能把它缩小到可以随身携带的程度,为什么还要费那么大的劲把腿装上去呢?我们很快就能在一个非常小的空间获得巨大的计算能力。”
今天:布里克林经营一家小公司叫软件的花园其产品包括记录者为iPad的一个视频,开发人员介绍版权和开源,他也没有咨询和演讲。
布里克林跟我谈到软件的方法,编程职业选择等问题。
拉默斯问了许多程序员的“什么样的培训或思想,因而在计算机领域的最大生产力的类型?”但由于某种原因没有问布里克林的这个问题。我弥补了监督。
在很多方面,他说,他们的需求是不同的。然后,你需要在不同的领域,这可能不会像今天有用的经验。这当然是好事,有一个变化的背景;作为布里克林解释说,“对我来说,有多种不同的语言背景非常有帮助的,”因为他可以选择当前应用程序,而不是适当的语言“的一员,我知道。”有一个范围,他说,让你从被卡在一个系统中;当新的东西来一下,你是不是丢失。
但有一件事是必须的,也是必须的:产品发布经验。你应该知道,他说,“什么是真正完成一件事并把它完成。”这是非常重要的一点。”Nothing beats the experience of shipping software, to take something from start to finish. You get feedback from users, and find out what you did right and wrong. It's even better, he says, to do this with other people, from whom you can learn "what it means to get all the pieces together of the project complete enough for you to get it out the door."
布里克林的工作方式与他在20世纪80年代的工作方式基本相同。他说:“多年来,我一直在做一件事——我知道鲍勃·弗兰克斯顿(Bob Frankston)也这么做过——你必须在整个过程中找到一条路径,并首先实现它。”然后你回去再加一些。“打通这条路就像搭建脚手架一样。在它成为一个真正的产品之前,(应用程序)还要添加很多东西,”但你已经有了关键的路径。“它总是建立在一些有效的东西之上。”
他在1986年提出的软件开发本质上就是“家庭手工业”的前提是什么呢?That's still true, Bricklin says. "There still are small companies. And there are still small companies with leading companies in several [product] areas." The best chances for this may be the "App Store" marketplace and开源。Bricklin有一些成功的开源项目,他现在已经进入了应用程序的世界。“我现在做的一些事情就像我20年前做的一样,”他补充道。
有些产品更复杂,因此,“大公司做,只能由一家大公司有许多双手建造的东西,”他说。“这一直是这样,它看起来像它会继续下去。”
但个人仍然可以做有价值的事情,并从中赚钱。“如果我们忘记了这一点,我们就会失去很多创造力,”布里克林说。
乔纳森·萨克斯,莲花1-2-3
然后:1981年,乔纳森·萨克斯联手米奇·卡普尔开发和推广Lotus 1-2-3,这个软件将IBM PC带入了如此多的公司办公室。
在编程方法:“我们开发1-2-3所用的方法与产品的成功有很大关系。例如,1-2-3从一个工作程序开始,并且在整个发展过程中一直是一个工作程序。这与开发一个大程序的标准方法完全相反,在标准方法中,你要花很多时间制定一个功能规范,进行模块化分解,把每个部分交给一群人,然后在这些部分全部完成后再进行集成。这种方法的问题是,你直到最后才会得到一个工作程序。”This works fine with more than three people; they used a team approach with Lotus Jazz.
关于未来的计算:“创新的速度是相当慢。只有少数真正的新思路每十年。事实上,人们抱怨纸带这样的事情的好时光,但一些老的技术是非常好的,而且我”不能确定多少进度将随着时间的推移做......我们看到所有这些新的处理器,但因为每个人都希望所有的功能很多电源的丢失,并减缓都记录下来。”
今天:萨克斯是“大多是退役”这些天,虽然他有一个公司叫手指数字光色这家公司自1992年以来一直为摄影师制作软件。他最近一直在“玩转”Android手机软件,但还不知道他会用它做什么。
Sachs很友好地和我谈了他现在和过去对编程的看法。
我向他展示了上面关于开发“工作程序”的引用,这听起来很像我们今天所说的敏捷。他仍然以同样的方式编写软件吗?
“对我来说就是这样,”萨克斯说。然而,人们有自己的工作方式,每个人都有自己自然的风格。“后来我在莲花莲花遇到了一个家伙,他花了很长时间考虑这个项目。他会把整个程序的最终形式输入进去,然后对整个程序进行调试。这样做有一些优点。你预见了困难,就不会陷入死胡同。”But, he says, development takes a lot longer and there are things you don't realize until you start working on the program.
与“前沿时代”相比,有一件事已经发生了变化,那就是今天的开发人员通常只在很小的一块上工作。他说:“曾经有一天,你可以对一台给定的计算机了解一切。”在lotus之前的工作中,“我学会了编写计算机语言、数据库和科学软件。当我开始写电子表格的时候,我已经知道了所有的细节。”
阅读别人的代码仍然是学习,因为一个重要途径“当程序员读懂对方的代码,你可以看到,如果有人真的好还是不好,”他说。
萨克斯同意马尔科姆·格拉德威尔的观点离群值理论上说,你必须花一万个小时去做一件事,才能真正做好它。“这对编程来说是真的,我已经做了很长时间了,”萨克斯说。但他指出,这一代的程序员起步要早得多,整代的孩子都将更早地获得10,000小时的经验,这或许会让他们更早地在职业生涯中取得成功。
罗伯特·卡尔,框架
然后:在20世纪80年代中期,计算机世界渴望一套集成的软件,至少所有的杂志都这么告诉我们。两个主要的选择是阿什顿-泰特美术馆框架和Lotus Symphony。Robert Carr联合创立了Forefront并开发了Framework,它有一个电子表格,文字处理,数据库,电信和大纲,所有的都在软盘上。1985年,阿什顿-泰特收购了前沿科技公司,卡尔成为首席科学家——这是他接受《时代》杂志采访时的角色程序员在工作书。Borland在1991年收购了Ashton-Tate。
关于团队编程:“我试着和比我优秀的人在一起。我在Forefront雇佣的很多人都是比我更好的程序员,我从他们身上学到了很多东西。(施乐)ASD还向我表明,优秀的软件开发在很大程度上是由良好的初始设计和随后的大量非常扎实的工程构成的。”
软件设计:“我已经给建议。这块推迟编程,只要可能的。一旦你的代码语料库建设,这是很难改变的方向。它设置如混凝土,所以我挡住了,只要我可以,但我不能永远保持在我脑海中的设计。”
在管理开发:“我的角色是一个推动者,提出设计想法,并帮助团队得出结论。这不是我的结论,而是这群人的结论。偶尔会出现我们无法达成共识的情况,所以我们退后一步,检查时间、资金或空间的限制,然后从那里做出决定。最初的框架过程是一个非常迭代和进化的过程。”
在用户界面:“用户应该能够忘记,还有他们和他们的信息之间的程序其实,因为他们习惯的软件,他们心中只应手头的任务充满;他们不应该停下来想一想什么吩咐他们需要“。
关于未来的计算:“我希望我们能转向组件软件。然后,用户就可以用软件公司的插件模块替换程序的一部分,该软件公司知道如何更好地进行浮点运算或文字处理。这将是未来十年的趋势。但这是一个艰难的目标,因为我们讨论的是软件不同模块之间的接口,这是软件设计中人们最不了解的领域之一。”