You've already started watching What's It Like to be an iPhone Developer? - with Jeff LaMarche
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] [??]
You need to sign up for Treehouse in order to download course files.
Sign up