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.


Video Transcript

  • 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

Workspace

You have to sign up for Treehouse in order to create workspaces.

Sign up

Downloads

You have to sign up for Treehouse in order to download course videos.

Sign up

Instructor

  • Amit Bijlani

    Amit is an iOS Developer who loves teaching and speaking about iOS. When not in front of a computer, he's exploring the outdoors or meditating. Find him on Twitter @paradoxed.