1. A method performed by a device, the method comprising: receiving from a first device information associated with an assigned task of the first device, wherein the assigned task involves an interaction with an environment and comprises a plurality of subtasks; determining whether the assigned task can be executed in less time with assistance from one or more additional devices; determining one or more available devices that can assist in executing the assigned task by executing at least one of the plurality of subtasks, wherein the one or more available devices include a device that is idle and that is configured to execute at least one of the plurality of subtasks; ranking devices from the one or more available devices based on an amount of usage over time of the one or more available devices; selecting a second device from among the one or more available devices based on the ranking of the one or more available devices; determining a first subtask from the plurality of subtasks for the second device to execute based on capabilities of the second device; sending to the second device instructions to execute the determined first subtask; storing the information associated with the assigned task of the first device; determining a pattern of assigned tasks based on the stored information and previously stored information associated with previously assigned tasks of a pool of devices; and determining a task prediction based on the pattern of assigned tasks, the task prediction estimating a future task and a future time at which the future task is to be executed.