Over the past decade, software agents and multiagent systems have grown into a powerful software engineering paradigm. They enable abstractions not only from the problem domain but also toward dynamic solutions that evolve in real time, depending on environmental stimuli to the software system. Agent-oriented software engineering supports the design of dynamically interacting components, each with its own thread of control, and using complex coordination protocols such as networking applications, ubiquitous computing, and sensor networks. The major pitfall so far has been the lack of sufficient engineering methodology. Author Hisham Mubarak looks at the engineering of agent-oriented systems and provides practical guidance to get started.