Being an Amateur Again

Starting up on iOS and macOS development is a strange feeling!

April 05, 2019Filed under blog#learning#software developmentMarkdown source

Assumed Audience: Just about anyone… but I do assume a bit of familiarity with programming.

Just a little note here, nothing long or fancy tonight.1 I’ve just started working in earnest on my long-dreamt-of applications for research writing. This means I’m trying to figure out how to build some applications with native toolkits: UIKit and AppKit, specifically. And, for the first time in most of a decade, I have no idea what I’m doing.

I started doing web development in college, over a decade ago. I used a free Dreamweaver clone to build a simple portfolio website for my music when I was a sophomore. I was hacking on XML templates for my old Blogger site as a junior. In the year after I finished college, I was building websites for friends, family, and my old church. I built multiple responsive web designs within months of Ethan Marcotte’s original article on the idea. I was writing loads of jQuery by mid-2011. I built my first single-page app in 2014 (and it’s still running!).

All of that is not to brag but to say: I am deeply comfortable (and relatively expert) with web development. It is in many ways “old hat” to me. Pretty much any tool or framework that sits in that space, I can pick up very quickly, simply because I have deep experience in the space at this point.

And now: I am starting over in many ways. Native app development has a lot in common with web UI development in some ways… but in others, it could not be more foreign. While some of the patterns are the same, and if some of the terminology is curiously familiar2 the actual details are all wildly different.

The net of it all is discomfort.

I am used to this feeling, so it does not bother me: I have made a point to be learning constantly throughout my career. I will admit, though, that trying to dive in here is intimidating. I want to build apps that are distinguished in no small part by their quality and ease of use… and I am in over my head even to build things that work at all on these platforms.

It helps that I have a five-year horizon for this project.3 But it’s still strange to be diving into the deep end without the comfort of all that existing knowledge. Every time I picked up a new thing in web development, I could layer it onto the things I already knew. Here, that is much less true. Yes, I have a reasonably good sense for how UIs work in many ways, and I have a great deal of general programming knowledge. But with iOS and macOS, at the end of the day, I’m still just a newb.

It’s both a bit intimidating and a little exhilarating. So: here we go!


  1. I’ve successfully been not blogging, though not for exactly the reasons I hoped. One of the ways the burnout lingers is that my bandwidth is lower than I might have hoped. Doing both New Rustacean and my EmberConf workshop was more than enough to keep me full for the first couple months of the year.

  2. Reading docs for UIKit and Swift is a lot like reading a weird mirror-universe version of Ember and TypeScript—you can still see Ember’s SproutCore roots, and if you were reading the Ember docs back in the 1.x days, well… there’s a lot to recognize.

  3. Being in your 30s has some advantages, it turns out! Comfort with longer time-scales is one of them.