年初時寫的《一個GISer的使命》那篇文章中,提出了GISer的技術提升路徑可以分為四個大的階段:
- 階段一,能使用商業GIS軟體去解決問題。
- 階段二,能使用開源GIS軟體去解決問題。
- 階段三,有能力去解決開源GIS中的問題。
- 階段四,有能力去解決GIS行業前沿問題。
在階段一、階段二中,我們屬於GIS二次開發人員,在階段三、階段四中我們開始慢慢轉向GIS底層開發人員。
這種轉變不是天天做專案就會自然的實現的,天天做專案會讓我們成為一名GIS二次開發老司機,但永遠不會成為GIS底層開發的賽車手,他們之間差的是對某些底層專業知識技能的”刻意練習“。
我們今天就來討論一下,如何從一個GIS二次開發人員轉變為GIS底層開發人員。
被忽視的GIS底層原理
前段時間學了一個大神的計算機圖形學課程。課程開篇就說:我們不會去講OpenGL API,我們只會講計算機圖形學的原理和演算法,原理和演算法學會了再去看API什麼的,那都太簡單了,甚至你自己都可以寫一套渲染引擎出來。
學完那個課程後我最大的體會就是:原來計算機裡的所有東西,背後都是數學。也看到了在計算機領域,只有能深入講到數學層面的東西才是真正的實現原理。
記得之前所在的公司下任務讓員工申請專利,有個同事寫了個GIS的專利,結果被打了回來,理由是實現方法太依賴於ArcGIS軟體。
這可能從側面反映出了GIS開發普遍存在的問題,就是更關注如何使用各種的GIS軟體和GIS開發框架,卻忽視了GIS底層原理的重要性。
這同樣也是國內開設GIS專業的高校普遍存在的問題,高校裡都在講GIS理論、GIS軟體使用、GIS二次開發,但很少講GIS底層的實現原理。
GIS開發需要逆勢而上
吳軍在《矽谷來信》一書中提到過一個高勢能專業的概念。所謂高勢能的專業,就是指那些相對難學,而又相對是其他專業的基礎的專業。比如數學專業相對計算機專業就是高勢能的,計算機專業相對GIS專業是高勢能的,從高勢能轉到低勢能的專業相對好轉,但反過來會比較困難。
GIS開發除了要掌握GIS的原理外,還要夯實計算機基礎,因為計算機是GIS的實現手段,計算機基礎不紮實是做不好GIS的。
GIS底層開發要掌握的技能
下面是我認為GISer需要進一步加強的底層技能
1、GIS基礎知識
- WebGIS實現原理
- GIS常用空間分析演算法實現原理
2、計算機基礎知識
- 資料結構、演算法。
- 精通一門開發語言。這裡的精通不僅包括熟練度,還包括開發語言的實現原理。
套用知乎上一位答主的話說就是:GISer要有不低於計算機專業人員對計算機的理解能力。簡單點說就是要達到計算機專業科班出身的水平。
3、數學基礎知識
我的原則是急用現學。數學這個東西確實比較枯燥,當你不知道這個東西有什麼用時,內心會很抗拒,學起來就很費勁;當你發現要學的新技術中使用到它並且死活繞不開時,內心就不再抗拒,甚至有了濃厚的興趣,再學起來會容易很多。
總結
- GIS二次開發走的是全棧開發路線,啥都會一些,啥都不精通,路越走越窄,工作5年後薪資上會慢慢遇到瓶頸。
- 要突破這種瓶頸需要逆勢而上把計算機的專業知識吃透,把GIS底層原理吃透,讓自己達到計算機專業開發水平,同時又精通GIS底層實現原理。
- 這兩項突破後,你就具備了GIS底層的開發能力,會成為HR口中天天嚷著不好招的那種GIS稀缺人才。
最後
種一棵樹最好的時間是十年前,其次是現在!
原文地址:http://gisarmory.xyz/blog/index.html?blog=GISerRacer
歡迎關注《GIS兵器庫》
本文章採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名《GIS兵器庫》(包含連結: http://gisarmory.xyz/blog/),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。