Q&A With Sam Soffes: Learning How to Make an iPhone Photo-Browsing App
What’s more fun than photo-bombing?
How about learning to build a mobile app that displays your favorite forays into photography mischievousness?
Not into photo-bombing? How about cute puppy photos? Family vacation shots? Your vast collection of selfies?
If so, guest teacher Sam Soffes has a course for you: Learn to build an iOS photo browsing app from scratch. You’ll discover invaluable skills that’ll help you in all your mobile development and design work.
If you’re interested in building this app or learning more about collection views and control transitions, sign up for a Treehouse account today. We’ll teach you from start to finish.
Sam spoke with Treehouse this week about the course and the skills students will use. He also has insights on the benefits of collaborating on iOS apps, whether you should write pure code or use Interface Builder, and other important strategies to consider when you’re building your own photo-browsing app.
Treehouse: What are some of the important top-level skills students will learn while taking this course?
Sam: You’ll learn about collection views and using physics, and you’ll control transitions and networking. All that is important stuff, especially networking and collection views. Those are key. Almost every mobile app is connected to the Internet some way or another. Learning how to do that and understanding how it works is important.
Can you address why you didn’t use Apple’s Interface Builder and why it’s all code?
I wrote a post on the Treehouse blog a while ago on why I don’t use Interface Builder. And there are a bunch more reasons than I listed in my post. I think it’s important to understand how everything works and not just being told to click checkboxes here and there. Understand how it works by seeing the code. I thought it was important to show the other side of how to do it. It comes down to preference. This is how I prefer to work so that’s how I decided to teach the course if I were to build it for real on my own. Hopefully, it’s useful to watch that.
Someone said, “Oh, should I redo everything I’ve done in code now?” No, there’s no sense in redoing for the sake of redoing it unless you want to redo it for the sake of learning. It was more to show another approach of how to do things.
Does your approach make students better at learning mobile app development?
I think so. Almost everyone I’ve worked in my career has done it without Interface Builder and storyboards. This is a pretty common pattern. Most people prefer to not use it. It’s easier to work with a team without using storyboards or Interface Builder because code is easier to collaborate on than a crazy file from Apple.
Seeing how more real-world applications are built is important. That was my goal all along: Make something that is as close to a real-world application as possible and make something useful.
One of the ideas behind the course is this: “Let’s make this app together.” When is collaboration a good thing when developing an app, and when should you strike out on your own?
It depends on what you’re making. The key to working with someone else is having a good way to separate what everyone is working on: “This person is going to do all the networking stuff. And this person is going to do all the visual stuff.”
Having a clear understanding of responsibilities and separation makes things work a lot more smoothly than having everyone dive in and fight over the fun tasks. Split it up in a way that makes sense. That has worked well for me in the past.
What are the benefits to working on your own on mobile apps?
If you have an idea, you can just try it instead of worrying, “Will this slow anyone down because I am going to try some crazy stuff and I may break something?” It’s nice to have that freedom sometimes.
But if you’re working with someone else, one of the biggest benefits is it keeps you motivated. If you’re just working on some app by yourself on the weekends, it’s easy to get distracted or lose interest. Learning how to work well with someone else on mobile apps is an important skill to have, especially if you want to take your Treehouse skills and get a job. Learning how to work with a team is essential.
We’ve all heard the cliché: There’s an app for that. But there can’t be an app for everything — just yet. What are some offbeat or practical uses for which you’ve thought: “There should be an app for this!” or something that has sparked your imagination?
Recently, coming up with something that is good at scoring board games is something I’ve been thinking about. It’s kind of an obscure thing. Surely there is something for that, but I haven’t found anything that I was like, “This is awesome.” I was trying to think of a calculator that is more abstract for counting and not necessarily for doing actual math.
I think it’s interesting to think about something you’re doing that is tedious — like trying to count things on a board game or figuring out what kind of food you can eat on a particular diet. If it’s something you have to think about for a while, maybe you can make something to make [the process] better.
That’s usually my thought-process around any product that I want to work on: What’s something I’m struggling with and how can I make something to solve that?