Post Mortem

Just a fraction of the apps
which appear when you
search for “time zone”

The lure of the App Store

Why did I release an app all by myself? Well, nobody seemed to want to hire me for a permanent position, but I needed to do something and with the App Store there was an opportunity for me to learn something new (so I could perhaps apply to different types of jobs) and perhaps even earn some money (so I perhaps wouldn’t have to apply to any jobs at all… yes I know, but it's nice to dream).

But the App Store is already filled with so much junk, you say? Ah, but therein lies both the challenge and the twist! You see, I’m not a developer. At one point in time, I did begin a major in computer science but quickly got sidetracked into interaction design, switched universities and got a degree in pure product design instead (make that two degrees now, actually). So, I was literally starting from zero, throwing myself headfirst into a lion’s den with several hundred thousand lions…

A man with a plan

I strongly believe in function before form and eating my own dog food. I also know that beautiful things work better (read Don Norman’s Emotional Design if you don’t believe me). With that in mind, I set out to try to find a problem to solve, which is the way I begin all my work. As it happens, I already had one which was good for a number of reasons. First, it fit the form factor of the iPhone, second it had a very small and narrow scope and third, there were already dozens upon dozens of similar apps available. Now, why was that last bit a good thing? Because it would be a very good test to see if I could make something which stood out, to see if I was a good designer.

The problem I wanted to solve was something I had encountered quite frequently recently. I would receive announcements for webcasts or similar appointments, given as a time in, for example “PST” or “ET”, which I as a European had difficulty keeping track of. Searching the App Store for a solution, everyone seemed to do it the other way around; forcing you to choose a place first, and only revealing the zone name afterwards (if at all). Also, they were mostly rather poorly designed.

“I’m allergic to math, which is why I chose to be a designer instead”

App development for dummies

It was about ten years ago since I last did any coding, and it was really not my cup of tea. You see, turns out I’m allergic to math, which is why I chose to be a designer instead. I like things which feel natural and intuitive, and the rigid rules of programming rarely appear as such to me (even though they may have very good reasons as to why they are that way). Xcode, the software Apple provides to write apps, does compare to Photoshop ever so slightly though: It’s similarly complicated to a new user.

Speaking of complicated, I had to learn a new language called Objective-C for this. Immediately you are showered in terms like “property”, “reference”, “block” and so on. On top of that, if you are learning about iPhone programming at the same time, you encounter more stuff like “outlet”, “delegate” and “protocol”. The Stanford University iPhone programming lectures on Youtube helped a lot, but that beginner learning curve was so steep for me that it took weeks just to be able to understand how to look at an example and roughly be able to tell what was actually going on. Also, the MVC (Model-View-Controller) concept, which basically everything in the Apple SDK (Software-Development-Kit) is grounded in, is something I still feel I don’t fully grasp. Before all this, though, I had to sign up for the Apple Developer Program (which comes with a subscription fee of $99 per year). It was simple enough, though not nearly as straight forward as using their consumer store fronts. That was also my first taste of the fact that Apple’s slogan “it just works” does not apply when you are a developer.

My initial napkin sketches
showing rather cluttered concepts

State of the art

I thought that I had spotted a tiny gap in the market, but that market was incredibly crowded. So, how do you stand out? My first idea was to base my design on my favourite converter app, Convertbot from Tapbots. It was one of the first, and still one of the most graphically elaborate apps I’ve come across. They used something similar to the original iPod jog wheel as the focus of their interaction. Everything was custom built with very detailed graphics making it feel high tech and three dimensional. And then iOS 7 came out and changed everything.

For me, that huge shake up was actually a positive thing, with great timing too. Let me explain. From the beginning, the iPhone’s interface had been full of glossy highlights, deep bevels, shadows and textures, and over the years people got better and better and doing those kinds of interfaces. Having zero experience with this, pulling off a realistic looking app like Convertbot would mean that I had to get really good, really fast, at something those guys had already been great at for quite a while. But when iOS 7 was revealed and flattened everything out, removing all of that textured, real world mimicry (called skeuomorphism) meant that suddenly things were back at zero, and the play field was level again.

And here is the simplified final design
as it appeared in Xcode

Great artists steal

To set myself apart I knew I had to have some sort of bespoke interface, but I didn’t even understand how to create a default interface yet. After the Stanford videos and some Apple videos, I decided that the fastest way would be to continue learning by example. I tried to find as many snippets of code as possible and put everything together like LEGO. But as with anything, there is good and bad information out there. The site Stack Overflow, which appeared at the top of Google almost every time I searched for something, contained both. A relatively ancient piece of communication technology called IRC (Internet Relay Chat), became surprisingly helpful in sorting things out.

In my original very simple design concept, I actually never planned to allow the user to change minutes at all, but then I discovered that there were time zones with not only half hour offsets, but even three quarters of an hour! After quickly discarding the silly idea of having a separate minute display, I also discarded the circular graphics since the interaction would become too complicated.

“Suddenly things were back at zero, and the play field was level again”

It's a trap

Because I didn’t really know what I was doing, about a third way into the project I had to replace one of the core components I was building everything around. The replacement worked better (and would even have allowed me to make the circular stuff easier if I wanted to), but it took a while to understand its more abstract implementation. It also forced me to go looking for a new way of creating one of my “illusions”, and I had to pull a whole new centering function from an Apple example, because I never would have figured that one out on my own (and I still don’t fully understand the trick to that particular method).

I also had to battle glitches in the Xcode software, at one time recreating the entire project from scratch in exactly the same way to get things working, because even though I followed tutorials to the letter and double checked with others, Xcode refused to produce the expected results. Xcode also provides two different ways of backing up the project, and I had to switch from one to the other because I accidentally lost two days of work at one point, only to discover that both methods have severe drawbacks. I ended up using regular Time Machine backups in the end.

At the very end, again because I didn’t really know what I was doing, I had to rewrite everything that had to do with time zones in my app because I handled those daylight savings changes badly. But for once, the resulting new code looked much better than the mess I had accumulated up until then. You see, when you first write a piece of code, it can look beautiful, like a haiku. And then you discover an instance where it doesn’t work. And you have to change the order of things, or add a work around, or handle a special case, and then you end up with something that’s aptly called “spaghetti code”.

To get my app running on my device, for testers, and ultimately the App Store itself, it felt like the instructions did not correspond to what you actually needed to do. For example, when I had to trouble shoot the iTunes Connect upload, the error messages said the complete opposite of what was actually going on. If this was Microsoft, I wouldn’t have batted an eyelid, but since I was used to the Apple polish down to every little detail, taking the role of a developer was a comparatively frustrating experience at times.

Work in progress

Lessons learned

Your first project should really be super simple. In the end, from start to finish for me this took a bit over four months (part time). As I mentioned, if you never done anything like this before, the threshold you need to get over in the beginning is incredibly high. By contrast, I saw someone post a screenshot of an app he put together at work in one day, and it was way more advanced than my whole project.

Never make more than one change before you test it. Everything you do can have unanticipated side effects that you might not immediately discover, and the more changes you do, the more weird things may happen down the line and then you will have an even more difficult time tracking them down. This is sort of the opposite way one generally does design, where first you sketch something with broad strokes to get a feel for the whole thing, while with programming you sort of need to start with the details and make sure each one works before putting them together.

Many mottos regarding the creative process still apply. You have to kill your darlings. There are happy accidents. It’s important to keep it simple, stupid. And so on. They may appear a bit differently though, but I believe you will learn to recognize them.

Final thoughts

As I mentioned in the beginning, I did study computer science for a while many years ago, and I’ve worked as an interface designer since, close to real developers, and from my designer perspective, Objective-C is by far the nicest programming language I’ve come across. Even though it was very difficult to get started using it, well written code becomes rather natural to read and understand, unlike the more common languages like C# or C++, which just as they are named look like complete gibberish. Xcode did also have a very nice built in prediction system that actually works well (unlike the iPhone’s spell checker). All in all, I wasn’t deterred like when I look at Microsoft’s Visual Studio, which still is a scary piece of software.

Relief and anxiety
from seeing my app in
iTunes for the first time

So what’s next? As I said, I wasn’t discouraged by this experience, so I will most likely continue, if time permits and if I can find the right project. Right now, my only app idea is too large for myself to take on. I have several ideas for games, which seems like an easier market, but I know is also much more complex to do than apps. One idea I’m toying with is to just look at the top of the charts in the App Store and find an app which I believe I can do better and just charge right ahead.

I’ve already said that I really had no idea what I was doing going into all this, and I still don’t know what (if anything) will happen. Everything I did was done in a vacuum without end-user contact, as I know of no sites online following app development unlike the dozens of sites I know exist which follow game development, and I know of no online communities for apps or app developers unlike the dozens of communities which exist for games, gamers and game developers. But perhaps that’s another gap in the market to fill?

-Robert Silesius