What's It Like to be an iPhone Developer? - with Jeff LaMarche31:26 with Amit Bijlani
Jeff LaMarche is a Mac and iOS developer with more than 20 years of programming experience. Jeff was one of the first authors to write a book on iPhone development aptly titled Beginning iPhone Development. With a lot more books under his belt, he is the most coveted author and speaker in the iOS development community. Aside from being an author, Jeff is a principal at MartianCraft, an iOS and Android development consulting firm. Jeff also writes about iOS development for his widely-read blog at iphonedevelopment.blogspot.com.
I'm here with Jeff LaMarche. [treehouse friends] 0:00 He is a prominent developer in the iPhone development community. 0:02 He's written quite a few books, and he is the founder of MartianCraft. 0:06 One of. >>One of. Right. 0:10 Why don't you tell us a little bit about how you became an iPhone developer. 0:12 I've been programming for a long time. [Jeff LaMarche - Programmer and Author] 0:17 I didn't actually start doing it professionally until the dot com boom. 0:20 There was such a shortage of talent that they were willing to look at people 0:23 who didn't have traditional backgrounds. 0:25 I sort of got my foot in the door working at a company called PeopleSoft. 0:28 What were you doing? >>I did a number of things. 0:31 I actually went to law school. >>So you were a lawyer. 0:34 For about 20 days. >>Oh, okay. [laughs] 0:37 I passed the bar, and less than a month later I was out the door. 0:41 And then I did whatever I needed to make money. 0:45 I did clerical temping. I did pretty much anything. 0:49 I did some graphic design work even though I didn't really have a background with it. 0:53 I just kind of bounced around and did whatever I could to make money. 0:56 So what made you get into software development? 1:01 I had been programming as a hobby since 1980 just for fun. 1:04 I was going to go to school for it. 1:11 Sort of a long story. I didn't end up going to school for it. 1:14 This place where I went to school wouldn't let me test out 1:18 of some of the earlier level classes, and it was just really boring for me, 1:22 so I decided to do something else. 1:25 And then it got to a point where I didn't have the right background. 1:27 And then the whole dot com thing, there was such a shortage 1:30 it gave me the chance to get back into it. 1:34 So basically, the dot com boom you got into software development. 1:36 Doing it professionally. >>Full time. >>Right. 1:41 I did that for a few years and then I went out and was doing consulting, 1:43 travel-based consulting, which was interesting technical problems 1:48 but a horrible work environment--awful. 1:53 Large bureaucracies, big companies, and just traveling all the time, 1:56 48, 50 weeks a year. 2:00 So what were you consulting on? Java or--? 2:02 A lot of what I did was PeopleSoft. 2:05 I didn't start this way, but I sort of ended up with a specialty 2:09 in doing very large volume data integrations between systems, 2:12 which is not what I would have chosen, but it paid well and it was steady work. 2:16 So you were actually coding. >>Oh yeah. 2:23 I was always a technical consultant when I was out there. 2:25 I worked in the management consulting realm, 2:27 but I was always the technical guy. 2:29 And so I did that, and I was rolling off of about a 2-year, 2½-year project 2:32 in March of 2008 when they announced the iPhone SDK. 2:37 I had been coding for a long time, I had been doing Cocoa on a hobby level 2:42 since whenever they came out with OS X DP3, so--I don't know--'98, '99. 2:46 I had written for MacTech magazine. I did their Cocoa article for a while. 2:54 And before the press event was over, I called Dave Mark, 2:58 who had been my editor-in-chief back at MacTech, 3:03 and I said, "I think this is going to be big. I want to write something." 3:07 At that point he was actually in the process of selling-- 3:10 he had a small publishing company--his catalog of books to Apress. 3:14 They wanted a book on the iPhone, so within a week or 2 3:17 we had the contract to write the book. 3:22 So had you written an app yet or you just wanted to write the book 3:24 because you knew the language? 3:27 I actually had made this call before we could download it. >>Oh, wow. Okay. 3:29 So I made the call and then I went and downloaded the SDK. >>[laughs] 3:35 But I knew it was going to be based on a technology that I had worked with 3:39 and had even written about. 3:43 I actually had written about 90% of the Cocoa book for Dave's company 3:45 that had never gotten published. 3:50 Actually, part of it did get recycled into the Apress Learn Cocoa book 3:52 but very heavily recycled and rewritten by Jack. 3:56 I actually was in the process of writing a very similar book, 3:59 was able to recycle some of the conceptual stuff, 4:05 and yeah, it was lucky timing and an opportunity for me to get off the road 4:10 and to get into something that I wanted to be doing more 4:16 rather than doing something that paid well. 4:19 I took quite a cut in income-- >>I can imagine. 4:22 for a while and it's starting to recover now 4:25 because obviously this is a great place to be right now. >>Oh, absolutely. 4:28 You went from something tried and tested to-- 4:30 You took a risk because back then 4:33 nobody knew what was going to happen with the iPhone. >>It was a risk. 4:34 It was a pretty big risk, mostly because I had to take several months of no pay 4:36 to write the book. 4:40 But I always knew I could go back to that if I wanted to. 4:42 There was always work there, so it wasn't a huge risk but it was a financial hit for sure. 4:44 It was one of the best decisions I ever made. 4:51 So the iPhone comes out and what's your first reaction? 4:53 When they announced it, I was kind of like, "Yay, a phone." 4:57 I'll be honest with you. I honestly didn't see the hype at first. 5:01 And then when I actually held one I was like, "Oh, this is nice." 5:06 I was very much a minimalist phone person before that. 5:09 I wanted one that was solid because I traveled a lot 5:12 and I tended to be rough on phones. 5:15 So I wanted something that could sort of put up with abuse and make phone calls. 5:16 That's all I really wanted. >>Oh, wow. 5:19 So you didn't have one of the BlackBerrys or something. 5:22 I had no interest in those. 5:24 The iPhone was just a completely different beast, 5:26 and once I held one and played with it, then yeah, I had to have one. 5:30 So did you automatically start having all kinds of visions of different apps 5:34 you can build for this thing, or was it not that big right away? 5:38 Not right away because it took me about 4, 4½ months to get the book written. 5:44 When I started writing it, everything was in Flux. 5:54 The first version's Interface Builder wasn't there. 5:57 And then Interface Builder was there but parts of it didn't work. 5:59 Some parts worked and then in the next version Interface Builder would work 6:02 but they would have changed stuff, so your old NIM files wouldn't. 6:05 It was this constant-- 6:07 A lot of the early chapters were completely rewritten several times. >>I can imagine. 6:08 And so it was a very long process. 6:12 I wasn't really thinking of apps larger than the scale needed to show concepts-- 6:14 what I needed to teach somebody. 6:19 It wasn't until I finished the book, sort of had it in the can, that I sort of moved on 6:21 and started thinking about apps. 6:26 But I needed money, so I didn't want to go into selling an app in the App Store 6:28 at that point because I needed faster money. 6:33 So I went into doing some contracting. >>Sure. 6:35 Writing a book makes you the authority. 6:37 I read your book. That's how I got started. 6:39 This was actually before the book could be published 6:42 because I don't know if you remember we had the NDA. >>Oh, right. 6:44 So we actually sat on this manuscript for quite a while. 6:46 It was basically finished in August-ish. 6:49 I think we revised one of the later chapters maybe in September, 6:53 but it was basically done and ready to go. 6:56 At one point we were actually hearing from inside Apple 7:00 that it probably was not going to drop at all; it was just going to be there forever. 7:03 And then the next day it drops. 7:05 And so all of a sudden it's back on. 7:08 I had to go back to working during that time. 7:09 I wasn't an authority at that point. 7:13 But there were no authorities-- >>Exactly. 7:16 It's so new that anybody could be the authority. >>Right. 7:19 Although you had the advantage of having experience with Cocoa for all those years. 7:22 Right, which was helpful because obviously there was a much higher demand. 7:28 The old joke in the Cocoa community back in the early 2000s was, 7:31 Do you know what the difference between a large pizza and a Cocoa developer is? 7:34 A large pizza can still feed a family of 4. >>[laughs] >>That was the joke. 7:38 There were jobs, but there weren't a lot and there wasn't a lot of demand. 7:43 It was a very specialized skill. >>That's why you did it as a hobby. 7:45 Yeah. And a lot of people did because it was hard to make that jump. 7:49 So did you write apps for the Mac? >>Small ones. 7:53 Some framework, some small utilities. 7:57 Nothing ever got very high profile. 8:00 How I met Dave was he was actually Googling around 8:05 looking for someone to write a Cocoa article for MacTech 8:08 and he found my page where I had all the source code that I gave out, 8:11 and he sent me an email. 8:16 It kind of went from there. 8:19 But yeah, I really didn't have anything of large scale at that time 8:20 because it was fun, so I didn't want the hassle at that time of selling, of marketing. 8:23 I wrote it and once it was done, once I had learned what I wanted from it, 8:28 I was done with it and I put it out on the Internet for other people. 8:31 That's benefited a lot of iPhone developers, especially your blog. 8:34 I know when I was starting out, your blog was almost like a Bible for me 8:40 [Jeff LaMarche's Blog - iphonedevelopment.blogspot.com] 8:43 because you have so much code there, you have so much knowledge 8:45 that I really appreciate that. >>Thank you. That was funny. 8:47 I actually grabbed that domain the same day they released the iPhone SDK. 8:50 But then there really wasn't anything I could publish at first. 8:56 So I had this domain. 8:59 I think I did a hello post where I said, 9:00 "Some day I'm going to be able to write about developing apps for the iPhone." 9:03 A lot of the blog posts, especially the OpenGL ones, 9:07 came out of--I spent 4½ months really heads down on the most basic stuff, 9:12 and I really wanted to sort of get in and do some more stuff 9:18 but not with this incredible obligation of doing a 600-page book. 9:21 It's kind of an ordeal. 9:26 You get to the end of it and you really don't even want to read 9:28 what you've written anymore. 9:29 So that was an outlet--that I could write and I could explore 9:31 and I could learn things that I wanted to learn and have a reason to do it. 9:35 Since you've written a book for beginners, 9:40 for someone that's never programmed an iPhone app or never programmed at all, 9:43 what is the stating point for that person? 9:48 They have this idea. 9:51 I'm sure a lot of people come up to you and say, "Hey Jeff, I have an idea for this app." 9:52 And you're like, "No, no, no. Why don't you just build it yourself?" 9:57 But where do they start? 9:59 That's a tough question because I think a lot of people come into it 10:01 especially back when we were seeing all those mainstream news stories 10:06 on the App Store millionaires in the early days. 10:10 A lot of people wanted to do it and really didn't fully understand 10:13 how much was involved. 10:16 Where do you start? I think it really depends on people. 10:19 I've taught some workshops and I've written the books 10:21 and I've had interactions with a fair number of people who have written to me, 10:24 and one thing I've learned is that we're very different. 10:30 Everybody learns differently. 10:32 A lot of this stuff different people learn it in different ways better. 10:34 When you're sitting in a workshop and actually working with people 10:37 and seeing how you can just use words and this person gets it 10:40 and this person over here, they really need you to sort of draw a picture 10:44 or they need you to draw a parallel to something they're familiar with. 10:46 So it's hard to say. I think that you have to start with really the desire. 10:49 It's not the desire to make money because there's lots of ways of doing that. 10:53 It's the desire to create, it's the desire to do something. 10:57 It's not just, "I've got an idea," it's, "I really want to do this." 11:00 "I want to create this thing." 11:03 If you don't have that, you're going to get halfway through the book and be like, 11:05 "I'm going to do something else." 11:09 So I think you have to start with the desire basically. 11:11 But where you go from there really depends. 11:14 So desire to create an app or just desire to be an iPhone developer? 11:15 I think a lot of times it actually is much more basic than that. 11:21 It's a specific idea: "I want to create this." 11:24 It's not that, "I want to be an app developer," it's "I've got this idea." 11:27 "I want to see it come to life." 11:30 I think there are people that are like, "I want to be a developer." 11:33 It's a larger aspiration. But I think a lot of people it starts with, "I've got this idea." 11:35 "I want it to become real. How do I get there?" 11:39 Where you go, obviously now there's lots of books, 11:42 there's video training, there's actual workshops 11:48 where you can go and be taught. 11:52 So there's lots of paths. I don't know that there's 1 that's best or right for everybody. 11:54 A lot of it depends on how you learn. 11:59 I think going to an actual class for a lot of people is going to be a lot faster of a path 12:01 because you make mistakes-- >>Because you're used to that. 12:06 Yeah. You're there, you get to make mistakes, 12:08 you've got someone who can help you when you make the mistakes. 12:10 You're not just spinning your wheels. 12:12 I can remember when I was first learning to code back in the '80s. 12:13 We didn't really have Google. 12:16 We didn't have the Web. >>Or YouTube. >>Or YouTube. 12:20 We had Usenet. 12:22 You could go out to the comp.sys.mac-- 12:24 I don't even remember the news group anymore, 12:27 but there was a place you could go. 12:29 You'd ask your question and maybe a few hours 12:31 or a few days later you'd get an answer. 12:35 All the documentation were in these big, thick volumes that you had to buy. 12:37 So it was kind of a different world. 12:42 Something that's fairly simple and a more experienced developer could help you with 12:43 might be something you'd spend a week on back then 12:47 just because you didn't have access to people. 12:49 To resources that you have today. 12:51 I don't think there's ever been a better time for learning this stuff 12:53 because there are so many resources. 12:56 You're going to be able to find something that works for you if you really want to do it. 12:57 So you said that you have to have a desire, 13:00 and I truly believe that when you're starting out to learn any piece of technology 13:04 or framework or SDK or anything like that, 13:08 if you start out with an app--in my case the idea is an app, 13:10 a mobile app or a web app or something like that-- 13:16 and then you're trying to learn the different aspects that will get you there-- 13:19 So you have the goal in mind and then you're trying to piece the puzzle, 13:23 what will get you to that goal. 13:28 Do you think that's a fair way of getting to that goal? >>Absolutely. 13:30 There was no real opportunity--there was, I guess, some opportunity 13:37 but there wasn't as much opportunity for the training. 13:41 Aaron started the Big Nerd Ranch back in the late '90s or early 2000s, 13:44 and that was really the only place you could go to learn Cocoa. 13:49 It was probably out of reach for a lot of people because you had to travel there 13:52 and stay there for a week. 13:55 For most people it was. 13:57 You were using a book, you were using API documentation. 13:59 Now there's so much. 14:01 But when it comes down to it, it is like a puzzle. 14:03 You're going to learn this piece, and you can't really see what it's a picture of, 14:06 and then you get this piece, and at some point your brain sort of clicks and goes, 14:09 "Oh, I get it. I've got the big picture now." 14:12 It's a slow process, unfortunately. 14:14 Yeah, unfortunately, it's a very slow process 14:17 because there are so many different concepts. 14:19 Is it easier now or was it easier back then to pick up iOS? 14:21 Of course with ARK they've taken that whole equation 14:30 of memory management out of the way, 14:34 so it's easier to be an iPhone developer, I feel, 14:35 because the tools have evolved, there's Xcode that's evolved, 14:39 Interface Builder evolved. 14:43 The tools are evolving, so is the SDK. 14:45 In my day [both laugh], we walked 10 miles through the snow barefoot. 14:48 I think conceptually the manual memory management 14:54 was really a hangup for a lot of people. 14:58 It took me a long time to get it. 15:00 It's funny. Once you get it,, you look back and you say, "Why was that hard?" 15:02 It's basically 3 rules. 15:05 I can list them out, it's simple, and yet you sit there-- 15:07 I can remember sitting there and being like, "Maybe I'll throw another release here." 15:10 "Maybe that will fix it." 15:13 It's sort of an easy concept but it's not easy for your brain. 15:16 It's simple but it's just not the way your brain works--most of us. 15:21 It's not the way your brain works naturally. 15:27 That was an obstacle for a lot of people. 15:30 I don't think that they've necessarily made it easier. 15:32 I think they've removed an obstacle. 15:34 I don't think that it's necessarily fair to say they've gotten rid of it 15:36 because I think you really do need to understand memory management 15:38 to do it properly because with ARK you're going to hit edge cases. 15:40 But you can get something running, you can get an app up and running 15:44 without knowing the memory management. 15:48 And so I think you've dropped an obstacle, 15:50 you've dropped something that would catch some people early on 15:51 and discourage them before they really got far enough along to really get excited. 15:55 I think it's better in a lot of ways. 15:58 I don't know that easier is the right word because there's just so many pieces 16:01 of the puzzle. It's a big puzzle. 16:06 They made 1 complex piece of that puzzle a little less complex, 16:08 but it's still a big puzzle and there's lots of pieces you have to learn. 16:12 I think it would be unfair to say it's easy or even necessarily easier, 16:14 but they've removed an obstacle, and I think that's good. 16:19 I think it encourages people to do it. 16:22 I'm a big Apple way of doing things kind of guy, 16:26 but one thing Microsoft really has always been good at 16:31 is lowering the bar for developers, making it easier. 16:33 I don't always agree with the way they did it, 16:36 with some of the choices they made in the process, 16:39 but that was always a focus for them is sort of lowering those barriers to entry 16:42 for developers. 16:46 I think that's something we almost had as a point of pride-- 16:47 that there was this memory management and you had to get past it. 16:51 You had to get past your hump before you were part of the group. 16:53 It's your rite of passage. >>Yeah. 16:57 I think that was sort of almost-- 16:58 When you say it out like that, it sounds a little silly, 17:01 but I think it almost was that kind of mentality for a while 17:03 and I think pure survival just because we've had such an influx. 17:05 We've had to start taking it more seriously and making it more approachable, 17:09 and I think that's what Apple has been doing and I think it's good. 17:12 But I don't think it's easy, and I think it's unfair to say it's all of a sudden, 17:15 "Well, now you don't have memory management. It's easy." 17:19 Well, no. It's easier. 17:21 Yeah. >>Like you said, they've removed 1 obstacle. >>Yeah. 17:23 You're freeing up capacity for more problems that you have to solve. >>Right. 17:27 I think that's one of the things that a lot of us like about software programming 17:30 and engineering in general is there's always more problems to solve. 17:35 Somebody gets rid of that one, makes it easier. 17:38 I don't have to write accessors and mutators now. Great. 17:40 That frees me up to do something else, to solve more complex problems. 17:43 It's why we continually get better and more complex software. It's great. 17:47 I started learning iPhone development. 17:50 So I'm on my way, I'm getting a little better. 17:53 How can I become a better iPhone developer? 17:55 I know the basics, I know the patterns, I understand my way around the tools. 17:58 How do I get better? 18:06 I think the simple and obvious answer is the more time you spend doing it, 18:08 the more feedback you get, the more mistakes you make. 18:12 Having the opportunity to work with other people is great. 18:17 While I was learning to code it was pretty much me, 18:20 and I would reach out to places when I needed help, but it was mostly me. 18:25 And I think when you have people, 18:29 especially if you can find yourself in a situation 18:32 where you have more experienced people you can draw upon, 18:35 you still have to solve the same problems, 18:37 but they've seen those problems before and they can help you get to the solution faster. 18:41 So I think working with-- >>Having a mentor? 18:47 Having a mentor or just working with other experienced people, 18:49 seeing how other people work, putting in a lot of time. 18:52 I think a lot of it just boils down to-- >>Practice? 18:55 Practice, but is your head in this? Is this really what you want to be doing? 19:00 Do you want to be here? 19:02 People think we're kind of crazy, but our hiring process is sort of weird. 19:05 A lot of times we don't even look at the education section. 19:09 So what do you look for? Right. 19:13 You own a consulting firm, MartianCraft. >>Yes, co-own MartianCraft. 19:14 A lot of it is we meet people, we kind of keep an eye on people 19:19 that we think down the road might be good when we've got an opening. 19:23 But a lot of it is we look for people who are part of the community, 19:26 who come to conferences, who participate in the dev forums 19:31 and mailing lists and they enjoy it. 19:36 I think the answer we try to get to the bottom of, and it's not always easy, 19:40 is if this person couldn't make their living doing it, would they still want to do it? 19:43 That's an interesting question. >>Yeah. 19:48 Or at least something similar. 19:51 Is this really what they want to be doing, 19:53 or is this they saw that it was profitable and they want to be part of that? 19:55 I think the real things-- >>Of course they're doing it 20:00 because they want to make a living off of it. >>Of course. 20:04 But is that your primary motivation, because there's lots of ways of making a living. 20:08 Have you soaked in all these stories of the overnight App Store millionaires' success 20:12 and that's your real motivation, 20:18 or are you enjoying the path, are you enjoying the ride? >>Right. 20:20 So with enjoying the path you mean just enjoying developing? >>Yeah. 20:23 Enjoying putting an idea out there and seeing it to fruition? 20:28 The day to day. Do you enjoy the coding? Do you enjoy the problem solving? 20:31 Do you enjoy the collaboration with designers? 20:35 Do you enjoy the whole process, because basically when you think about it, 20:37 there's nothing else, with the possible exception of sleep for some people, 20:40 that you're going to spend more time doing than your job, your career. 20:44 And if you're not happy--and I can tell you this from when I was doing all this traveling-- 20:49 I liked the basic problems that I had to solve, but I hated everything else around it. 20:53 I was miserable. 20:59 You didn't like the traveling, the dealing with the clients and all of that. 21:00 The traveling, I didn't like dealing with the bureaucracy, 21:04 I didn't like all sorts of things about it, 21:05 and I basically took more than a 50% cut in pay and was thrilled. 21:08 I worked for free for 4 months, and I was happy about it. 21:15 I think trying to get to it, trying to figure out do they really want to be there, 21:18 do they enjoy solving these problems, and from there, a lot of these other things-- 21:24 Did you go to Stanford? I don't care if you went to Stanford. 21:30 I've met some awesome developers from Stanford, 21:32 but I've met some awesome developers that never even finished college. 21:34 There's a lot of different paths to it, 21:38 and we don't get too hung up on what path they took to get where they are. 21:41 So you did freelancing for some time too, right? >>Mm-hmm. 21:45 What's your advice to some of the freelancers if they are going to become 21:49 freelance iPhone developers? 21:52 I think that's one of the biggest barriers for someone that's a developer-- 21:56 to go out there and get more business because naturally, 22:01 most developers are not marketing people. 22:05 They can't go and sell themselves. 22:09 They'd rather just sit in a corner and write code, which they're really great at, 22:10 but they can't really go out there and win the business. 22:14 Yeah. And this is not an easy question. 22:16 I'd love to say that I had a great solution and that the reason-- 22:19 I mean from your experience, I guess. 22:21 The problem is my experience is a little unusual, 22:23 and that is because the book was successful 22:25 and because it was one of the first ones out, I had people coming to me. 22:27 We decided to form the business because we had people coming to us 22:30 and we were referring work to other people. 22:33 And we were like, "Whoa, whoa. Why are we sending all this work away?" 22:36 "This is kind of silly." 22:38 We never really had the problem of finding work. 22:39 If you go to our website, there's almost nothing there. 22:45 We've never gotten around to doing it because we have to turn down work. 22:48 Part of it is we don't want to grow too fast. 22:53 We don't want to accept every job that comes down. 22:56 We want to make sure that we're taking jobs that we find interesting 22:58 and various things, but we've never really had this sort of traditional problem 23:00 of how do you find the work? 23:04 Before the book was published, honestly, the first contracting job I had 23:06 after that actually was somebody I knew from back in the enterprise consulting days. 23:12 He had moved over, he was working at Rosetta Stone software, 23:16 they were sort of looking at the iPhone as possibly porting parts of their software, 23:19 so they wanted someone to come in and advise them on that. 23:24 So it was just a connection. It was somebody I know. 23:26 Obviously going to things like this, the more you can meet people in the community, 23:29 because finding the actual clients is hard; 23:33 finding other people-- 23:36 People come to names in the community, 23:39 they come to well-known people in the community and they say, 23:42 "Are you available? If not, do you know anybody who is?" 23:45 And if those people know you and they know that you're available 23:48 and they know that you're good, then they're going to possibly 23:51 send some of that work to you. >>Okay. 23:54 So basically going out there and meeting more people and networking. 23:57 Yeah. It comes down to--and I hate to use this word having been a teenager 24:00 in the '80s and all the movies like Wall Street and I hate it--networking. 24:03 I don't think you should come to these events because you want to network, 24:07 but the more people you know, the more you socialize, 24:11 the more you get involved in the community, 24:14 the more opportunities that are just going to show up at your doorstep. 24:17 So if I want to build a consumer-driven iPhone app-- 24:19 and now there are more than half a million of them out there-- 24:23 how do you even stand out anymore? 24:27 [laughs] 24:29 We're actually on sort of the other side of that 24:30 because actually we've got 2 software development projects in house. 24:34 We've started a products division, but we're still several months out 24:38 from having our first product in the store. 24:42 [laughs] I guess a glib answer to that would be I'll let you know when we figure it out. 24:45 [laughs] >>It's hard. 24:49 I think you have to start out with it's got to fill a need 24:51 or it's got to be fun or it's got to be something that people will want, 24:55 it's got to be well written, it's got to be stable. 24:59 There is a certain amount of luck to it. 25:03 If you look at the apps that have been successful, 25:05 why was Angry Birds this runaway success and all the other trajectory apps 25:08 that all go back to these-- 25:14 There was a cannon app back in Applesoft BASIC that was exactly the same thing. 25:16 Oh, was it? >>Basically. It wasn't touch controlled but it was the same idea. 25:22 You're calculating the trajectory, you figure out the angle and the velocity, 25:25 and then did you hit the target? 25:30 So it's not exactly a new idea. 25:32 A new take on it and well implemented, but there are other well-implemented takes. 25:36 There is an element of fortune to it, unfortunately. There is an element of luck. 25:40 But there's also a lot of elements that are not luck that you can take into control. 25:46 Some of it is, by and large, us engineers don't like to market. 25:49 We don't like to advertise. We don't like to write press releases. 25:55 So part of it is either learn to like those things and get good at them 25:59 or find people who are, partner up with people who are. 26:02 Some of it is persistence. 26:06 When you look at some of the real runaway successes, 26:10 there's sort of an old saying that overnight success takes a long time. 26:12 I think Angry Birds was Rovio's 18th game or something. 26:17 Yeah. It took them 6 years to turn out a hit. >>Yeah. 26:20 Temple Run was Imangi's 5th, 6th, 7th game. >>Okay. 26:23 The stories where somebody's first game hits like that are very rare. 26:28 People keep trying. 26:34 You learn, you get better, you get feedback from your users, 26:35 and you keep trying until you hit on the formula. 26:38 And it's a lot of work. 26:43 So let's say as an indie iPhone developer I found the right designer to work with. 26:45 What are some of the things that you would recommend as using some of the tools 26:50 like Instruments and stuff like that to turn out a high quality app 26:55 so that your app doesn't crash the first day in the App Store and stuff like that? 26:59 The first thing is to use the tools that are available. 27:03 There's sort of a lot of debate about Xcode for itself, 27:06 but when you look at all of the tools, there's a lot of really great tools 27:14 that Apple has churned out in the last 5 years 27:17 that we didn't have back in the Mac days. 27:19 Instruments is great, the GL debugger, the GL tools, 27:21 the Static Analyzer. 27:28 A couple rules that we have in house 27:30 is we never check in code that doesn't compile clean and analyze clean. 27:33 You can have sort of intermediate builds on your own machine 27:40 that have warnings or whatever, but our rule is don't check it in if it doesn't compile clean. 27:42 So by checking it in, you mean come into your repository. >>Right. 27:51 A lot of times we've been really, really lucky. 27:55 We have really, really good developers on staff. 27:58 They're fast, they're competent, they just write great code, 28:00 and sometimes I'm kind of feeling kind of stupid when I'm there. 28:04 I'm like, "Yeah, I'll help you guys. Oh jeez, you've already done that. All right." 28:07 "Yeah, that's good." 28:11 The young guys kind of make you feel old and not quite as smart as you think you are. 28:14 One thing that I always face as a developer 28:19 is that you're in this problem and you're so minutely focused on this 1 area of code 28:23 or something like that and you keep hammering away for hours at a time, 28:29 and sometimes you just walk away from it and then come back to it. 28:34 Yeah. Sometimes it's the best thing you can do. >>Right? 28:38 And a lot of times I'm not smart enough to do it when I need to do it. 28:42 [laughs] So you face that too. >>Oh yeah, all the time. 28:45 Sometimes it's just human limitations are the best thing in the world 28:49 because you're not smart enough to walk away 28:52 and then you realize it's 3:00 and you're like, "I've got to go to bed." 28:54 And then you get up the next morning and you're like, "Oh!" 28:56 Right. "That was so obvious." 28:58 Yeah. Oh yeah. Everybody hits that. 29:00 It's one of the things. 29:03 A lot of times when you first start working in a group environment 29:05 people are kind of embarrassed to admit when one of those happens 29:08 and you're like, "Oh no, we all do that." 29:11 That's just part of it. 29:15 When you think about the APIs now, when I started programming, 29:16 the entire operating system was 16K or something. >>Oh wow. 29:21 Everything would fit. 29:28 You could memorize the entire instruction set if you were writing an assembly. 29:31 It just was a very finite number of instructions. 29:36 It was a different world than we live in now. 29:38 I don't think it's possible for at least the vast majority of mortals to know all of it, 29:40 just even on 1 platform. >>Oh yeah, absolutely. 29:46 That's why I think our job really is to just keep learning, 29:48 is to be willing and able to dive in and learn what you need to do 29:52 if you haven't done it before. >>That's what keeps this interesting. >>Right. 29:57 It's always challenging because with every new release comes out new features 30:00 and new SDKs and-- 30:05 And then there's old ones that you've just never had a need for before. >>Right. 30:06 That happens. 30:09 And then you will over time develop ones that you don't like. 30:11 I refer pretty much anything that's audio-oriented or give it off to someone else 30:15 because the Core Audio Libraries--I had a couple projects with them 30:19 and just realized that we don't get along that well. [laughs] 30:22 And you hit areas like that. 30:26 I can do it if I have to, but if I have the option of letting someone else do it, 30:28 I'm more than happy to let someone else do the Core Audio work. 30:31 Any last tips and tricks that you would like to offer beginning iPhone developers? 30:34 Tips or tricks. 30:39 No. I think just keep it fun, especially when you're first starting. 30:41 Don't bang your head against it. 30:46 If you're getting frustrated, go do something else; come back to it later. 30:48 There's a rate at which your brain can sort of accept these concepts. 30:51 And you can force the stuff in faster, but it's not really going to make you get it faster. 30:57 So keep it fun, don't beat yourself up, and just enjoy the ride and you'll get there. 31:02 You'll get there--eventually. >>Yeah. 31:08 And not as long as probably will think at times. >>Right. All right. 31:10 It's been great, it's been enlightening, and thank you very much for doing this. 31:14 Yeah. It's very nice talking with you. >>Same here. >>Thank you. 31:17 [treehouse friends] [??] 31:19
You need to sign up for Treehouse in order to download course files.Sign up