We've been learning about [Agent-Oriented-Programming](http://en.wikipedia.org/wiki/Agent-oriented_programming) in my software development class, and my professor is a huge proponent of it, having worked with it his whole life.

My question is about the true advantages/disadvantages of using Agents from both a design and implementation perspective. From my professor's point of view, Agents can recreate very complex operations much more easily than through normal OOP methods. But it seems to me that Agents are equally cumbersome to program in complex environments. They are subject to various concurrency, timing, and data integrity issues. From a coder's perspective, Agent code is rather convoluted and is much harder to understand than normal OOP code.

Can someone give me an idea of how software Agents are viewed in real development and what the advantages/disadvantages are outside of an academic exercise?