麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS心得」如何入门(坑)GIS开发

已经不止一次在群里看到小伙伴问如何入门GIS开发了,虽然我目前也是一个半吊子,但从一个连Office都不会用的电脑小白,到毕业后从事了相关的开发工作,走过一些弯路,也有一点心得。最近看到又有当年和我一样困惑的小伙伴,所幸抽时间写点东西,万一能让你也感同身受或者有所帮助呢。

PS:仅仅是个人的经验分享,大概率不具备100%的可复制性,仅供参考。

以目标为导向

以目标为导向,这是核心,也是我个人所找到的最适合我自己的方法

开始的时候是这样的,我在群里问:前辈们,我想入门GIS开发,应该怎么做啊?有哪些推荐的教程或者书籍吗?

我得到的答案通常是这样的:你需要学习C、C++、Java、Python、HTML、CSS、JavaScript、Flex、C#、MFC、数据库SQL。还要学地图学、测绘基础、图形学...

得到答案的我,如获至宝,于是当天立马去图书馆借了《21天精通C++》,用自己电脑装环境1天,看书1天,电脑上实践1天,好TM烦啊,我性格里可能不适合吧,哎,放弃了。

通常上面的过程会持续几次,借的书也会有不同,今年暑假拿的Java,寒假拿的Windows编程。但最终就是驮一堆书回家,回来翻书不超过50页,并导致行李箱里连带特产的地方都没有(主要也是我懒)。

后来和一位大神学长聊了下,他跟我分享了他做OpenGL小游戏的经验,我突然发现这种先挖地基再盖房是不适合我的,或者说学技术和挖地基再盖房的类比并不完全等价。这种以技术为导向的学习方式成本并不划算,因为上述所有的技术点,随便拿出一点来,都可以做得很深,一个还没毕业的本科就需要把上面的技术都精通,可能吗?对我来说是不可能的。

所以我就换个思路,既然从0到1不行,那我就从1到0。技术只是个工具,我先要想清楚的是:我要做什么。比如,当时要参加二次开发大赛,就想做一个有关地震的GIS管理系统。

TIPS:有一个设置目标的小技巧,在你技术方面几乎什么都不太懂的情况下,不要立太大的Flag,比如上来就说,我要做一个微信、做一个抖音。与之相反,定的目标适当的小,比如做一个给自己用的跑步轨迹管理系统。

目标拆解

有了上面的目标导向,不要着急打开你的Visual Stuido,我们要明确几个问题。比如:

  1. 这个系统是运行在哪里的,是手机里的APP,还是网面上的网站,还是电脑里的程序?
  2. 这个系统的功能是什么?展示地震点的POI?显示波型图?实时推送地震信息?地震知识科普发布?
  3. 这个系统需要数据,数据流是什么?用户的完整的流程是什么?
  4. ...

通宵想明白了上面的问题,会有不少产出,比如系统功能架构图,需求文档,数据流图,用户流程图等等。

找解决方案

有的上面的目标导向和拆解,下面这一步就是找解决方案了。这一步的方式有很多,比如我最喜欢用Google之类的搜索引擎,如果还诸多不懂,可以把找到的解决方案和上面拆解好的问题去找一些有经验的前辈提问(是的,提问也是有技巧的)。

通常来说,你会得到更加具体而可行的解决方案,而不是去把C++和SQL先学会,先看看Python吧这种笼统的回复。

比如:使用PostGIS + PostgreSQL 来管理你的空间数据、LeafLet来展示地震点、使用Spring boot来写接口等等。并且你会惊奇的发现,不同的功能模块会有不同的解决方案,使用Python也行,使用Java也行,甚至使用Go或者NodeJS也行。有的解决方案甚至可能让你直接越过技术的鸿沟,先来实现功能。比如:使用百度地图API展示地震点,你都不需要自己发布地图服务了。

你看,这相对于你开始得到的答案

