views:

1395

answers:

7

We have 2 new GIS programmer/analyst in our department (new to programming and ArcObjects) and I don't feel I'm qualified enough or have the time to teach them. So I'm looking for entry level books/tutorials for them to use as reference.

The only books I can find for developing Extensions for ArcMap are written for VBA.

Besides the ESRI course books you get from training in Redlands, does anybody know of good sources for learning to code against ArcObjects in .Net?

Thanks

+1  A: 

As far as I recall some of the code at the ESRI Developer Network is now in C#, at least that was me primary source of C# code for GIS, but no books, sorry.

Perhaps this would be a good primer: http://www.pragprog.com/titles/sdgis/gis-for-web-developers

Kasper
A: 

If your employees are really new to programming, I would start with having them learn the fundamentals of C# (or some other .Net language but C# is probably the way to go for beginners) and good programming practice. I would imagine there are existing stackoverflow threads that would have suggestions for this. I think a solid understanding of object oriented programming and knowing the syntax of the language that examples will be in will facilitate the learning of ArcObjects.

I am not really aware of non-ESRI books on ArcObjects. However I think their resources are adequate to get beginners started. In addition to ESRI course books, I would suggest starting with the online resourses at http://resources.esri.com/arcgisdesktop/dotnet/index.cfm

Other suggestions are to learn how to read the object model diagrams and to use the help to explore methods and properties of the ArcObjects. Also encourage the employees to take advantage of the ESRI user forums. There are a lot of knowledgeable people willing to help with questions there.

WaterBoy
+6  A: 

Trying to teach programmers both ArcObjects and general software development is a really bad idea. I am struggling with the exact same problem right now. You run the risk of getting two developers who program neither ArcObjects nor C# very well.

Teach them to be good developers first. Do this by having them work on non-ArcObjects code (whether that means high-level ArcGIS ADF or complete non-GIS apps is up to you). Make sure they understand the basics of the application context (web, desktop, middle, etc). That will ease the transition to ArcObjects.

Once they have gotten the grasp of software development fundamentals (in particular, inheritance and OOP), introduce them to ArcObjects. The VBA reference is adequate, but hard to abstract to C# and to the modern tools. A bright developer can do it, but your average one will probably learn a lot of bad habits.

Your best bet is to bite the bullet and send them to the developer workshops. Sometimes, ESRI offers classes at a regional office that might be more local to you. Alternatively, send them to the Developer Summit or User Conference in Spring and Summer respectively. The technical workshops are a bit advanced for total beginners. That said, a lot can be learned from the worskhops if the developers have a very basic understanding of ArcMap or ArcObjects.

Also, they need to learn how to use ArcMap. The single most important useful thing they can do to learn ArcObjects is to learn ArcMap. Understanding how it works in the desktop product can frequently reveal how to use the API. An easy example is projecting data. In ArcMap, you must use a tool to explicitly project data. Simply "setting" the projection doesn't work. This translates directly into the API where you must call a "project" method or use the project GPTool.

James Schek
You are absolutely correct. I actually worked at ESRI as a developer and can't agree more with what you said. Get familiar with OOP, get familiar with ArcMap, and then try to tackle some of the COM API.
j0rd4n
I was not very impressed by the ERSI developer workshop I attended. I suppose for pure beginners to programming, it is better than nothing.
emptyset
@emptyset Which workshop? One of the multiday classes or a 1-hour session at the User Conference?
James Schek
A: 

Practice by example.

I had some fun when I was first starting with simple but interesting tools like one that took a screenshot of the current map and posted it a MediaWiki site (with just one click). Much of the API seems like Deep Magic and more than once I've stumbled across completely undocumented features by poking through the Windows registry and making educated guesses (like how to create a custom menu item on the "Data View" context menu).

I've always learned a LOT better by having simple, achievable assignments than being forced to read boring, dry books.

There's a lot of power, but I've certainly been slow in getting to know and understand much of it.

Without making it interesting, I think developers will go suicidal with an API that big.

Andrew Flanagan
A: 

Also don't know about non-ESRI books focused on ArcObjects. For ArcGIS Server software and for me, I can only recommend ArcGIS Server Administrator and Developer Guide (that is, AFAIK included in the AGS installation box) - there are many examples of code, for both C# and VB. Even if not programming with AGS, examples still can be usefull for educating how ArcObjects code works.

dond
A: 

I completely agree with James.

As someone who was in this boat 4 years ago, I firmly believe you should start with .NET programming then move to ESRI platform and not get bogged down by ESRI issues when you are trying to learn OOP concepts.

I would also like to point out that the ESRI developer resource centers hava a wealth of information for beginers [http://resources.esri.com/gateway/index.cfm]

If you start with .NET and desktop developemnt, you can see the 'getting started page' under [http://resources.esri.com/help/9.3/ArcGISDesktop/dotnet/concepts_start.htm]

good luck.

captonssj
+1  A: 

I agree with the general sentiments everyone is expressing here (start with programming, start small, especially learn by example/doing).

It is vastly easier to get developers to learn ArcObjects than to get GIS analysts to learn programming. Your task (to do both) is pretty difficult!

Still, if you have to start somewhere, I would first train them in C# or VB .NET basics (via a good web-based tutorial or paid course), and then following that up with ESRI .NET-specific training. As I said in a comment above, I wasn't impressed by the ESRI training courses. I have a software development background and I was able to learn the ArcObjects API in a couple of months - compared to two months of hands-on knowledge, the training course was really basic on the ArcObjects material. Still, it may work for apprentices, and you may luck out with your hires.

I also want to add that you definitely want to put the emphasis on software training first, and consider the ArcObjects API incidental. If this ArcMap extension is a product you intend to sell to people and have as customers, realize supporting, enhancing, and maintaining a bug-riddled product is an expensive operation. So, any dollar spent on software training will pay for itself in the long-term.

I would even tell you to consider hiring a software developer on a contract basis to serve as a guide and mentor for say, six months.

emptyset