As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

3

Talk about a broad question...can you narrow it down to a specific software stack? Esri? FOSS? Just looking to do google/point data mashups?
–
Derek SwingleyAug 7 '10 at 5:00

My bad. ESRI or FOSS, is it not possible to have both? Something more complex than point mashups I hope. Enough skills to do something like this. opengeohost.com/maps/stlawrence
–
R.K.Aug 7 '10 at 15:17

Great question. Let's have one skill per answer.
–
Adam MatanAug 7 '10 at 20:01

Thanks. Great idea. Should I post that on the question? I just realized that the question might be broad. Would it be better as a community wiki?
–
R.K.Aug 8 '10 at 1:58

10 Answers
10

I can tell you about my experience, which started as a simple geographer, trying to use GIS products to do spatial analysis.

As I said, I'm a geographer, and from the beginning in college I started working with GIS as a user. After that, I started to research on how to automate tedious tasks I had to do often. That came as passion, and after 3 three years, I'm employed by a multinational software house, that works with many GIS systems and developing custom solutions.

My steps were:

Learn GIS well. Don't start out learning programming without having the fundamental right. Projections and transformations, spatial analysis, differences between the raster and vector model, etc.

Learn SQL. This is actually a second part to the first. It will help you a great deal if you start to think in a "sqlish" manner. SQL changes from vendor to vendor. I can recommend you with PostgreSQL, which , is the vendor that follows the standard the most. If you need to learn specific dialects, do it later, when you actually need it.

Object Oriented Programming. It seems a challenge, but it's quite easy once you grasp the basics. Choose a easy language to do it. Python is by far the easiest one. Learning Python is an excellent starting point. There are open-source/free Python books, like Dive into Python. After Python, interesting choices are: .NET, Java, and C/C++.

- Take a geospatial problem and write code to solve it. I cannot stress how useful this is. This will make you crazy, but it's a very good way to confirm that you learned the programming side and to make sure your geo-spatial skills are up to date. In my case I wrote a small PostgreSQL application to geocode traffic accidents.

Assuming you already have the GIS side of things covered (cartographic principles, etc), I would first take a trip to http://www.w3schools.com/
- Run through the tutorials in HTML, Javascript, XML, etc

Then you have a number of different platforms to choose from.
I am a bit biased towards ESRI, and I would recommend starting off by playing about the APIs
http://resources.arcgis.com/content/web/web-apis
- Running through the concepts/samples gives you a real sense of what you can achieve.
I find downloading the code samples and reverse engineering them to work with your own services (assuming you have an instance of ArcGIS Server, otherwise you can use ESRIs sample servers) is a good way to learn.

There is also plenty of videos, take a look at this years dev conference videos
Id recommend An Overview of the ArcGIS APIs for JavaScript, Best Practices for Designing Effective Map Services, Redesigning Desktop Applications for the Web and Using the ArcGIS Server REST API.

Who are your clients? what browsers will they be using? Can they install Silverlight or Flash plugins?
Do you have any IDEs to develop in? e.g Flex is best in FlashBuilder ($$) but you could also use FlashDevelop which is an open source alternative.

Are you more comfortable with established technologies or emerging technologies?
Weigh up the risks.
- .NET/Java have been around for ages
- Silverlight & Flex are fairly new and there is some debate on if HTML 5 will wipe these platforms out

Both Silverlight and Flex have more interactivity out-of-the box, where as Javascript makes up for this gap by relying on the Dojo.Framework.

The big difference in functionality between Web ADFs and Web APIs is the fact that ArcGIS Web APIs are entirely client-side.

I will leave someone else to give a less-ESRI specific answer, but the obvious choice is to start having a play with the Google Maps API
- There are plenty of resources/tutorials for learning this.

Wow. Thanks for the overview :D I lean a bit more toward FOSS though as I'm in a third-world country and ESRI products are out of reach of most people here.
–
R.K.Aug 7 '10 at 15:30

Note that the ArcGIS (and many other) Web APIs do most of their processing on the client side, but they all rely heavily on published services and/or processing on the server side. So, if you want to do much beyond assembling existing resources (e.g. geoprocessing) you may have to investigate server-side technologies, or do some hefty research to figure out how to do it on client-side.
–
mwalkerAug 7 '10 at 17:11

Noted. Investigating the open geo-stack right now.
–
R.K.Aug 8 '10 at 2:05

@simon - Insufficient DB capability is one of the most common problems among GIS developers. IMHO it is one of the most important skills (along with HTML/CSS, JavaScript and map rendering). @r.k. - CQL?
–
Adam MatanAug 8 '10 at 7:35

Common Query Language? I encountered it once while working with GeoServer.
–
R.K.Aug 8 '10 at 10:15

Assuming that you managed to sort out your spatial DB and map server [described in other answers here] and brushed up your knowledge of HTML, CSS and JavaScript you might start tinkering with client libraries that will consume and display map components inside user's web browser.

OpenLayers seems to be by far the most referenced and used library. It has pretty good documentation and examples, and you can find some tutorials, for example here. BostonGIS pages will be useful for you here as well, not only for OpenLayers stuff.

Depending on your knowledge / willingness to learn Python MapFish is very graceful solution as well. Or you can dive into GeoDjango, however I cannot comment much on this solution myself.

Alternatively you could look at ther OSGeo web mapping solutions, turn to Flash, or use something commercial like ESRI Web APIs.

After that it might be worth looking at the second tier of your future web geostack. You will need something to act as a bridge 'serving' your data from spatial DB to the client in your users' browser.

If you master these, you can do anything on the web. Adding in nice APIs like SVG will maybe make it easier and your web applications nicer, but IMO you'll never be able to quite get around the four listed above.

I can't emphasize George's second to the last comment enough. Pick a geospatial and/or Web problem that interests you and learn about the required technologies as you solve it.

If you take the time to become proficient in all of the areas listed above, it will be forever before you actually start building a project that scratches your itch.

I would suggest starting out with building an app using OpenLayers to build an app maps data from some existing data services. You could then move on to creating your own data sources or services. If you stick with the FLOSS technologies, you will be able to build and use your apps anywhere without license costs an issues.