需要学习C、C++、Java、Python、HTML、CSS、JavaScript、Flex、C#、MFC、数据库SQL。还要学地图学、测绘基础、图形学

是不是精简了很多?你可能只需要里面的几样,就可以实现你的GIS系统。

技术通关

找到解决方案后的技术学习就比较有针对性了,比如直接怼着教程搭建数据库环境,搭建Spring Boot的开发环境,然后用不到半天的时间写出一个后端接口的Hello World!剩下的半天时间开始看百度地图的开发文档,然后用不到半天的时间复制出一个地图POI展示的页面。

你可能会说,写个Hello World 有什么难的,我已经会用各个语言写Hello World了。可是这不太一样哦,因为你明确知道你要实现什么,比如你的目的是要实现查询2022年以前某区域所有发生过地震的POI数据那么你可能:

  1. 先写一个接口返回Hello World
  2. 这个接口支持传参数,可以返回用户输入的区域和时间范围
  3. 接口通过数据库查询返回数据
  4. 格式化数据,返回给前端
  5. ...

这和你看着书敲Demo是两种完全不同的体验,通过不段的任务拆解把你的需求拆解成一些小的任务,然后不断的完成小任务获取的快速的反馈,这种感觉甚至比玩游戏还爽。

会不会学不深入

可能不少朋友会有疑问,这样学的会不会不踏实、不深入?

我的回答:当然会。

但这个学习的过程的目的并不是深入,是入门,不必想着一口气吃成一个胖子,想通过一次学习就精通C++、精通高并发,这怎么可能呢?

这种方式的好处在于让你可以快速走通一条Happy Path,后面基于这条Happy Path,可以让你对xx系统构建有更体系化的认知。而当一条知识线路串起来之后,就像房子上了梁,剩下的深入学习便是添砖加瓦。

为什么要做开发

有人可能会有疑问,我之前不是写过一篇文章《为什么我最近热衷于发“GIS铁饭碗”》,开发那么苦,职业生涯又短,做开发还有前途吗?

从我个人的角度来说,我并不后悔自己当初这个选择,为什么?因为自己的家庭条件。毕竟开发给的工资要高一点,它虽然苦,但也的确给了不少像我这种农村出来的孩子在城市立足的支点,并且通常也会觉得开发其实挺有趣的,它会让你获得成就感,不用应付人,不用喝酒,和机器打交道比和领导打交道轻松多了。另外,开发也有铁饭碗,不少事业单位、国企也招GIS开发的人才。

后话

做这一行也有一些年了,从我个人的角度出发,进了开发这个领域,尝试忘掉一些GIS,把GIS当作加分项,可能会更好一点,不必给自己设限,这个是CS的,这个是GIS的,你只做GIS的。

之前看过不少论断说,GIS的未来在图形学,不必学Vue Angular这些没用的东西,可以随便找一个人来写Vue之类的。个人还是持反对意见,一个我们不得不承认的现实就是社会的分工是越来越细致的,但同时你的岗位的薪资也从来不是你所认为的技术难度决定的,而是市场,如果你有接触过公司人力资源的一些成本的话,你甚至可能发现,一些好的外包比你的工资还要高。我当然也认为研究越底层越有技术难度,但如果你追着某一项技术一直往下深入,你会从一直从计算机科学追到数学再到物理学化学,最后就成了砂中炼硅。所以我一直认为,如果进入了职场,用技术吃饭,就不必那么在乎所谓的专业、学科、技术的界限,不断的锻炼自己持续学习及解决问题的能力可能更重要一点,把技术当作工具就好,用什么学什么,什么挣钱学什么,搞技术就是为了变现。

最后,不要因为自己不是科班出身而觉得低CS的一等,其实没什么大不了的,术业有专攻而已。之前有一位公司大佬找我抱怨说:你看现在招的这些非计科班出身的开发就是不行。我幽幽的说:我也是非科班的。。场面一度有点尴尬,但技术这点事,你花上时间和精力,多实践多思考,其实也没什么大不了的。

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)