ArcGIS研发背后的故事
——Esri研发总监Scott D. Morehouse北京师范大学讲演摘录
背景资料:SCOTT D. MOREHOUSE,Esri研发总监,ArcGIS产品总设计师,Esri GIS技术的灵魂,40年来引导全球GIS技术进步的核心人物。Scott Morehouse作为几代Esri软件的首席设计师,负责制定Esri整体软件技术战略,系统架构及产品规划,领导着一批高效的软件工程团队。从最初的 ARC/INFO 1.0,到现在的ArcGIS 10,Morehouse先生全面参与系统设计、搭建、发布及完善的整个过程。
9月16日下午,来华参加“2010 Esri中国华北区域用户大会”的Esri研发总监Scott D. Morehouse 先生,现身北京师范大学,为北京高校的GIS教师、学生以及GIS 从业者带来了一场主题为“How ArcGIS is made--Ideas and people behind ArcGIS”的报告,揭秘ArcGIS研发背后的故事。以下是这次演讲内容的摘录。
“我与Jack一拍即合!”
我生于1955年。在大学期间,我的学习涉及计算机科学、地理学、生态学、土壤学以及其他的地球科学。这让我开始以一个全新的视角看世界,也就是,将整个世界看作一个系统。
大学毕业后,我进入哈佛大学的一间实验室做程序员,开始软件研发,从事早期的GIS工作。但我们研发出的软件能否被真正的用户使用,是否可以进行很好的演示,这些问题始终困扰着我,而且我希望构建的是一种能够得以广泛应用,并具有长久实用性的软件系统。
1981年,我遇到了Jack Dangermond(Esri公司总裁)。当时Jack有一家很小的咨询公司,利用地理学和计算机提供规划和位置服务。在聊天时,我们发现对方具备的正 是自己需要的。于是,我与他一拍即合。随即,我把家从Massachusetts(马赛诸塞)搬到了California(加利福尼亚)。
就这样我进入了Esri。那年我26岁,是Esri最年轻的成员,还做了领导。
那时候Esri有30名员工,主要是做一些项目咨询,为客户提供数字化地图服务,并撰写项目报告。有时候,客户希望得到我们在工作中使用的软件,这样他们就可以更改数据,然后自己出具报告。
“这就是ARC/INFO 名字的由来。”
“ARC”一词来源于数学。在图形学中,有两个名词——弧线(arc)和点(node)。ARC/INFO 的第一项创新就是自动构面。你只需画一段弧线(arc),然后让系统去创建面状图。我们将这一方法称为数字化弧线-弧线-点,于是我们将建立的第一个系统 称为ARC。(这是我们一群从事软件开发的人想出来的名字,并没考虑到是否便于市场推广)这就是ARC的来历。
在最初几年,ARC是一个用来数字化创建面状图以及进行图形叠加的系统。后来,人们希望在上面附加属性图表,那时由于我们用文件管理系统去管理图表,因此我们将此称为INFO。所以,ARC指绘图,INFO指图表,这就是ARC/INFO 名字的由来。
当你在了解GIS历史的时候,你会发现ARC/INFO 十分强大。它可以在计算机上显示诸如点﹑线﹑面等地理特征,并通过数据库管理工具将描述这些地理特征的属性数据结合起来。尽管是一个非常简单的概念,但是 你可以用它做许多不同的事情:你可以通过只画“线”不画“面”来创建一个街道地图;可以只画“面”不画“线”来创建一个林区地图;等等。
“我只有一个要求……”
Esri对于软件研发有着一贯的宗旨。历经多年,始终未变。其中最重要的一点是要构建具有广泛适用性和长久实用性的系统。我希望建立的系统是一个不只为某 个项目和某位用户服务的系统。所以,当我开始我的第一份工作、当我和Jack Dangermond开始共事的时候,我就告诉他,我只有一个要求——我不会把时间用在只为一个用户、一个项目服务上,我的工作是为了持久性的发展。我们 会为满足用户需求去搭建系统,但同时必须明确这个系统也能够在未来满足其他用户的需求。
“合格的Esri程序员=计算机+地理学。”
ArcGIS 的研发工作有多个团队参与。我们有大约20个团队,例如geodatabase团队、3D团队、制图团队、网络系统团队,等等,还有负责发布工作的团队。 每个团队大约10到15人左右。团队中包含程序员和产品工程师。程序员负责系统设计,软件架构。产品工程师也负责系统设计,但同时还负责用户体验、文档制 作,以及软件测试等职责。他们在一起工作。比如,我和我的同事Cliff Brown,我负责管理程序员,他负责管理产品工程师,但是我们坐在一起,也工作在一起。
我对程序员的要求是不仅懂程序设计,还要懂地理学或者地球科学。符合Esri要求的、理想的软件开发人员要么本科学地理学专业,研究生学计算机专业,要么 反过来,本科学计算机,研究生学地理学。当然,我们也有纯计算机人员,他们做一些核心的软件工程、云等工作。软件开发人员必须知道为什么这样做,而不是只 知道能做什么;同样,一个地理学研究员也需要知道那些好的理论能否被应用于实际,还是它们只是学术的研究。
“我们按照一定的程序做事。”
首先,我们需要明确和理解接下来要做的事情,并设定一个时间段,比如,12个月,18个月,或者6个月,我们称这个阶段为“构想”。怎样判断我们的构想能 否实现?这需要将用户的要求、当前科技的发展、以及技术人员的兴趣、能力和天分,这三点结合起来。如果目前的科技还无法满足用户的要求,那就无法实现。这 就是为什么我在一开始说,我们绝不能对用户惟命是从。我希望,用户需要我们是因为我们可以为他实现价值增值,让他的公司业绩更好,而不是因为我们能写代 码。
当然,对于用户的需求,我们要认真倾听。在用户的需求中,一些是大问题,比如,“我们希望系统更加安全”,“我们要求可以用在移动设备上”;另一些是小故障,比如,“软件运行出现了bug”。这两种需求我们都负责解决。
随后,我们进入操作阶段——搭建软件系统、设计软件特性,就像建筑师设计建筑物那样。先要有个想法,然后开始设计,随后发现这个想法并不那么好,于是从头 再来,设计,然后实施。进而可能发现这个设计还是不好,于是又从头来,再设计。这是一个循环,我们可以从中学到很多 。
接着,对软件进行测试,确保运行没有故障;测试软件的实用性,看是否满足用户的需要。我们会邀请用户过来参与我们的测试,我们称这个阶段为“整体测试”,用整个系统解决问题。
最后是实施阶段。目前我们正在推广ArcGIS 10,其中包括一部分本地化的工作,ArcGIS 10中文版即将发布。
“29年从未升职。”
很多软件开发员都在Esri工作了很长时间,从中积累了相当丰富的知识和经验,他们甚至已经将软件开发作为了自己全部的职业生涯。一部分软件开发员我们称 为“高级开发员”。比如,我有个同事一生都在致力于图形叠加,他就像个地图科学家。另一些开发员则是团队领导者。这是一个颇具挑战性的工作。因为他们要在 设计程序的同时,激励、指导团队中的其他成员。我们称之为“开发员领导者”。
而我自从1981年进入Esri后,就一直从事软件研发工作。这么多年过去了,我从来没有升职。因为从进入这家公司开始,我就负责所有与计算机相关的事情,事无巨细。我从来没想过如果我不再管这些事了,这些工作该交接给谁。
“做自己乐于做的,是一种享受。”