How a Designer Built and Shipped an iOS App in 6 Months

There’s a constant debate about whether or not designers should learn to code. While I’m happy to talk about that at length, I think it’s helpful to look at it from a different perspective.

What are you trying to accomplish? Are you trying to get a job, build up your resume, break into a new area of design, communicate better with devs? Learning to code really depends on what you want to accomplish.

In my case, I wanted to ship a product.

A Little Backstory

In 2015, I worked on the first version of Sofa with two friends. I was the designer, one was the iOS dev and the other was the web dev. We worked, and still do work, very well together.

Sofa 1.0

At this point I didn’t need to know how to code. As a long as I could communicate the design, that was good enough. We shipped version 1.0 after about a year of development and beta testing.

Then life got in the way. This was a side project for all of us and we still had full-time jobs. The two devs got extremely busy and couldn’t work on Sofa at the same capacity. The app sat there not being updated and it was painful for me. I had tons of ideas based on user feedback to implement, but was powerless to do so. This was a big driver for me to learn how to code.

Starting with Framer

Like most designers, I had dabbled in HTML, CSS and a little Javascript. It wasn’t until I used Framer that I really started understanding the fundamentals.

This is not my prototype, just a screenshot

Framer is such an amazing tool for designers to learn how to code. Being able to see the results of your code live helped to teach me what was actually happening. Framer taught me basic things like variables, for-loops and functions. Nothing fancy, but totally necessary.

From there I dabbled a bit more in Javascript but my heart was always in native iOS apps.

Moving on to Swift

I had tried to learn iOS in the pre-Swift days, but Objective-C was difficult for me to digest. When Swift was announced, I immediately thought “Hey, I might be able to learn that.” I wasn’t sure, but it gave me a little confidence.

This is the hard part. There are many resources for learning iOS development, but most are pretty terrible. The teachers make too many assumptions about what the student already knows. This is true even for courses designed for beginners. They tell you how to do “X”, but never tell you that you also need to do “A, B & C”. It ends up being incredibly confusing, intimidating and demoralizing.

The single best resource I’ve used to get started learning iOS development was from Meng To. His Design + Code course is absolute gold. He’s a designer who knows how to communicate with other designers. This is really important and one of the main reasons I think other learning sources aren’t as good. You have developers teaching non-developers. They forget what is was like to learn at the beginning. Meng solves all of this for designers.

Design+Code website

Design + Code taught me how to send data back and forth between views, change the design of the app with code and use Storyboards. Again, other courses do this, but they don’t explain it well to designers.

That course taught me the fundamentals of iOS development. From there I was able to explore and build a few prototypes. One was an early Sofa 2 prototype and the other was a collaborative whiteboard for iPads. I never finished either of them, but learned a ton in the process.

Building and Shipping Sofa 2.0 in 6 Months

In the summer of 2017, I got to the point where I couldn’t wait any longer to move Sofa forward. My teammates’ shedules were not letting up and it could be another year until they could contribute again. That’s when I decided to build 2.0 myself.

When I started I didn’t know exactly how I was going to do it, but I dove in and got started. I knew enough of the basics to get going.

First few commits for Sofa 2.0

While building, there where two resources I used constantly: Stack Overflow and YouTube. Yes, YouTube. When you’re learning something new, reading about it isn’t always enough. Seeing someone solve the problem you have is incredibly helpful. That’s where YouTube shines. I would type in whatever I was trying to figure and then start watching. There are a few YouTube accounts that consistently taught me how to do things:

I am eternally grateful to these people for putting out great content that was easy to understand.

Sofa 2.0 build. I could never get the green to work.

From July to September, I worked on getting the basic experience of the app functioning. Then from September to December I had beta testers to help test assumptions and refine the experience.

With every week that went by, I was gaining more confidence. There were a few tricky issues to figure out and a few things I was scared of, like Core Data, but overall it ended being fairly straightforward.

I ended up launching Sofa 2.0 on December 6, 2017. Technically a little less than 6 months, but I was never good at math anyway. It’s hard to describe the feeling of working on something for a long time and then sharing it with the world. It’s scary, exciting, humbling and most all…fun!

During this time, my good friend and Sofa teammate, Oliver Pfeffer was there supporting me. He wrote the original Sofa app and is the best developer/teammate I’ve ever worked with. When I told him I was going to build version 2 myself, he was immediately supportive. He always pointed me in the right direction when I was stuck, without giving me the answer. He allowed me to figure stuff out on my own so I could learn. Towards the end he did a code review ( I have a lot of refactoring to do 😜) and wrote a little library to cleanup the book data from Google Books. He may not think so, but he was heavily influential in the process of building 2.0.

Shipped version of Sofa 2.0

I didn’t do this alone

I am hyper aware that I didn’t and couldn’t do any of this alone. Framer taught me the basics of coding, Meng To taught me the basics of iOS development, and Stack Overflow, YouTube and Oli taught me deeper parts of iOS.

It’s not only the people who taught me code, it’s also the people who support me everyday. My wife, family, friends, co-workers, bosses, etc. I am extremely lucky to be surrounded by people who care about me and support my goofy passions. It’s something I never forget.

You can do this too

This isn’t just for designers, but for everyone. If you have a goal you’re driving towards, but currently lack the skills, don’t worry. Learning new things today is easier than at any other point in history. All you have to do is put in the time. It may not take as long or be as hard as you think 👍


If you’re interested in seeing the fruits of my labor, you can download Sofa from the App Store 🛋. Feel free to reach out to me on Twitter with any questions or comments.