We’re excited to continue our interview series with a prominent software developer who’s been in the field for a while. Steve Streza is the Lead Platform Developer for Pocket. For those that don’t know, Pocket is a view-later service in which you can send links for reading, watching, or viewing later, distraction free. Full disclosure: Steve is a friend of mine, and I use Pocket regularly. This doesn’t diminish the fact that it really is a fantastic service run by a great team. Big thanks to Steve for taking the time to chat.
Nate Boateng: Thanks for taking some time to hang out, Steve. Can we start by you telling us about yourself? Where you’re from, and what you’re doing currently for work?
Steve Streza: Thanks for inviting me for an interview! I was born and raised in Ohio, in a suburb of Cleveland. I went to college for two and a half years for a degree in Software Engineering at the Rochester Institute of Technology in Rochester, NY. While there, I worked for a tech startup, BlueTie, working on an email/calendar/contacts application that was (at the time) one of the most complex and powerful apps on the web. In 2008 I dropped out and joined Ambrosia Software, where I worked on Soundboard, an audio app for DJs and podcasters, as well as helped to build and improve the website. In 2010, I moved to San Francisco and joined ngmoco:), and helped to build out the plus+ social gaming network, which since became Mobage. Last year, I joined the Pocket team (then Read It Later) as Lead Platform Developer, where I’ve spent the last 6 months building our iOS and Android apps which just launched this week.
NB: It seems like there are now kids as young as 12 and 13 that have learned how to code. When did you start in software development? Were you formally trained or self-taught?
SS: I got my first Mac when I was about 5 years old, and started playing around with a basic form of programming when I was around 11 years old, using a wonderfully basic tool named GameMaker (which was probably the best $5 my parents ever spent) by Al Staffieri, Jr. I was an avid gamer as a kid, and it was a desire to make video games that drove me to learn this stuff. I moved on to REALbasic a couple years later, and then into full-on Cocoa programming for the Mac in high school. At some point around that time, my interest in making games started to fade, and apps started becoming more interesting. Having built a couple (terrible) games when younger, I began to appreciate the immense scope of work that went into making them – graphics, music, plot, and then all the actual code. Apps seemed to be doable by one person from start to finish, and it was clearer that apps could actually improve people’s lives in a significant way.
I took some classes in school, but most of it was self-taught. My high school offered some side classes in Pascal and C++ which I eagerly took, despite the knowledge that those languages are not as relevant to what I wanted to do, which was writing awesome Mac apps. The education provided a helpful foundation in understanding some programming concepts, but wasn’t really helpful in understanding how to build an entire app. I went to RIT as a software engineering major, which provided more of a background in structuring applications as separate logical pieces (e.g. the UI elements are separate pieces of code vs. the data storage pieces vs. the parts which talked to the Internet, etc.). I also spent a TON of time just writing stuff. Most of it never was given to anyone, but all of it was valuable experience in understanding what worked and what didn’t. The combination of basic fundamentals, high level structures, and experience turned me into the app developer I am today.
NB: Can you give any advice to anyone out there that might be interested in development? Maybe some tips on where to start or good resources?
SS: Just start writing code. Anything. Find some problem in your life that you can solve using a computer, and see if you can figure out a way to make the computer automate that thing. As you do this, you learn more and more about how the computer works, and will have an easier time bending it to your will. It sounds scary, but in a very short time you’ll find that you can build something pretty complex pretty easily. It doesn’t matter how old you are, what your experience is with computers, or how far you want to pursue software development. If you want to learn how to use the computer better, if you want to speed up repetitive tasks you do on your phone, or if you want to make the next mega-hit Angry Birds, all you need is a drive to solve problems and a desire to learn.
In terms of resources, there are a ton out there on the Internet. If you have a computer, you don’t have to spend a single penny for a ton of free resources. Xcode is free on the App Store. A few Google searches will quickly reveal tutorials, sample code, open source projects, and even entire apps waiting. If you have questions, you can find developers on Twitter, Stack Overflow, IRC, forums, and other tools. In my experience, developers tend to be friendly and will help you out if you’ve demonstrated that you’re actually stuck on a problem and aren’t just looking for someone to solve it for you. If you don’t mind spending a little money, there are several books which will go in-depth and really walk you through writing an iPhone app from scratch, from start to end. I don’t have any specific resources for newbies, partially because I’m not current on what the best specific tutorials or books are, but more importantly because the biggest skill you need is the ability to use the Internet to find the answers for yourself…with a nudge in the right direction.
If you want to take classes on the subject, they can be helpful, but in general they will probably not teach you everything. Technology is advancing at such a fast pace these days that education simply can’t keep up. This is a problem that will require rethinking our entire education system to take advantage of technology, but that is a process that will probably take at least a decade. As I said above, the education system is really equipped to provide the foundational concepts of development, but will not provide you the skills needed to do everything. So much of software engineering is just problem solving; I need to do X, how can I get from where I am now to X, and that comes with practice. Some programs at bleeding-edge schools may be better equipped to provide that kind of knowledge, but from what I’ve seen, they’re exceptions to the rule.
NB: Loads of people are moving to the Bay Area to work for tech companies. What compelled you to relocate to San Francisco and work with the Pocket team. What was that process like?
SS: From the day the iPhone was announced, the first question I had about it was “how can I write apps for this?”. Apple announced the iPhone SDK in late 2007; I dropped out of college in the beginning of 2008. It was as clear as night and day that the iPhone was going to cause the next revolution in software, and I wanted to be a part of it. As the market for apps started to blow up, and a million startups sprang up to create apps for these new platforms, a supply/demand problem became evident where there were more problems to solve than there were engineers to solve them. There is a lot of flexibility in Silicon Valley right now for engineers, and that doesn’t seem to be going away anytime soon.
It is important to note that San Francisco is not the only place where this is happening. The software industry is lucky to be one of the few to ride through the economic recession of the last few years; in fact it has been growing massively. Cities all over the world are gunning to be “the next Silicon Valley”, with tech incubators and venture capital firms popping up to create new things everywhere. There is a ton of focus and attention on tech in the Bay Area right now, and a great culture to facilitate it, but developers who want to be a part don’t necessarily have to move here. It is a great place and a great time to live in San Francisco, though.
NB: What’s a typical day at the Pocket office like? Also, what are some of the tools you use to get work done? (Mac setup, test devices, vital software, etc.)
SS: I typically get to the office around 10 or 11 AM and work until 8 or 9. Our office has 7 of our employees in it, and we basically all sit in a giant room. Sitting on my desk is my 13“ MacBook Pro and a 24” HP monitor, hooked up to an Apple keyboard and a Magic Trackpad. Depending on the day, there will be some combination of iPhones, iPads, Android phones, Android tablets, and Kindle Fires sitting next to it, usually no fewer than 3 devices. Most of my day is spent in software, and I try to mix up what I use fairly frequently. I use Xcode for iOS development, Sublime Text 2 for web development, Eclipse for Android development, Git for version control, Photoshop for graphic and interface design. We have one meeting a week, on Monday morning, where we lay out the next week’s work, and that’s it. Otherwise, we just have little ad-hoc discussions whenever we need to, and anyone can jump into a discussion if they want. It’s a pretty informal way to get work done and it keeps us moving.
NB: As the view-later app market gets more crowded, how does Pocket try to differentiate, and do you think there’s a room for everyone?
SS: The industry took an interesting turn in the last couple years. People have started to own multiple Internet-enabled devices, instead of just one. While tech-savvy people raced to buy iPads as soon as they were released, the transition into the mainstream is still beginning. And the need for view-later apps like Pocket is even greater when you have multiple devices. This market has the potential to be huge.
Right now, our biggest competition is not the existing competitors in the market, but the existing hacks people use to save stuff for later. Similarly, our target market is the vast majority of people on the Internet who aren’t already using a view-later service like Pocket. Anyone who’s ever emailed themselves a link, or starred something in Google Reader to find later, or favorited a tweet so they could find it easier already knows the value of time-shifting media on the Internet. Today, they’re using a pretty rudimentary workaround to achieve this goal. We’re hoping tomorrow they’ll find Pocket.
NB: Are there any other projects you’ve worked on that you would like to share?
SS: For the last few months, all of my attention has been focused on making sure Pocket was the best view-later app on the market. Once this release settles a bit, I’ll have a bit more free time to develop some of the ideas that have been floating around my head.
NB: While spirited, the old-school Mac vs PC had a fun element to it. What are your thoughts on the ongoing “war” between iOS and Android fans that seems to be getting uglier by the day?
SS: This mobile computing thing is in its infancy. We’re still trying to figure out the essentials. iOS has clearly nailed many aspects of the mobile experience, but are catching up in others (e.g. notifications in iOS 5 being a prettier yet less functional copy of what Android has had for years). Android came at the notion of a phone from a completely different direction, and has some really compelling and useful features, but has been playing catch up in the areas of user experience.
Some people choose to pick sides, and that’s fine. People have certain requirements of their mobile devices, such as an amazing user experience, or of total flexibility, or of price, or how it feels in your hand, or what apps it runs. It’s pretty clear there is no one device or one platform that will satisfy every need.
Some people call Android devices terrible, or attack Apple for not allowing more open development. I take a more optimistic view of the market. I celebrate all this insanely cool tech that is as powerful as any computer, yet has a persistent Internet connection and fits into your pocket. It is a crazy exciting time to be in tech right now, and choosing sides when this is all so new and moving so quickly seems short-sighted.
When I was a kid I was an unabashed Apple fanboy. The PC market had matured to the point where legacy ideas from the 80s were holding back progress. Apple, the underdog, clearly had the best product in the Mac, and its only competitor, Windows, was awful by comparison. These days the innovation is flying fast and rapid changes are being made on multiple platforms. My current favorite now (and I’m sure 15 year old Steve is screaming at me right now) is actually Windows Phone 7, who is trying to do something really different with their UI, and who is doing it in a way that seems a happy medium between the openness of Android and the user experience of the iPhone. It’s truly a shame that platform isn’t able to pick up more traction. But I still celebrate all the mobile platforms.
I just wish we all had a little more respect and a little less animus for each other’s choices in device.
NB: Steve, thanks so much for taking the time out to share some insight with our readers. We really appreciate it!