1. A self-propelled device comprising: a drive system operable to accelerate and maneuver the self-propelled device; a processor; and a memory storing instructions that, when executed by the processor, cause the processor to: establish a communication link with a controller device, the controller device being operable by a user to remotely control the self-propelled device; receive, over the communication link, a computer code package from the controller device; and execute the computer code package to perform one or more processing operations performed by the controller device.