首页 > IT资讯 > 正文

你得会写代码。。。

过去几年里,我把相当多一部分的时间花费到寻猎GIS分析师上。然后呢,我注意到几条规律:

找工作的分析师真的很多。每次我发布一个招聘信息,都会收到至少100份包含着形形色色从业经验和文化程度的个人简历。

这其中的大部分人,我把这类人叫做前期淘汰者,从来没有做过跟任何语言代码有关的事。包括Python,这个早就被ArcGIS的一系列版本推广的语言。

而那些真正有一些代码经验的人,却从不在简历里面体现出这点。太奇怪了,我无法想象为什么有人在展示自己时会选择把相关的技能或是经验有所保留。


我一直在各种场合表示,个人觉得现今掌握一些代码技巧对任何一位想被雇佣的GIS分析师都是必要的。我的理由显而易见。

“GIS”中的“IS”代表的是“Information System(信息系统)”,换句话来说就是“电脑”。事实上,上世纪80年代教我的一位教授曾说过,信息系统技术上来讲并不一定非要包含电脑,但现在都2013了,就算是调制一杯咖啡都要涉及到电脑。

“GIS”中的“G”代表“Geography(制图)”制图是强数学性质的领域。对于精度的关注上,恐怕我得说制图中有些阶段的确并不是那么的强数学。或许换这种说法才能充分证明我的观点:GIS提供地理服务的这门科学的基础包含了大量的数学知识。举个实例来说,坐标系统这个制图学中小却重要的部分就能很快地把专业人员和入门菜鸟给区分开来。

让计算机做数学运算是通过代码实现的。


现代GIS软件复杂难懂,包含了众多的功能。就拿ArcMap或QGIS默认的用户界面来说,随处可见各类工具。换句话说,需要去点的工具太多了。或许也凑合,可我敢打赌,界面上的工具连软件真正功能的10%都没展示出来。

这是由于制图中能用到的使用案例太多,最后在设计中便成为软件默认的一部分了。这也是为什么这些工具,以至于大部分其他的GIS软件,都是基于API的原因。这些API提供了软件自身最丰富的功能,用户可以根据需要自己定制。这就意味着写代码。无论是ArcGIS还是QGIS,都意味着使用Python,当然,也是可以选择其他方案的。



如果你选择只使用用户界面上的工具的话,就有两种损失:

你只能寄托于他人的同情,来抽空帮你构建需要的定制。

你放弃对自身培养已经广泛传播的技能,让能力退化。

所以某种程度上你还是要会写代码的。或许你需要把自己常规的工作自动化处理,或是从一切非主流的格式里读取数据,或是使用工具箱中还没有的属于你自己的GIS独门秘技,或是让网络地图美的跟歌曲一样,或是其他种种相关的原因。幸运的是你手头边就有大量的信息资源。这就是开源地理空间软件。我听过这样一类抗议:我早在学校掌握好了ArcGIS,而且用的很舒服,也特别喜欢它。那好,那你继续用好了。

但是当你使用ArcGIS的时候,不妨看看源码里包含的那些开源库,像是Shapely、或是GEOS,或是GDAL,还有其他经常用到的那些(也包裹在ArcGIS的外衣下的)工具。你在学校学过数学吧,当时你不就挺了过来最后还搞懂了它么。那么现在一样了解下那些聪明的程序员在写代码时具体采用的理念吧。这样做能轻而易举地让你更喜欢使用ArcGIS,因为你能看到内部的运作方式。事实上,即便ArcGIS没有直接使用上述的某个开源库,它也被ESRI用相同的算法实现了。如果这能让你理解具体的行为过程,并能帮你更好地把自己的定制绑定到他们封闭的API上,就够了。

我讲这些是因为这对我很管用。我是一个注重自我提升并充满激情的程序员。最初听到“GIS”这个词,还是在大学的一门课上,一瞬而过。然后,我第一份工作就是GIS领域的。不得不说,当时我还有好多功课要做。大部分要学习的内容都来自周围一群十分耐心的地理学家们。我(带着一知半解的理解)用来探索的第一个工具集就是MapInfo和ESRI的各类工具。我曾沉浸在地理学家们讲给我的那些内容,并用这些API组合成一些有用的工具,但直到我开始阅读开源工程的那些源码的时候,主意才真正一个一个的冒出来。之后,在我目前所展现的,是软件真正所做的事情。

现在,我的工作中夹杂着开源代码和商业工具,主要的商业工作还是源自ESRI领域。然而,接触开源软件的经历使我更加完美,因为它加深了我的理解。

并不是所有人都能成为一名专业的软件程序员,这需要整天带着明确的心态练习。但是,2013年的GIS市场中,任何人都需要了解一类代码,无论是Python,还是R,还是JavaScript,等等。

从另一方面来说:过去的一年以来,在看到了分析师的不足后,我也张贴了招聘软件程序员的广告。申请的人很少,我看到的大部分人都是很长时间没工作过,没有GIS背景,相当长的时间都坚持使用过时的工具。这些就像申请人希望抓住的青鸟。简短的说,稍稍的提供是无法满足对GIS专业训练过的程序员的需求的。有些代码的能力,并把它在自己的简历里展现出来,能够在需求岗位的100个分析师中脱颖而出。


上一篇:UC浏览器开发语言的选择
下一篇:2013 年你应该关注的 10 个开源软件

PythonTab微信公众号:

Python技术交流互助群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854