Last year I got the chance to work with a lot of people. The inspiration for this post came from looking at some source code and thinking, I couldn’t have wrote this.
There’s the CocoaPods dev team, which has always been a morphic collection of open source developers. The core team being defined by who actually talks in our chat rooms. By trying to expand the dev team I, and others, often take on mentoring roles which is deeply satisfying.
Really though, I was to talk about Artsy stuff. The Artsy mobile team dipped to only me at the beginning of 2014. This brought in new faces to the team internally, and we experimented with having a friend freelance, then started building up the team via hiring.
As I mentioned in my on being 28 - for as long as I’ve worked in the computing industry I’ve been the most knowledgable about what I’ve been working on. The exception being when I first started working on Mac apps with Ben Jackson in Brazil 5 years ago.
Dustin Barker is the first highly experienced iOS dev I got to work with. He had a history of functional programming, music software and art. He was CTO at Simple for years before experimenting with Artsy and moving on to Facebook. In three months he got us writing a few tests, showed me how to build an offline mode into the Artsy app, and he took the most complicated part of an existing application and started a functional re-write.
The application is Artsy Folio our partner’s portfolio app. It had complicated sync logic that was in the thousands of lines, over 40ish files and shrunk it into an open source core (DRBOperationTree) and then a collection of totally independent tree nodes. This is code which I’ve been working with for over a year that I still applaud when I read it.
dB came to help put out fires, and stuck because he enjoyed it. He is our CTO at Artsy, and wears a lot of hats. As a former C++ guy writing Objective-C was no problem.
When he said he was interested I was worried about his impact on the culture for the team. It seems frivolous in retrospect, but I expected dB coming over would mean we would end up doing tests, having a CI set up and that it would feel like the mobile team was “being watched.”
Turns out the first two happened, and I couldn’t be more happy. Externally we’re now known for these things, but it wasn’t so obvious back then. I had tried to introduce tests into our apps once a year and just failed due to the culture not being there.
With someone to answer core testing “how do I?” questions and to help build a working, solid, test-base with. I think a nice analogy is that having dB around felt a lot like what people say working with Pivotal Labs is like. A bit of a whirlwind that makes you feel unproductive for a while, but once it clicks you come out a different person.
1aura Brown came to put out fires, and stayed. She is the first person that I’ve had on the Mobile Team as a junior. So I don’t really have any other points of reference on how that’s going. She said she likes it. 1aura would challenge a lot of my internal assumptions. She found ways to force me to vocalise concepts that were so ingrained that it was a muscle memory.
Coming from a mostly Art background and having some experience in the ruby world meant that she understood a lot of the general context, and could often just work on her own with a few clues. She ended up taking on a huge amount of responsibility in the team by taking over the iPhone app and leading development on that for most of the year.
I find her to be a great barometer on how we’re doing.
Robb Bohnke I pestered and pestered to join us. Couldn’t move him from Berlin though. Understandable IMO, it’s a lovely city with a lot going on.
I had known him online through github issues and sending emails ( I originally asked if I could copy his underscore.m style for CocoaDocs ) to meeting him in Berlin for conferences.
When it felt like an upcoming Artsy iPhone app release was going to miss an unmovable deadline I asked if he’d freelance for a few weeks. Having Robb in the codebase was my first exposure to high level functional programming, he would write code that relied on KVO or would make Mantle hacks for us.
Having Robb also meant that we shipped. One of the first things he did in our code base was swizzle out AppDelegate methods with ones for testing. A technique we’ve used in every app since.
One of my favourite things he shipped was a generic Button View Controller. He made it in such a way that presentation, the represented model and logic were completely decoupled so that it could be used whenever we wanted a list of things that could look alike.
Ash Furrow worked out great, you can read his perspective of joining Artsy (warning: long read.) He felt like a nice potential hire from my perspective due to his obsessive knowledge sharing and great writing. They say the best way to learn is to teach and I mostly agree. Though I don’t do it anywhere near as much I can see the value.
Ash became the perfect lackey. I had a bunch of ideas around things that we could improve when we had some breathing room, and Ash jumped at them and improved them in ways I couldn’t imagine.
As he had a solid collection of apps under his belt, and his own style of programming that I was interested in exploring it made sense to have him lead an app. Over time that became Eidolon, our first fully OSS app. He lead it beautifully. Remaining calm while I panicked, and offering help whenever things were just a bit meh.
I feel like in Artsy Ash found a place that he can call his. He’s had profound effects on our culture, and forced me to regularly up my game.
I don’t expect the Artsy Mobile team to expand too much more for a few years ( bar one or two who I can’t talk about. ) so I consider it a real honour to have worked along-side so many cool programmers. Everyone has their own stories, and a lot of them have now contributed to mine.
Thanks; Ben Jackson, Leonard Grey, Benoit Corda, Claudiu-vlad Ursachec, Andrey Dobrikov, Dustin Barker, 1aura Brown, Daniel Doubrovkine, Robb Böhnke and Ash Furrow.