I've frequently seen peers inquire about entering GIS development. Though still refining my own expertise, my journey from computer novice to professional developer offers insights worth sharing. This article outlines a goal-oriented approach that helped me navigate the field – perhaps it will resonate with you too.
Note: These are personal experiences, not universally replicable formulas.
The Core: Goal-Oriented Learning
Early on, I asked veterans: "How do I start GIS development? What resources should I use?" Typical answers overwhelmed me:
"Learn C/C++, Java, Python, HTML/CSS/JavaScript, Flex, C#, MFC, SQL, cartography, surveying fundamentals, computer graphics..."
I'd eagerly borrow stacks of books (e.g., "Master C++ in 21 Days"), struggle through environment setups, and abandon them within days. This cycle repeated until a mentor reshaped my perspective through his OpenGL game project.
Key realization: Mastering every foundational technology before building anything was unsustainable. Instead:
- Define a concrete project goal (e.g., "Earthquake GIS management system")
- Start small: Avoid overambitious targets ("build WeChat"). Begin with achievable projects like a personal running trail tracker.
Goal Decomposition
With a clear objective, avoid rushing into coding. First answer:
- Platform: Web/mobile/desktop?
- Core features: Earthquake POI display? Waveform visualization? Real-time alerts?
- Data flow: Sources, processing, storage? User workflows?
Document outputs like system architecture diagrams, requirements specs, and user flowcharts.
Solution Exploration
Research implementation strategies:
- Search engines (my preferred start)
- Consult experienced developers with specific questions
You'll discover modular solutions:
- Spatial data: PostGIS + PostgreSQL
- Web visualization: Leaflet/OpenLayers
- Backend: Spring Boot (Java), Flask (Python), etc.
Compare this to the initial overwhelming list – now you only need relevant technologies.
Targeted Skill Building
With solutions identified, learn purposefully:
- Set up PostgreSQL/PostGIS → Write "Hello World" API endpoints
- Implement basic earthquake POI display with Baidu Maps API
Crucial difference: Each step directly serves your project goal. Completing mini-tasks (e.g., "filter quakes by region/year") provides immediate feedback – more rewarding than textbook exercises.
Addressing Depth Concerns
Will this approach yield superficial knowledge? Yes, initially. Its purpose is entry, not mastery. You build a "Happy Path" first – a functional prototype that creates scaffolding for deeper learning. Advanced topics (C++ optimization, concurrency) come later.
Why Pursue Development?
Despite advocating "GIS iron rice bowls" in previous articles, I value development:
- Higher compensation: Critical for those without generational wealth
- Problem-solving joy: Building functional systems beats office politics
- Transferable skills: GIS development roles exist in government/state-owned enterprises
Final Thoughts
- Forget artificial boundaries: Don't limit yourself to "GIS vs. CS" – learn tools that solve problems.
- Follow market demand: Prioritize skills with tangible ROI (e.g., cloud GIS over niche desktop tools).
- Non-CS backgrounds are fine: Competence stems from practice and systems thinking, not diplomas. I've witnessed non-CS developers outperform "experts."
Technology is a means, not an end. Stay pragmatic, stay curious.