Very unexpectedly, for the past few weeks I've been working with a Digital Agency here in Melbourne on a sports-themed iPhone app for a very large client of theirs (a worldwide media brand). I was called in at the 11th hour to work with two other developers (both experienced iOS and ruby contractors), and I knew within the first hour there that the project was going to be a significant challenge. The project had unrealistically tight timelines and a lack of testing and testing platforms/data sets available.
Needless to say, it was an interesting experience. In my previous full time jobs I've never worked as a developer, and with my current company all projects to date have been single developer projects. But I definitely found the whole experience really rewarding. It reminded me of the time I was a manager in a large digital agency myself, only there it was me cracking the whip to get development in on time, rather than having the whip cracked on me. :-) (It also meant I had to get dressed and leave the house to work!)
In all seriousness though, the key thing that made the whole thing worthwhile was seeing a "production" codebase from other experienced mobile app developers. My Objective-C design and style is self-taught. It was great to have what I do and the way I do it validated by others, as well as picking up hints and tips for more modular app implementations. This is something that you really miss out on as an indie developer with a one person development team. The shared learning and ability to bounce ideas off people to come up with great solutions is something that is really missing from the indie way of working.
I'll definitely consider doing more contracting work in the future - both for meeting other developers and for picking up new skills. Highly recommended.