A couple months back, one of my fellow uShip developers popped his head into my team’s room at the end of the day. “You guys going to the API meetup?”, he asked. As an iOS developer, I don’t actually write APIs very often, but I’m interested enough in how consumable they are. Why not go? Soon enough we were all walking up to Capital Factory where Austin Homegrown API was set to present a talk entitled “An Open Standard for Learnable APIs”. I didn’t know what that meant, but it seemed like it could be interesting.
This talk was based on some research by a Janelle Klein of New Iron. The research was the basis for a book she was working on. It just so happened her research was centered around exactly the part of APIs I care about. She just put it differently. Rather than ask how consumable a given API is. She asked the question, how painful is it for a developer to work with that API? She also presented a way to actually measure that quantitatively. Having this sort of raw data makes for great feedback for API developers.
What really grabbed my attention was the actual tool Ms. Klein was using to gather data. It was actually pretty simple. Just an IDE widget where you can select what sort of work you’re doing at the moment: Learning, Troubleshooting, Rework, or just regular productive time. The tool logs enough data that you can produce a timeline of these events for your project, allowing you to easily see if you’re spending way too much time doing less than productive work.
I came away from this presentation pretty inspired. We’re beginning to write more iOS code libraries at uShip and we care a great deal about making sure they’re easy for our fellow developers to use. So I wanted to try this tracking tool and see what data I could get on some of these libraries. However Janelle’s tool happened to be written for Java developers who use Eclipse. Eclipse isn’t really an option for iOS developers. Hmm… how could I track data like this without working in Eclipse? Why not make an app for that?
It just so happens that uShip had an hackathon event coming up. Some of our web developers were eager to try their hand at developing something on iOS so I pitched IdeaFlow as something we could build together. We ended up with a working prototype app for tracking IdeaFlow data on an iPhone.
You can check out the now open-sourced app here.