How to be a geodev
I recently made a comment in jest about how to be a Geospatial Web Developer.
It was inspired by perusing this reddit thread.
I’ve talked about similar topics before.
Although, said in fun, it’s not too far from the truth. There’s no set-path to becoming a geodev. There are some basics you should learn for web development, but even in geodev there are subsets. Are you focused on visualization, general app dev, algorithms? My point is, you’re going to learn a lot as you journey down that path, things change and technology flows, so be adaptive, be flexible, be ready to learn. Those are details, learn the basics first.
I’ve been doing this a while, so I figured I’m at least minimally qualified to answer this question.
Be a geodev second and a web developer first.
Think of it this way, web development is your role, spatial is your niche.
I’m a big believer in specialization. As a geodev, I do web development, I just happen to focus on working with maps and the importance of location information.
Web developer first, geodev second.
So let’s focus on the Web Developer part of this question.
Learn JavaScript
You have to learn JavaScript.
Oh, but I want to be a server-side web developer, I don’t care, learn JavaScript. Can’t I just learn a framework? Sure, but learn JavaScript. I just want to learn XXXScript and compile to JavaScript, still don’t care, learn JavaScript.
I’m a huge fan of compile-to-js languages like TypeScript (technically same thing), Elm and PureScript. But that’s like some next level shit right there.
Learn JavaScript. Learn how Arrays work, learn how Object works. Learn about inheritance and the prototype chain. Learn about Functions and scope.
I’m not saying you need to be a JavaScript pro, but you should learn enough to be comfortable. This is a great site to learn about DOM manipulation. Oh yeah, it would be really helpful to learn about DOM and how to manipulate the DOM if you are doing any web development.
JavaScript should be your base. It should be your morning oatmeal. It should be the shoes you wear as you walk down the wary path of web development.
Frameworks are fantastic tools. Anyone that has seen me talk about them or has read my past blogs knows that I’m something of a framework aficionado. But, although learning a framework is awesome, frameworks come and go, JavaScript will live forever.
Look at it this way, frameworks are for developers, your users don’t give a shit how you built it, as long as it works.
JavaScript is a horrible language, poorly designed… blah blah blah That’s cool, the rest of us are too busy building shit.
CSS
Now normally I wouldn’t say CSS is a required. But we’re looking at being a web developer here. You don’t need to know all the CSS magic and there is some crazy shit you can do in CSS.
You should at least know enough to do a bit of styling, maybe some animations. My CSS skills are novice, to say the least, but I’ve found plenty of places that let me eliminate some requestAnimationFrame() calls in my JavaScript that would be replaced with CSS transitions and delays. A little CSS can go long way.
HTML… maybe
By learning some DOM manipulation in JavaScript, there may not be much need to know the ins and outs of HTML. I think we’re kind of past the days of manually building up web pages with hand-written artisinal HTML.
But… as you up your webdev game and say are interested in progressive web apps, knowing some HTML semantics coupled with CSS will be really beneficial to load your pages as fast possible, so users aren’t staring at a white page while your app loads. Yeah yeah, server-side rendering (next level shit) can help with this, but lets stay a little closer to the metal here.
Geodev
Ok ok, you’ve gone through all the JavaScript, CSS, HTML web development tutorials on the internet and you’re ready to get serious about geo web development.
Full disclosure, I work at Esri, on the JavaScript API, but I won’t limit my list
You have quite a few options to work with spatial data on the web.
ArcGIS API for JavaScript - If you are interested in working with the ArcGIS Platform at all, this is what you want to use. Check out devlabs for quick tutorials.
Mapbox - They provide some nice customizable basemaps and the latest uses WebGL exclusively for all drawing, which is pretty cool.
Carto - Carto has some nice analytic and visualization tooling. What I really like is they expose PostGIS queries via their API.
Leaflet - Really simple mapping library, can do some powerful stuff if you put the work in.
OpenLayers - Really powerful mapping library. Works with a variety of services, been around forever, I’m a fan.
Google Maps API - Probably got the online mapping party started. Google maps can do quite a bit for an enterprising developer, but be sure to check out licensing limitations for its use.
d3 - I was a little hesitant to add this, but it can do mapping and may serve the purpose for some developers.
So, what do you do with this information?
Pick one and go to town. They are all built on JavaScript, and since you now know JavaScript, it’s all about making a useful app with a technology of choice.
You’re probably not building a ArcMap or QGIS into a browser, you’re most likely building a focused app. It’s generally a good idea to know a little bit about each of these mapping technologies. But again, just like being a web developer, you are specializing in geo, I would pick one and focus on it. But you never know when a new job may have you working with new tech, so it’s still a good idea to know a bit about each one.
Summary
I’m just covering frontend dev here. We’re not even talking fullstack, which would mean knowing some server-side tech (.NET, node, you down with OTP and so on) or learning SQL to work with database queries and data wrangling. That is really some next level shit that I couldn’t really cover in a single blog post.
Want to a find an awesome community of geominded folks? The Spatial Community has you covered!
But let’s stay focused on the initial question. How to become a geospatial web developer?
To reiterate, learn to be a web developer first, add the geospatial developer second.
Don’t misunderstand me though and think that you can’t do any geodev until you’ve studied JavaScript for six months. That’s not realisitc, especially if you need to do this for work. Just remember, at the end of the day, geo or not, you’re still doing what a web developer does and that’s build web apps that make your users fuckin’ awesome.