你得會寫程式碼。。。

pythontab發表於2013-02-01

過去幾年裡,我把相當多一部分的時間花費到尋獵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個分析師中脫穎而出。


相關文章