Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I have basic programming skills (I program simple vba python and lisp scripts and had gone through a java course a long time ago), but it seems to me (judging by ESRI publications) that there is no escaping the need to learn .NET for future relevance in the GIS job market (even as an analyst).

I've gone through a basic c# course and can program (regrettably) quite poor programs, but I have no idea how to link the c# knowledge to actually programming for arcgis in order to progress.

1) I know the differences aren't big, but does ArcGIS use .NET or C#?

2) I know the best way to further my experience in .NET is to program more and more but are there any good .NET programming books or courses I can learn techniques from?

3) In your opinion, what is the best way to learn to program in .NET for ArcGIS? Are there any useful books or websites?

I appreciate your comments regarding ArcGIS 10 (and will be saving them for later) but if you could give give me some heads on for ArcGIS 9.3.1 that would be grand (I'm finding myself in a very ackward position that while Esri and the whole world are focused on ArcGIS 10.0 (including local Esri representatives), almost nobody in the country upgraded from 9.3.1 or have plans to do so, and am personnally having problems seeking 9.3.1 appropiate answers).

share|improve this question
    
Are you talking about Desktop or Server development? i.e. web apps or Desktop based apps/add-ons? –  Simon Sep 21 '10 at 2:51
    
OH sorry, I meant strictly Desktop (Which I reckon is a bit easier, no?) –  user749 Sep 21 '10 at 5:08

10 Answers 10

Just wanted to add a bit from my personal experience. I learned mainly as a by-product of employer needs. First with ArcGIS Desktop scripts, then extensions, then ArcGIS Server (SOE, Web ADF, and web API) programming. The best resource, in my opinion, was really the API and help documentation. When first breaking into an unknown area, I would read a bit of the conceptual help, then dive into coding and reference the API doc as needed. Then, if I would get stuck, I would use the Esri forums. Existing code samples would occasionally be helpful, but I usually could not find much that was applicable to what I was working on - that may not so much be the case now. The Esri videos and this great site were also not yet available, so those are certainly additional resources.

I'll add that I studied geography, GIS, and some comp-sci at a university, and I think it's difficult to get a really good grasp on GIS dev from "classwork," or from approaching things in a very general way. If you are with an employer that works with GIS, I would suggest talking to the GIS folks there to identify a need that would make a good little dev testbed for you - even if you have to work on it on your own time. Barring that, I would try to come up with some specific piece of functionality that you would like to have or that you think would be interesting to put together, then work on discovering what you need to know to accomplish that.

share|improve this answer
    
I have a similar experience. It worked well for me! –  George Oct 30 '10 at 19:14

Existing code (in addition to the other answers...not in place of).

There's lots of it online in places like Google Projects, Codeplex, & Github.

It's interesting to learn from code for projects that are fairly active/in use and have a decent size user community. (Not that you can't learn anything from stale code repositories)

share|improve this answer

ESRI have a heap of videos, and I think these are the best resources to get started. I would recommend looking at the ESRI Developer Conference videos At time of writing, 2010 is the latest

Each of these videos conclude with where to go next (additional resources).

share|improve this answer

I'd suggest not relying on the ESRI samples to learn programming skills in general or .NET in particular. That's not a slam on the samples or the people who prepared them; samples are meant to show how a particular thing could or should work. For brevity, a lot of things are left out of samples. Also, most ESRI samples I've seen are not object-oriented but spaghetti code.

It sounds silly, but the way I transitioned from Visual Basic 6 to VB.NET and C# was to study the certification books. At the time, there was a lot of emphasis on what was different between COM and .NET since it was new. A good grounding in your development language of choice will help you navigate through the minefield of software company samples and documentation.

Also get to know COM Interop; ESRI does have some good info on it, but it's ESRI-specific. In ArcGIS, COM Interop may not be your friend but you will suffer a lot of debugging without it.

share|improve this answer
    
I agree, programming in general is not something you benefit from learning in a more abstract environment than GIS applications; in addition most successful GIS programmers I know haven't come from a GIS- or Geography- specific background –  WolfOdrade Sep 23 '10 at 16:06

Migrating over from VBA to .NET is quite tricky. I know python is all the rage at v10, but hoping ESRI put something together for a pathway around moving to .NET with Add-Ins. Ideally an equivalent to the great book on 'Getting to Know Arcobjects" which is specifically around VBA.

Have a read through this (2008) pdf about migrating from VBA to NET I would also recommend reading this link in the v10 webhelp

share|improve this answer

If you want to write stuff that avoids the scorn and derision of programmers, stuff that you can feel proud of in a portfolio, you'll want to get a really firm grasp of object oriented design and development (if you don't already). Mastering specific languages and frameworks can come later.

By all means, use .NET and ArcObjects as the go-to language/API when working through programming exercises in some good software development books. Here are a few to start:

  • The Pragmatic Programmer: Best practices when writing code, and some good stuff on the software project life cycle.
  • Code Complete: Similar to the above, but with a great deal more detail and examples.
  • Test Driven Development: TDD forces you to conform to some of the practices the two above books recommend.
  • Head First Design Patterns: If you are having to deal with ArcObjects, you are going to want to know about design patterns. The API is sick with them.

Code Complete is pretty big, but the rest of them can be quick reads. I'd actually recommend the first two books for GIS people that will never write a line of code. There is some great stuff in there on source control, project management, communication, and good design principals.

share|improve this answer
    
I couldn't agree more. Take a grass roots approach and it will pay dividends. –  Kelso Sep 22 '10 at 1:19

Web ADF is ESRI's .NET SDK. It will be deprecated after its next release.

However, if you are using 9.3.1, Web ADF will be your toolset for .NET. There are plenty of resources online, ESRI and otherwise.

As for getting better at programming in general, never stop reading! Read programming blogs and website. Use Stack Overflow. Never be afraid to ask questions. Read Code Complete, and other highly regarded books on programming and software development. Read everything you can get your hands on! Good luck!

share|improve this answer

1) ArcGIS or ArcObjects is a COM model, with a .Net, Java and C++ wrapper on top. So any .Net language or Java or C++ can be used. See the ArcObjects Help .Net, Java, C++

2) I would suggest a refrence book wit a lot of content, like Begining C# or VB.Net from Wrox.

3) I would start by looking at thte samples in the dokumentations. Specially the add-in stuff.

share|improve this answer

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Sample_MapViewer_hosted_in_a_WPF/00010000014p000000/

This sample will allow you to get a map displayed inside of a Visual Studio environment. You can program in C# or VB.NET (both .NET langs).

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.