What's It Like to be an iPhone Developer? - with Jeff LaMarche

31:26

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.

  • 0:00

    I'm here with Jeff LaMarche. [treehouse friends]

  • 0:02

    He is a prominent developer in the iPhone development community.

  • 0:06

    He's written quite a few books, and he is the founder of MartianCraft.

  • 0:10

    One of. >>One of. Right.

  • 0:12

    Why don't you tell us a little bit about how you became an iPhone developer.

  • 0:17

    I've been programming for a long time. [Jeff LaMarche - Programmer and Author]

  • 0:20

    I didn't actually start doing it professionally until the dot com boom.

  • 0:23

    There was such a shortage of talent that they were willing to look at people

  • 0:25

    who didn't have traditional backgrounds.

  • 0:28

    I sort of got my foot in the door working at a company called PeopleSoft.

  • 0:31

    What were you doing? >>I did a number of things.

  • 0:34

    I actually went to law school. >>So you were a lawyer.

  • 0:37

    For about 20 days. >>Oh, okay. [laughs]

  • 0:41

    I passed the bar, and less than a month later I was out the door.

  • 0:45

    And then I did whatever I needed to make money.

  • 0:49

    I did clerical temping. I did pretty much anything.

  • 0:53

    I did some graphic design work even though I didn't really have a background with it.

  • 0:56

    I just kind of bounced around and did whatever I could to make money.

  • 1:01

    So what made you get into software development?

  • 1:04

    I had been programming as a hobby since 1980 just for fun.

  • 1:11

    I was going to go to school for it.

  • 1:14

    Sort of a long story. I didn't end up going to school for it.

  • 1:18

    This place where I went to school wouldn't let me test out

  • 1:22

    of some of the earlier level classes, and it was just really boring for me,

  • 1:25

    so I decided to do something else.

  • 1:27

    And then it got to a point where I didn't have the right background.

  • 1:30

    And then the whole dot com thing, there was such a shortage

  • 1:34

    it gave me the chance to get back into it.

  • 1:36

    So basically, the dot com boom you got into software development.

  • 1:41

    Doing it professionally. >>Full time. >>Right.

  • 1:43

    I did that for a few years and then I went out and was doing consulting,

  • 1:48

    travel-based consulting, which was interesting technical problems

  • 1:53

    but a horrible work environment--awful.

  • 1:56

    Large bureaucracies, big companies, and just traveling all the time,

  • 2:00

    48, 50 weeks a year.

  • 2:02

    So what were you consulting on? Java or--?

  • 2:05

    A lot of what I did was PeopleSoft.

  • 2:09

    I didn't start this way, but I sort of ended up with a specialty

  • 2:12

    in doing very large volume data integrations between systems,

  • 2:16

    which is not what I would have chosen, but it paid well and it was steady work.

  • 2:23

    So you were actually coding. >>Oh yeah.

  • 2:25

    I was always a technical consultant when I was out there.

  • 2:27

    I worked in the management consulting realm,

  • 2:29

    but I was always the technical guy.

  • 2:32

    And so I did that, and I was rolling off of about a 2-year, 2½-year project

  • 2:37

    in March of 2008 when they announced the iPhone SDK.

  • 2:42

    I had been coding for a long time, I had been doing Cocoa on a hobby level

  • 2:46

    since whenever they came out with OS X DP3, so--I don't know--'98, '99.

  • 2:54

    I had written for MacTech magazine. I did their Cocoa article for a while.

  • 2:58

    And before the press event was over, I called Dave Mark,

  • 3:03

    who had been my editor-in-chief back at MacTech,

  • 3:07

    and I said, "I think this is going to be big. I want to write something."

  • 3:10

    At that point he was actually in the process of selling--

  • 3:14

    he had a small publishing company--his catalog of books to Apress.

  • 3:17

    They wanted a book on the iPhone, so within a week or 2

  • 3:22

    we had the contract to write the book.

  • 3:24

    So had you written an app yet or you just wanted to write the book

  • 3:27

    because you knew the language?

  • 3:29

    I actually had made this call before we could download it. >>Oh, wow. Okay.

  • 3:35

    So I made the call and then I went and downloaded the SDK. >>[laughs]

  • 3:39

    But I knew it was going to be based on a technology that I had worked with

  • 3:43

    and had even written about.

  • 3:45

    I actually had written about 90% of the Cocoa book for Dave's company

  • 3:50

    that had never gotten published.

  • 3:52

    Actually, part of it did get recycled into the Apress Learn Cocoa book

  • 3:56

    but very heavily recycled and rewritten by Jack.

  • 3:59

    I actually was in the process of writing a very similar book,

  • 4:05

    was able to recycle some of the conceptual stuff,

  • 4:10

    and yeah, it was lucky timing and an opportunity for me to get off the road

  • 4:16

    and to get into something that I wanted to be doing more

  • 4:19

    rather than doing something that paid well.

  • 4:22

    I took quite a cut in income-- >>I can imagine.

  • 4:25

    for a while and it's starting to recover now

  • 4:28

    because obviously this is a great place to be right now. >>Oh, absolutely.

  • 4:30

    You went from something tried and tested to--

  • 4:33

    You took a risk because back then

  • 4:34

    nobody knew what was going to happen with the iPhone. >>It was a risk.

  • 4:36

    It was a pretty big risk, mostly because I had to take several months of no pay

  • 4:40

    to write the book.

  • 4:42

    But I always knew I could go back to that if I wanted to.

  • 4:44

    There was always work there, so it wasn't a huge risk but it was a financial hit for sure.

  • 4:51

    It was one of the best decisions I ever made.

  • 4:53

    So the iPhone comes out and what's your first reaction?

  • 4:57

    When they announced it, I was kind of like, "Yay, a phone."

  • 5:01

    I'll be honest with you. I honestly didn't see the hype at first.

  • 5:06

    And then when I actually held one I was like, "Oh, this is nice."

  • 5:09

    I was very much a minimalist phone person before that.

  • 5:12

    I wanted one that was solid because I traveled a lot

  • 5:15

    and I tended to be rough on phones.

  • 5:16

    So I wanted something that could sort of put up with abuse and make phone calls.

  • 5:19

    That's all I really wanted. >>Oh, wow.

  • 5:22

    So you didn't have one of the BlackBerrys or something.

  • 5:24

    I had no interest in those.

  • 5:26

    The iPhone was just a completely different beast,

  • 5:30

    and once I held one and played with it, then yeah, I had to have one.

  • 5:34

    So did you automatically start having all kinds of visions of different apps

  • 5:38

    you can build for this thing, or was it not that big right away?

  • 5:44

    Not right away because it took me about 4, 4½ months to get the book written.

  • 5:54

    When I started writing it, everything was in Flux.

  • 5:57

    The first version's Interface Builder wasn't there.

  • 5:59

    And then Interface Builder was there but parts of it didn't work.

  • 6:02

    Some parts worked and then in the next version Interface Builder would work

  • 6:05

    but they would have changed stuff, so your old NIM files wouldn't.

  • 6:07

    It was this constant--

  • 6:08

    A lot of the early chapters were completely rewritten several times. >>I can imagine.

  • 6:12

    And so it was a very long process.

  • 6:14

    I wasn't really thinking of apps larger than the scale needed to show concepts--

  • 6:19

    what I needed to teach somebody.

  • 6:21

    It wasn't until I finished the book, sort of had it in the can, that I sort of moved on

  • 6:26

    and started thinking about apps.

  • 6:28

    But I needed money, so I didn't want to go into selling an app in the App Store

  • 6:33

    at that point because I needed faster money.

  • 6:35

    So I went into doing some contracting. >>Sure.

  • 6:37

    Writing a book makes you the authority.

  • 6:39

    I read your book. That's how I got started.

  • 6:42

    This was actually before the book could be published

  • 6:44

    because I don't know if you remember we had the NDA. >>Oh, right.

  • 6:46

    So we actually sat on this manuscript for quite a while.

  • 6:49

    It was basically finished in August-ish.

  • 6:53

    I think we revised one of the later chapters maybe in September,

  • 6:56

    but it was basically done and ready to go.

  • 7:00

    At one point we were actually hearing from inside Apple

  • 7:03

    that it probably was not going to drop at all; it was just going to be there forever.

  • 7:05

    And then the next day it drops.

  • 7:08

    And so all of a sudden it's back on.

  • 7:09

    I had to go back to working during that time.

  • 7:13

    I wasn't an authority at that point.

  • 7:16

    But there were no authorities-- >>Exactly.

  • 7:19

    It's so new that anybody could be the authority. >>Right.

  • 7:22

    Although you had the advantage of having experience with Cocoa for all those years.

  • 7:28

    Right, which was helpful because obviously there was a much higher demand.

  • 7:31

    The old joke in the Cocoa community back in the early 2000s was,

  • 7:34

    Do you know what the difference between a large pizza and a Cocoa developer is?

  • 7:38

    A large pizza can still feed a family of 4. >>[laughs] >>That was the joke.

  • 7:43

    There were jobs, but there weren't a lot and there wasn't a lot of demand.

  • 7:45

    It was a very specialized skill. >>That's why you did it as a hobby.

  • 7:49

    Yeah. And a lot of people did because it was hard to make that jump.

  • 7:53

    So did you write apps for the Mac? >>Small ones.

  • 7:57

    Some framework, some small utilities.

  • 8:00

    Nothing ever got very high profile.

  • 8:05

    How I met Dave was he was actually Googling around

  • 8:08

    looking for someone to write a Cocoa article for MacTech

  • 8:11

    and he found my page where I had all the source code that I gave out,

  • 8:16

    and he sent me an email.

  • 8:19

    It kind of went from there.

  • 8:20

    But yeah, I really didn't have anything of large scale at that time

  • 8:23

    because it was fun, so I didn't want the hassle at that time of selling, of marketing.

  • 8:28

    I wrote it and once it was done, once I had learned what I wanted from it,

  • 8:31

    I was done with it and I put it out on the Internet for other people.

  • 8:34

    That's benefited a lot of iPhone developers, especially your blog.

  • 8:40

    I know when I was starting out, your blog was almost like a Bible for me

  • 8:43

    [Jeff LaMarche's Blog - iphonedevelopment.blogspot.com]

  • 8:45

    because you have so much code there, you have so much knowledge

  • 8:47

    that I really appreciate that. >>Thank you. That was funny.

  • 8:50

    I actually grabbed that domain the same day they released the iPhone SDK.

  • 8:56

    But then there really wasn't anything I could publish at first.

  • 8:59

    So I had this domain.

  • 9:00

    I think I did a hello post where I said,

  • 9:03

    "Some day I'm going to be able to write about developing apps for the iPhone."

  • 9:07

    A lot of the blog posts, especially the OpenGL ones,

  • 9:12

    came out of--I spent 4½ months really heads down on the most basic stuff,

  • 9:18

    and I really wanted to sort of get in and do some more stuff

  • 9:21

    but not with this incredible obligation of doing a 600-page book.

  • 9:26

    It's kind of an ordeal.

  • 9:28

    You get to the end of it and you really don't even want to read

  • 9:29

    what you've written anymore.

  • 9:31

    So that was an outlet--that I could write and I could explore

  • 9:35

    and I could learn things that I wanted to learn and have a reason to do it.

  • 9:40

    Since you've written a book for beginners,

  • 9:43

    for someone that's never programmed an iPhone app or never programmed at all,

  • 9:48

    what is the stating point for that person?

  • 9:51

    They have this idea.

  • 9:52

    I'm sure a lot of people come up to you and say, "Hey Jeff, I have an idea for this app."

  • 9:57

    And you're like, "No, no, no. Why don't you just build it yourself?"

  • 9:59

    But where do they start?

  • 10:01

    That's a tough question because I think a lot of people come into it

  • 10:06

    especially back when we were seeing all those mainstream news stories

  • 10:10

    on the App Store millionaires in the early days.

  • 10:13

    A lot of people wanted to do it and really didn't fully understand

  • 10:16

    how much was involved.

  • 10:19

    Where do you start? I think it really depends on people.

  • 10:21

    I've taught some workshops and I've written the books

  • 10:24

    and I've had interactions with a fair number of people who have written to me,

  • 10:30

    and one thing I've learned is that we're very different.

  • 10:32

    Everybody learns differently.

  • 10:34

    A lot of this stuff different people learn it in different ways better.

  • 10:37

    When you're sitting in a workshop and actually working with people

  • 10:40

    and seeing how you can just use words and this person gets it

  • 10:44

    and this person over here, they really need you to sort of draw a picture

  • 10:46

    or they need you to draw a parallel to something they're familiar with.

  • 10:49

    So it's hard to say. I think that you have to start with really the desire.

  • 10:53

    It's not the desire to make money because there's lots of ways of doing that.

  • 10:57

    It's the desire to create, it's the desire to do something.

  • 11:00

    It's not just, "I've got an idea," it's, "I really want to do this."

  • 11:03

    "I want to create this thing."

  • 11:05

    If you don't have that, you're going to get halfway through the book and be like,

  • 11:09

    "I'm going to do something else."

  • 11:11

    So I think you have to start with the desire basically.

  • 11:14

    But where you go from there really depends.

  • 11:15

    So desire to create an app or just desire to be an iPhone developer?

  • 11:21

    I think a lot of times it actually is much more basic than that.

  • 11:24

    It's a specific idea: "I want to create this."

  • 11:27

    It's not that, "I want to be an app developer," it's "I've got this idea."

  • 11:30

    "I want to see it come to life."

  • 11:33

    I think there are people that are like, "I want to be a developer."

  • 11:35

    It's a larger aspiration. But I think a lot of people it starts with, "I've got this idea."

  • 11:39

    "I want it to become real. How do I get there?"

  • 11:42

    Where you go, obviously now there's lots of books,

  • 11:48

    there's video training, there's actual workshops

  • 11:52

    where you can go and be taught.

  • 11:54

    So there's lots of paths. I don't know that there's 1 that's best or right for everybody.

  • 11:59

    A lot of it depends on how you learn.

  • 12:01

    I think going to an actual class for a lot of people is going to be a lot faster of a path

  • 12:06

    because you make mistakes-- >>Because you're used to that.

  • 12:08

    Yeah. You're there, you get to make mistakes,

  • 12:10

    you've got someone who can help you when you make the mistakes.

  • 12:12

    You're not just spinning your wheels.

  • 12:13

    I can remember when I was first learning to code back in the '80s.

  • 12:16

    We didn't really have Google.

  • 12:20

    We didn't have the Web. >>Or YouTube. >>Or YouTube.

  • 12:22

    We had Usenet.

  • 12:24

    You could go out to the comp.sys.mac--

  • 12:27

    I don't even remember the news group anymore,

  • 12:29

    but there was a place you could go.

  • 12:31

    You'd ask your question and maybe a few hours

  • 12:35

    or a few days later you'd get an answer.

  • 12:37

    All the documentation were in these big, thick volumes that you had to buy.

  • 12:42

    So it was kind of a different world.

  • 12:43

    Something that's fairly simple and a more experienced developer could help you with

  • 12:47

    might be something you'd spend a week on back then

  • 12:49

    just because you didn't have access to people.

  • 12:51

    To resources that you have today.

  • 12:53

    I don't think there's ever been a better time for learning this stuff

  • 12:56

    because there are so many resources.

  • 12:57

    You're going to be able to find something that works for you if you really want to do it.

  • 13:00

    So you said that you have to have a desire,

  • 13:04

    and I truly believe that when you're starting out to learn any piece of technology

  • 13:08

    or framework or SDK or anything like that,

  • 13:10

    if you start out with an app--in my case the idea is an app,

  • 13:16

    a mobile app or a web app or something like that--

  • 13:19

    and then you're trying to learn the different aspects that will get you there--

  • 13:23

    So you have the goal in mind and then you're trying to piece the puzzle,

  • 13:28

    what will get you to that goal.

  • 13:30

    Do you think that's a fair way of getting to that goal? >>Absolutely.

  • 13:37

    There was no real opportunity--there was, I guess, some opportunity

  • 13:41

    but there wasn't as much opportunity for the training.

  • 13:44

    Aaron started the Big Nerd Ranch back in the late '90s or early 2000s,

  • 13:49

    and that was really the only place you could go to learn Cocoa.

  • 13:52

    It was probably out of reach for a lot of people because you had to travel there

  • 13:55

    and stay there for a week.

  • 13:57

    For most people it was.

  • 13:59

    You were using a book, you were using API documentation.

  • 14:01

    Now there's so much.

  • 14:03

    But when it comes down to it, it is like a puzzle.

  • 14:06

    You're going to learn this piece, and you can't really see what it's a picture of,

  • 14:09

    and then you get this piece, and at some point your brain sort of clicks and goes,

  • 14:12

    "Oh, I get it. I've got the big picture now."

  • 14:14

    It's a slow process, unfortunately.

  • 14:17

    Yeah, unfortunately, it's a very slow process

  • 14:19

    because there are so many different concepts.

  • 14:21

    Is it easier now or was it easier back then to pick up iOS?

  • 14:30

    Of course with ARK they've taken that whole equation

  • 14:34

    of memory management out of the way,

  • 14:35

    so it's easier to be an iPhone developer, I feel,

  • 14:39

    because the tools have evolved, there's Xcode that's evolved,

  • 14:43

    Interface Builder evolved.

  • 14:45

    The tools are evolving, so is the SDK.

  • 14:48

    In my day [both laugh], we walked 10 miles through the snow barefoot.

  • 14:54

    I think conceptually the manual memory management

  • 14:58

    was really a hangup for a lot of people.

  • 15:00

    It took me a long time to get it.

  • 15:02

    It's funny. Once you get it,, you look back and you say, "Why was that hard?"

  • 15:05

    It's basically 3 rules.

  • 15:07

    I can list them out, it's simple, and yet you sit there--

  • 15:10

    I can remember sitting there and being like, "Maybe I'll throw another release here."

  • 15:13

    "Maybe that will fix it."

  • 15:16

    It's sort of an easy concept but it's not easy for your brain.

  • 15:21

    It's simple but it's just not the way your brain works--most of us.

  • 15:27

    It's not the way your brain works naturally.

  • 15:30

    That was an obstacle for a lot of people.

  • 15:32

    I don't think that they've necessarily made it easier.

  • 15:34

    I think they've removed an obstacle.

  • 15:36

    I don't think that it's necessarily fair to say they've gotten rid of it

  • 15:38

    because I think you really do need to understand memory management

  • 15:40

    to do it properly because with ARK you're going to hit edge cases.

  • 15:44

    But you can get something running, you can get an app up and running

  • 15:48

    without knowing the memory management.

  • 15:50

    And so I think you've dropped an obstacle,

  • 15:51

    you've dropped something that would catch some people early on

  • 15:55

    and discourage them before they really got far enough along to really get excited.

  • 15:58

    I think it's better in a lot of ways.

  • 16:01

    I don't know that easier is the right word because there's just so many pieces

  • 16:06

    of the puzzle. It's a big puzzle.

  • 16:08

    They made 1 complex piece of that puzzle a little less complex,

  • 16:12

    but it's still a big puzzle and there's lots of pieces you have to learn.

  • 16:14

    I think it would be unfair to say it's easy or even necessarily easier,

  • 16:19

    but they've removed an obstacle, and I think that's good.

  • 16:22

    I think it encourages people to do it.

  • 16:26

    I'm a big Apple way of doing things kind of guy,

  • 16:31

    but one thing Microsoft really has always been good at

  • 16:33

    is lowering the bar for developers, making it easier.

  • 16:36

    I don't always agree with the way they did it,

  • 16:39

    with some of the choices they made in the process,

  • 16:42

    but that was always a focus for them is sort of lowering those barriers to entry

  • 16:46

    for developers.

  • 16:47

    I think that's something we almost had as a point of pride--

  • 16:51

    that there was this memory management and you had to get past it.

  • 16:53

    You had to get past your hump before you were part of the group.

  • 16:57

    It's your rite of passage. >>Yeah.

  • 16:58

    I think that was sort of almost--

  • 17:01

    When you say it out like that, it sounds a little silly,

  • 17:03

    but I think it almost was that kind of mentality for a while

  • 17:05

    and I think pure survival just because we've had such an influx.

  • 17:09

    We've had to start taking it more seriously and making it more approachable,

  • 17:12

    and I think that's what Apple has been doing and I think it's good.

  • 17:15

    But I don't think it's easy, and I think it's unfair to say it's all of a sudden,

  • 17:19

    "Well, now you don't have memory management. It's easy."

  • 17:21

    Well, no. It's easier.

  • 17:23

    Yeah. >>Like you said, they've removed 1 obstacle. >>Yeah.

  • 17:27

    You're freeing up capacity for more problems that you have to solve. >>Right.

  • 17:30

    I think that's one of the things that a lot of us like about software programming

  • 17:35

    and engineering in general is there's always more problems to solve.

  • 17:38

    Somebody gets rid of that one, makes it easier.

  • 17:40

    I don't have to write accessors and mutators now. Great.

  • 17:43

    That frees me up to do something else, to solve more complex problems.

  • 17:47

    It's why we continually get better and more complex software. It's great.

  • 17:50

    I started learning iPhone development.

  • 17:53

    So I'm on my way, I'm getting a little better.

  • 17:55

    How can I become a better iPhone developer?

  • 17:58

    I know the basics, I know the patterns, I understand my way around the tools.

  • 18:06

    How do I get better?

  • 18:08

    I think the simple and obvious answer is the more time you spend doing it,

  • 18:12

    the more feedback you get, the more mistakes you make.

  • 18:17

    Having the opportunity to work with other people is great.

  • 18:20

    While I was learning to code it was pretty much me,

  • 18:25

    and I would reach out to places when I needed help, but it was mostly me.

  • 18:29

    And I think when you have people,

  • 18:32

    especially if you can find yourself in a situation

  • 18:35

    where you have more experienced people you can draw upon,

  • 18:37

    you still have to solve the same problems,

  • 18:41

    but they've seen those problems before and they can help you get to the solution faster.

  • 18:47

    So I think working with-- >>Having a mentor?

  • 18:49

    Having a mentor or just working with other experienced people,

  • 18:52

    seeing how other people work, putting in a lot of time.

  • 18:55

    I think a lot of it just boils down to-- >>Practice?

  • 19:00

    Practice, but is your head in this? Is this really what you want to be doing?

  • 19:02

    Do you want to be here?

  • 19:05

    People think we're kind of crazy, but our hiring process is sort of weird.

  • 19:09

    A lot of times we don't even look at the education section.

  • 19:13

    So what do you look for? Right.

  • 19:14

    You own a consulting firm, MartianCraft. >>Yes, co-own MartianCraft.

  • 19:19

    A lot of it is we meet people, we kind of keep an eye on people

  • 19:23

    that we think down the road might be good when we've got an opening.

  • 19:26

    But a lot of it is we look for people who are part of the community,

  • 19:31

    who come to conferences, who participate in the dev forums

  • 19:36

    and mailing lists and they enjoy it.

  • 19:40

    I think the answer we try to get to the bottom of, and it's not always easy,

  • 19:43

    is if this person couldn't make their living doing it, would they still want to do it?

  • 19:48

    That's an interesting question. >>Yeah.

  • 19:51

    Or at least something similar.

  • 19:53

    Is this really what they want to be doing,

  • 19:55

    or is this they saw that it was profitable and they want to be part of that?

  • 20:00

    I think the real things-- >>Of course they're doing it

  • 20:04

    because they want to make a living off of it. >>Of course.

  • 20:08

    But is that your primary motivation, because there's lots of ways of making a living.

  • 20:12

    Have you soaked in all these stories of the overnight App Store millionaires' success

  • 20:18

    and that's your real motivation,

  • 20:20

    or are you enjoying the path, are you enjoying the ride? >>Right.

  • 20:23

    So with enjoying the path you mean just enjoying developing? >>Yeah.

  • 20:28

    Enjoying putting an idea out there and seeing it to fruition?

  • 20:31

    The day to day. Do you enjoy the coding? Do you enjoy the problem solving?

  • 20:35

    Do you enjoy the collaboration with designers?

  • 20:37

    Do you enjoy the whole process, because basically when you think about it,

  • 20:40

    there's nothing else, with the possible exception of sleep for some people,

  • 20:44

    that you're going to spend more time doing than your job, your career.

  • 20:49

    And if you're not happy--and I can tell you this from when I was doing all this traveling--

  • 20:53

    I liked the basic problems that I had to solve, but I hated everything else around it.

  • 20:59

    I was miserable.

  • 21:00

    You didn't like the traveling, the dealing with the clients and all of that.

  • 21:04

    The traveling, I didn't like dealing with the bureaucracy,

  • 21:05

    I didn't like all sorts of things about it,

  • 21:08

    and I basically took more than a 50% cut in pay and was thrilled.

  • 21:15

    I worked for free for 4 months, and I was happy about it.

  • 21:18

    I think trying to get to it, trying to figure out do they really want to be there,

  • 21:24

    do they enjoy solving these problems, and from there, a lot of these other things--

  • 21:30

    Did you go to Stanford? I don't care if you went to Stanford.

  • 21:32

    I've met some awesome developers from Stanford,

  • 21:34

    but I've met some awesome developers that never even finished college.

  • 21:38

    There's a lot of different paths to it,

  • 21:41

    and we don't get too hung up on what path they took to get where they are.

  • 21:45

    So you did freelancing for some time too, right? >>Mm-hmm.

  • 21:49

    What's your advice to some of the freelancers if they are going to become

  • 21:52

    freelance iPhone developers?

  • 21:56

    I think that's one of the biggest barriers for someone that's a developer--

  • 22:01

    to go out there and get more business because naturally,

  • 22:05

    most developers are not marketing people.

  • 22:09

    They can't go and sell themselves.

  • 22:10

    They'd rather just sit in a corner and write code, which they're really great at,

  • 22:14

    but they can't really go out there and win the business.

  • 22:16

    Yeah. And this is not an easy question.

  • 22:19

    I'd love to say that I had a great solution and that the reason--

  • 22:21

    I mean from your experience, I guess.

  • 22:23

    The problem is my experience is a little unusual,

  • 22:25

    and that is because the book was successful

  • 22:27

    and because it was one of the first ones out, I had people coming to me.

  • 22:30

    We decided to form the business because we had people coming to us

  • 22:33

    and we were referring work to other people.

  • 22:36

    And we were like, "Whoa, whoa. Why are we sending all this work away?"

  • 22:38

    "This is kind of silly."

  • 22:39

    We never really had the problem of finding work.

  • 22:45

    If you go to our website, there's almost nothing there.

  • 22:48

    We've never gotten around to doing it because we have to turn down work.

  • 22:53

    Part of it is we don't want to grow too fast.

  • 22:56

    We don't want to accept every job that comes down.

  • 22:58

    We want to make sure that we're taking jobs that we find interesting

  • 23:00

    and various things, but we've never really had this sort of traditional problem

  • 23:04

    of how do you find the work?

  • 23:06

    Before the book was published, honestly, the first contracting job I had

  • 23:12

    after that actually was somebody I knew from back in the enterprise consulting days.

  • 23:16

    He had moved over, he was working at Rosetta Stone software,

  • 23:19

    they were sort of looking at the iPhone as possibly porting parts of their software,

  • 23:24

    so they wanted someone to come in and advise them on that.

  • 23:26

    So it was just a connection. It was somebody I know.

  • 23:29

    Obviously going to things like this, the more you can meet people in the community,

  • 23:33

    because finding the actual clients is hard;

  • 23:36

    finding other people--

  • 23:39

    People come to names in the community,

  • 23:42

    they come to well-known people in the community and they say,

  • 23:45

    "Are you available? If not, do you know anybody who is?"

  • 23:48

    And if those people know you and they know that you're available

  • 23:51

    and they know that you're good, then they're going to possibly

  • 23:54

    send some of that work to you. >>Okay.

  • 23:57

    So basically going out there and meeting more people and networking.

  • 24:00

    Yeah. It comes down to--and I hate to use this word having been a teenager

  • 24:03

    in the '80s and all the movies like Wall Street and I hate it--networking.

  • 24:07

    I don't think you should come to these events because you want to network,

  • 24:11

    but the more people you know, the more you socialize,

  • 24:14

    the more you get involved in the community,

  • 24:17

    the more opportunities that are just going to show up at your doorstep.

  • 24:19

    So if I want to build a consumer-driven iPhone app--

  • 24:23

    and now there are more than half a million of them out there--

  • 24:27

    how do you even stand out anymore?

  • 24:29

    [laughs]

  • 24:30

    We're actually on sort of the other side of that

  • 24:34

    because actually we've got 2 software development projects in house.

  • 24:38

    We've started a products division, but we're still several months out

  • 24:42

    from having our first product in the store.

  • 24:45

    [laughs] I guess a glib answer to that would be I'll let you know when we figure it out.

  • 24:49

    [laughs] >>It's hard.

  • 24:51

    I think you have to start out with it's got to fill a need

  • 24:55

    or it's got to be fun or it's got to be something that people will want,

  • 24:59

    it's got to be well written, it's got to be stable.

  • 25:03

    There is a certain amount of luck to it.

  • 25:05

    If you look at the apps that have been successful,

  • 25:08

    why was Angry Birds this runaway success and all the other trajectory apps

  • 25:14

    that all go back to these--

  • 25:16

    There was a cannon app back in Applesoft BASIC that was exactly the same thing.

  • 25:22

    Oh, was it? >>Basically. It wasn't touch controlled but it was the same idea.

  • 25:25

    You're calculating the trajectory, you figure out the angle and the velocity,

  • 25:30

    and then did you hit the target?

  • 25:32

    So it's not exactly a new idea.

  • 25:36

    A new take on it and well implemented, but there are other well-implemented takes.

  • 25:40

    There is an element of fortune to it, unfortunately. There is an element of luck.

  • 25:46

    But there's also a lot of elements that are not luck that you can take into control.

  • 25:49

    Some of it is, by and large, us engineers don't like to market.

  • 25:55

    We don't like to advertise. We don't like to write press releases.

  • 25:59

    So part of it is either learn to like those things and get good at them

  • 26:02

    or find people who are, partner up with people who are.

  • 26:06

    Some of it is persistence.

  • 26:10

    When you look at some of the real runaway successes,

  • 26:12

    there's sort of an old saying that overnight success takes a long time.

  • 26:17

    I think Angry Birds was Rovio's 18th game or something.

  • 26:20

    Yeah. It took them 6 years to turn out a hit. >>Yeah.

  • 26:23

    Temple Run was Imangi's 5th, 6th, 7th game. >>Okay.

  • 26:28

    The stories where somebody's first game hits like that are very rare.

  • 26:34

    People keep trying.

  • 26:35

    You learn, you get better, you get feedback from your users,

  • 26:38

    and you keep trying until you hit on the formula.

  • 26:43

    And it's a lot of work.

  • 26:45

    So let's say as an indie iPhone developer I found the right designer to work with.

  • 26:50

    What are some of the things that you would recommend as using some of the tools

  • 26:55

    like Instruments and stuff like that to turn out a high quality app

  • 26:59

    so that your app doesn't crash the first day in the App Store and stuff like that?

  • 27:03

    The first thing is to use the tools that are available.

  • 27:06

    There's sort of a lot of debate about Xcode for itself,

  • 27:14

    but when you look at all of the tools, there's a lot of really great tools

  • 27:17

    that Apple has churned out in the last 5 years

  • 27:19

    that we didn't have back in the Mac days.

  • 27:21

    Instruments is great, the GL debugger, the GL tools,

  • 27:28

    the Static Analyzer.

  • 27:30

    A couple rules that we have in house

  • 27:33

    is we never check in code that doesn't compile clean and analyze clean.

  • 27:40

    You can have sort of intermediate builds on your own machine

  • 27:42

    that have warnings or whatever, but our rule is don't check it in if it doesn't compile clean.

  • 27:51

    So by checking it in, you mean come into your repository. >>Right.

  • 27:55

    A lot of times we've been really, really lucky.

  • 27:58

    We have really, really good developers on staff.

  • 28:00

    They're fast, they're competent, they just write great code,

  • 28:04

    and sometimes I'm kind of feeling kind of stupid when I'm there.

  • 28:07

    I'm like, "Yeah, I'll help you guys. Oh jeez, you've already done that. All right."

  • 28:11

    "Yeah, that's good."

  • 28:14

    The young guys kind of make you feel old and not quite as smart as you think you are.

  • 28:19

    One thing that I always face as a developer

  • 28:23

    is that you're in this problem and you're so minutely focused on this 1 area of code

  • 28:29

    or something like that and you keep hammering away for hours at a time,

  • 28:34

    and sometimes you just walk away from it and then come back to it.

  • 28:38

    Yeah. Sometimes it's the best thing you can do. >>Right?

  • 28:42

    And a lot of times I'm not smart enough to do it when I need to do it.

  • 28:45

    [laughs] So you face that too. >>Oh yeah, all the time.

  • 28:49

    Sometimes it's just human limitations are the best thing in the world

  • 28:52

    because you're not smart enough to walk away

  • 28:54

    and then you realize it's 3:00 and you're like, "I've got to go to bed."

  • 28:56

    And then you get up the next morning and you're like, "Oh!"

  • 28:58

    Right. "That was so obvious."

  • 29:00

    Yeah. Oh yeah. Everybody hits that.

  • 29:03

    It's one of the things.

  • 29:05

    A lot of times when you first start working in a group environment

  • 29:08

    people are kind of embarrassed to admit when one of those happens

  • 29:11

    and you're like, "Oh no, we all do that."

  • 29:15

    That's just part of it.

  • 29:16

    When you think about the APIs now, when I started programming,

  • 29:21

    the entire operating system was 16K or something. >>Oh wow.

  • 29:28

    Everything would fit.

  • 29:31

    You could memorize the entire instruction set if you were writing an assembly.

  • 29:36

    It just was a very finite number of instructions.

  • 29:38

    It was a different world than we live in now.

  • 29:40

    I don't think it's possible for at least the vast majority of mortals to know all of it,

  • 29:46

    just even on 1 platform. >>Oh yeah, absolutely.

  • 29:48

    That's why I think our job really is to just keep learning,

  • 29:52

    is to be willing and able to dive in and learn what you need to do

  • 29:57

    if you haven't done it before. >>That's what keeps this interesting. >>Right.

  • 30:00

    It's always challenging because with every new release comes out new features

  • 30:05

    and new SDKs and--

  • 30:06

    And then there's old ones that you've just never had a need for before. >>Right.

  • 30:09

    That happens.

  • 30:11

    And then you will over time develop ones that you don't like.

  • 30:15

    I refer pretty much anything that's audio-oriented or give it off to someone else

  • 30:19

    because the Core Audio Libraries--I had a couple projects with them

  • 30:22

    and just realized that we don't get along that well. [laughs]

  • 30:26

    And you hit areas like that.

  • 30:28

    I can do it if I have to, but if I have the option of letting someone else do it,

  • 30:31

    I'm more than happy to let someone else do the Core Audio work.

  • 30:34

    Any last tips and tricks that you would like to offer beginning iPhone developers?

  • 30:39

    Tips or tricks.

  • 30:41

    No. I think just keep it fun, especially when you're first starting.

  • 30:46

    Don't bang your head against it.

  • 30:48

    If you're getting frustrated, go do something else; come back to it later.

  • 30:51

    There's a rate at which your brain can sort of accept these concepts.

  • 30:57

    And you can force the stuff in faster, but it's not really going to make you get it faster.

  • 31:02

    So keep it fun, don't beat yourself up, and just enjoy the ride and you'll get there.

  • 31:08

    You'll get there--eventually. >>Yeah.

  • 31:10

    And not as long as probably will think at times. >>Right. All right.

  • 31:14

    It's been great, it's been enlightening, and thank you very much for doing this.

  • 31:17

    Yeah. It's very nice talking with you. >>Same here. >>Thank you.

  • 31:19

    [treehouse friends] [??]

Show full transcript