Doug develops Mac and iOS apps as a freelancer.
- What do you currently do?
I’m a freelance Mac and iOS developer specializing in Accessibility.
- How did you get started in Mac and/or iOS programming?
I was going to school to become an Electrical Engineer and I had some medical complications that meant that I had to stop taking medication for ADD. I had to find something to do that I liked enough that I could do it even when shiny things were distracting me. I had started writing a podcast client for iOS on a lark and it turned out I was good at it, so I decided to dig in and see if I could get better. I dropped out after a semester of mostly neglecting class while I wrote code to start a small iOS consulting shop with two friends (a designer and a web guy.)
- What was the first app you created and what did it do?
A podcast app for streaming and listening to old episodes of a show I was a fan of.
- play a live shout cast stream
- submit feedback to the hosts during the live stream
- show a list of upcoming live shows
- show old episodes of the show including show notes, pictures and playback
- show tweets from the hosts of the show and tweets from fans of the show
- Where did you get the idea for the app?
At the time the App Store was only 6 months old and there were no good apps for streaming audio or downloading podcasts.
- What went well?
The first release was definitely crude, but I was able to go from never having written any Objective-C at all to shipping an app that had thousands of users in about 4 months.
I was really lucky to have a lot of volunteers testing things and making suggestions and when it did launch the success of the podcast guaranteed a decent sized user base that was friendly about reporting bugs to me instead of leaving bad reviews.
I was also very lucky that the show had a great server guy who was really helpful about getting me feeds for everything I wanted.
- What could have gone better?
In retrospect, the feature set was way to big for a 1.0 and I would have saved myself a lot of sanity if I’d rolled out these features gradually instead of trying to take them on all at once.
The code was basically glued together samples from tutorials I had found through google. I didn’t really understand anything about code quality so I’d just punch whatever I wanted to do into google and then rummage around trying things until something worked. The amount you can get done without really understanding how any of it works is pretty surprising.
- What is your favorite among the apps you’ve developed?
On iOS I’m pretty proud of an app I made called Science 360, for The National Science Foundation. It’s a science discovery and exploration app with a completely custom UI that I think is pretty fun. It was the first time I got to really flex my accessibility know how in making a UI that’s highly customized play well with VoiceOver. It hasn’t been revved in a while, so it’s a bit long in the tooth (needs a retina update for one thing), but last I checked it still works reliably and is still accessible.
On OS X my favorite app I’ve worked on was definitely Kaleidoscope 2. It was a huge technical challenge and a huge design challenge and a really aggressive timeline. A total pressure cooker into which we placed what is easily the most talented group of developers I’ve ever worked with.
I was the technical lead, but I was by no means the most experienced developer, especially with AppKit. This meant that my job was mostly to make sure these incredibly smart people weren’t blocked by anything. To get the right assignments into the right hands and make sure they felt like they could do the work and that I’d be around to help them if they couldn’t.
- What advice do you have for young people who want to make apps?
Concentrate on outcomes.
The thing that matters the most is producing software that people can actually use.
Yes, knowing the frameworks inside and out matters.
Yes, code quality matters.
But first and foremost ship something good and ship it as soon as humanly possible.
If you’re a contractor your clients will love you for this, if you’re making a product your customers will love you for this.
Bad code has a natural feedback loop where doing the wrong thing causes you real pain. Late nights unwinding bad decisions are a big part of getting better.
But not shipping doesn’t hurt, in fact often it’s the opposite. Tinkering forever feels great. Getting everything just so feels great. And holding onto the code puts off the scary part where you actually put your work in front of people. So you have to remind yourself everyday that code you haven’t released doesn’t count and create a sense of urgency around getting this great thing you’ve been cooking out the door.
Follow Doug on App.net.
Help more girls learn software development. Contribute to the App Camp For Girls Indiegogo fundraiser, get a cool perk, and enjoy the feeling of having helped the next generation of software developers.