I am a UX/UI Designer at Big Nerd Ranch. I have 7 years of UX and UI design experience with a variety of apps and platforms, and I have exactly 0 years of experience writing code. That said, since I’ve been working at Big Nerd Ranch, I’ve been interested in taking one of our coding bootcamps. So recently, I decided to jump in to the iOS Essentials with Swift course.
I had my reservations… Would I be able to understand the material? Would I be able to keep up? Am I crazy for wanting to know more about iOS development? With such a high barrier of entry, would taking a coding class be worth it?
Even with my reservations, my desire to understand development in order to improve my design work made the course worth it to me. I wanted to understand how apps work under the hood so that I could better understand the technical constraints behind my designs. Essentially, my goal going into the course was to bridge the gap between design and development in my iOS project team.
Specifically, I wanted to understand the basics of iOS apps operate, to explore the structure of apps in code, and to achieve a functional understanding of Xcode and Swift. At this point, you may be thinking something along the lines of “I never want to code an app myself. Why is being familiar with Xcode and Swift useful?”
I used to agree. But in my last year as a Big Nerd Ranch designer, I’ve come to understand the importance of understanding development. When I understand the basics of what happens with my designs, it makes me (and my entire team) even better consultants. More specifically, understanding Xcode and Swift also enables me to understand the technological constraints behind my designs and to channel my work using realistic parameters. If I have a general idea of how the infrastructure for my idea works, I have an easier time knowing what is or is not possible, or even how I might make the impossible possible.
Big Nerd Ranch’s iOS Essentials with Swift class is intended for all types of macOS and iOS developers, from platform experts to first-timers. The strategy of the class is to teach the fundamentals and best practices of programming while learning Swift.
Before class, I was assigned pre-reading from Swift Programming: The Big Nerd Ranch Guide. Through the reading, I learned about Xcode and Playground, as well as Swift basics like types, constants, variables, conditions, numbers, switch, loops, strings and options. By the time I got to class, I had a solid foundation of the basics. To my surprise, I found the reading really enjoyable and accessible even though I have no background in programming.
The first few days at the Ranch consisted of manageable twenty-minute lectures followed by thirty-minute working sessions in Xcode Playground. Writing Swift code in a Playground let me experiment with code and see the results immediately, without the overhead of building and running an app. The exercises in Playground built on the class discussion and helped to unpack more difficult ideas. I made mistakes throughout this process. Actually I made A LOT of mistakes. But through these mistakes, I learned about Swift, app architecture and native iOS features and functions.
Throughout the next few days, we coded and created apps to learn about Xcode and UIKit. Most iOS apps are built using components from UIKit, a programming framework that defines common interface elements. This framework lets apps achieve a consistent appearance across the system, while offering a high level of customization. We also focused on how UIKit defines the functionality an app can adopt. Using this framework, we were able to simulate how apps respond to gestures on the touchscreen and enable features such as drawing.
I would be lying if I said I mastered iOS programming after seven days or that I understood all of the concepts. Swift is incredibly nuanced and complex, and being successful in iOS development takes years of work. However, with the help of the Big Nerd Ranch instructors and the course materials, I learned enough to start writing code in Swift and accomplished a variety of programming tasks.
As a designer, I benefitted greatly from taking the iOS Essentials with Swift course. Xcode is at the heart of the Apple development experience and is the environment for building apps for the Mac, iPhone, iPad, Apple Watch and Apple TV. Through Xcode, I was able to understand an iOS developer’s workflow from concept, to code, to customers. I also achieved a working knowledge of Swift code. But understanding code doesn’t necessarily mean I have to live in it.
Having knowledge of both design and development makes me a better communicator. It gives me insight into what is possible to implement when I design. Articulating my ideas with the right terminology allows me to properly communicate my design ideas to people who specialize in Swift. It also helps me to construct a more intelligent roadmap of how, when, and in what order to hand things off to developers.
Overall, it was the perfect experience for me. I learned enough to make it extremely useful, without feeling overwhelmed. I highly recommend the iOS Essentials with Swift course to fellow designers or to anyone with little or no programming experience. Xcode and Swift are extremely accessible and honestly really fun! Taking the course demystified the development process and gave me new level of appreciation for developers and the work that they do.
In fact, I loved it so much that I’m planning to take the Android Essentials with Kotlin course next so that I can have the same experience when designing for Android apps. Hello, (new) world.